AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

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

所要時間3分
0

フェデレーションを使用して Active Directory ユーザーに対し、AWS マネジメントコンソールへのアクセスを設定しました。Active Directory フェデレーションサービス (AD FS) を使用して、AWS コマンドラインインターフェイス (AWS CLI) への同じアクセス許可をユーザーに付与したいと考えています。

簡単な説明

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

AWS Identity and Access Management (IAM) ユーザーのアクセスキー ID とシークレットアクセスキーを取得するには、次のいずれかを実行します。

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

フェデレーションユーザーにアクセス許可を付与する前に、次のことを行ってください。

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

解決策

ID プロバイダー (IdP) が Integrated Windows Authentication (IWA)、NTLM、または Kerberos (AD FS 2.0 のデフォルト) と連携するように構成されている場合は、解決策 1 を参照してください。IdP がフォームベース認証 (AD FS 3.0 および 4.0 のデフォルト) と連携するように構成されている場合は、解決策 2 を参照してください。

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

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 認証タイプは NTLM に設定されています。上記の AWS Tools コマンドレットの例で 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

フォームベース認証を使用する 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 を設定する

AWS マネージド Microsoft AD でシングルサインオンを有効にする

コメントはありません

関連するコンテンツ