AD FS を使用して、Active Directory ユーザーに API または AWS CLI へのアクセス権を付与する方法を教えてください。

所要時間3分
0

フェデレーションを使用して Active Directory のユーザーに AWS マネジメントコンソールへのアクセスを設定しました。Active Directory フェデレーションサービス (AD FS) を使用してユーザーに AWS コマンドラインインターフェース (AWS CLI) への同様のアクセスを付与する方法を教えてください。

簡単な説明

SAML 2.0 フェデレーションユーザーに AWS マネジメントコンソールへのアクセスを許可する場合でも、プログラムによるアクセスが必要なユーザーにはアクセスキーとシークレットキーが必要です。

AWS ID およびアクセス管理 (IAM) ユーザーのアクセスキー ID とシークレットアクセスキーを取得するには、次の方法があります。

AWS CLI を設定します

  • または -

フェデレーションユーザーが AWS CLI にアクセスするための一時的な認証情報を取得します。

フェデレーションユーザーにアクセス権を付与するには、以下を実行する必要があります。

注: ディレクトリユーザーに対して多要素認証 (MFA) が有効になっている場合、このソリューションは互換性がありません。

解決方法

ID プロバイダー (IdP) が AD FS 2.0 にデフォルトで設定されている統合 Windows 認証 (IWA)、NTLM、または Kerberos に対応できるよう設定されている場合、解決方法 1 を参照してください。IdP がフォームベース認証 (AD FS 3.0 および 4.0 のデフォルト) で機能するように設定されている場合は、解決方法 2 を参照してください。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

解決方法 1: IWA を使用して AD FS に PowerShell を使用する (PowerShell 2.0)

1.    以下のコマンドを実行することにより Windows PowerShell モジュールをインポートします。

> Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"

2.    以下と類似のコマンドを実行することにより AD FS エンドポイントの変数を設定します。

> $Endpoint = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'

注意: これには AD FS ログインページの完全な URL と AWS のログイン統一リソース名 (URN) が含まれます。 3.    以下と類似のコマンドを実行することにより SAML エンドポイントを設定します。

> $EndpointName = Set-AWSSamlEndpoint -Endpoint "$Endpoint" -StoreAs 'ADFS-Login' -AuthenticationType NTLM

注: デフォルトでは、AD FS 2.0 AuthenticationType は NTLM に設定されています。上記の AWS Tools Cmdlet の例で AuthenticationType の値を指定しない場合、AWS Tools はデフォルトで Kerberos を使用します。

4.    保存されているエンドポイント設定を使用して、AD FS IdP で認証し、次のいずれかの方法を使用してユーザーが引き受けることができるロールの一覧を取得します。

現在ワークステーションにログインしているユーザーの認証情報を使用します。

> Set-AWSSamlRoleProfile -StoreAs 'SAMLUser' -EndpointName $EndpointName
  • または -

Active Directory ユーザーの認証情報を指定します。

> $Credential = Get-Credential -Message "Enter the domain credentials for the endpoint"
> Set-AWSSamlRoleProfile -EndpointName $EndpointName -NetworkCredential $credential -StoreAs 'SAMLUser'

5.    複数のロールが使用可能な場合は、引き受けたいロールを選択するようにプロンプトが表示されます。次のように、ターミナルセッションにアルファベットを入力します。

SAMLUser[A] A - 123456789012:role/ADFS-DevAdmin [B] B - 123456789012:role/ADFS-DevReadOnly [?] Help (default is "A"): A

6.    以下と類似のコマンドを実行することにより、ユーザーがフェデレーションした認証情報と指定したプロファイルを使用して AWS CLI にアクセスできるか確認します。

Get-IAMSAMLProviderList -ProfileName SAMLUser

解決方法 2: フォームベースの認証を使用し AD FS に Python を使用する (AD FS 3.0 および 4.0 のデフォルト)

1.    Python に以下のモジュールをインストールします。

pip install --upgrade boto beautifulsoup4 requests

2.    SAML 2.0 を使用して API/CLI へのフェデレーテッドアクセスに関する一般的なソリューションを実装し、このリンク先のブログ記事のステップ 4 からスクリプトをダウンロードしてください。

3.    スクリプトを開き、ご希望の地域と出力形式を設定します。adfs.example.com をユーザーの URL と置き換え、AD FS サーバーの完全修飾ドメイン名 (FQDN) を入力します。

region = 'eu-west-1'
    outputformat = 'json'
    awsconfigfile = '/.aws/credentials'
    idpentryurl = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'

注: AWS 認証情報ファイルの別のファイルパスがある場合は、ファイルパスを指定します。

4.    変更を保存し、ファイルを実行し、表示に従い以下のフィールドに入力します。

bob@Ubuntu64:~$ ./working_samlapi.py
   Username: bob@example.com
   Password: ***********

   Please choose the role you would like to assume:
   [ 0 ]:  arn:aws:iam::123456789012:role/ADFS-DevAdmin
   [ 1 ]:  arn:aws:iam::123456789012:role/ADFS-DevReadOnly

   Selection:  0

   ----------------------------------------------------------------
   Your new access key pair has been stored in the AWS configuration file /home/ec2-user/.aws/credentials under the saml profile.
   Note that it will expire at 2018-03-14T14:57:45Z.
   After this time, you may safely rerun this script to refresh your access key pair.
   To use this credential, call the AWS CLI with the --profile option (e.g. aws --profile saml ec2 describe-instances).
   ----------------------------------------------------------------

5.    統合に成功したら、コマンドの --profile パラメータを使用して、新しく設定した SAML プロファイルでコマンドを実行します。

bob@Ubuntu64:~$ aws iam list-saml-providers --profile saml
            
{
  "SAMLProviderList": [
    {
      "CreateDate": "2018-03-14T13:28:24Z",
      "ValidUntil": "2118-03-14T13:28:23Z",
      "Arn": "arn:aws:iam::123456789012:saml-provider/adfs"
    }
  ]
}

関連情報

AWS Tools for PowerShell を使用したフェデレーティッド ID の設定

シングルサインオン

コメントはありません

関連するコンテンツ