IAM Identity Center の自動認証更新によるトークンプロバイダーの設定 - AWS Command Line Interface

IAM Identity Center の自動認証更新によるトークンプロバイダーの設定

このトピックでは、AWS IAM Identity Center (IAM Identity Center) トークンプロバイダー設定を使用してユーザーを認証するように、AWS CLI を設定する方法について説明します。SSO トークンプロバイダー設定を使用して、AWS SDK、またはツールは、更新された認証トークンを自動的に取得できます。

IAM Identity Center を使用している場合は、Active Directory、組み込みの IAM Identity Center ディレクトリ、または IAM Identity Center に接続された別の IdP にログインできます。これらの認証情報は、AWS CLI コマンドを実行する AWS Identity and Access Management (IAM) ロールにマップできます。

使用する IdP に関係なく、IAM Identity Center によってこれらの区別はなくなります。例えば、ブログ記事「The Next Evolution in IAM Identity Center」で説明されているように、Microsoft Azure AD を接続できます。

注記

アカウント ID とロールを使用しないベアラー認証の使用方法については、Amazon CodeCatalyst ユーザーガイドの「CodeCatalyst で AWS CLI を使用するためのセットアップ」を参照してください。

SSO トークンプロバイダー設定を使用すると、アプリケーションの必要に応じて認証トークンを自動的に更新し、セッション期間の延長オプションを使用できます。これは以下の方法で設定できます。

  • 自動的に、aws configure sso および aws configure sso-session コマンドを使用します。次のコマンドは、プロファイル設定と sso-session 情報の設定をガイドするウィザードです。

    • aws configure sso を使用して、config プロファイルと sso-session セクションの両方を作成または編集します。

    • aws configure sso-session を使用して、sso-session セクションのみを作成または編集します。

  • 手動: 名前付きプロファイルを保存する config ファイルを編集します。

前提条件

AWS IAM Identity Center ユーザーガイド」の「開始方法」の手順に従います。このプロセスでは、IAM Identity Center をアクティブ化して、管理者ユーザーを作成し、適切な最小特権のアクセス許可セットを追加します。

注記

ステップ 6 の場合 - 最小特権のアクセス許可を適用するアクセス許可セットを作成します。雇用主がこの目的のためにカスタムアクセス許可セットを作成していない限り、定義済みの PowerUserAccess アクセス許可セットを使用することをお勧めします。

ポータルを終了して再度サインインすると、AWS アカウントおよび Administrator またはPowerUserAccess のオプションが表示されます。SDK を使用する場合は PowerUserAccess を選択します。これは、プログラムによるアクセスに関する詳細を確認する場合にも役立ちます。

ID プロバイダーのポータルから AWS にサインインします。クラウド管理者から PowerUserAccess (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

カスタム実装では、アクセス許可セット名が異なるなど、エクスペリエンスが異なる場合があります。どのアクセス許可セットを使用すればよいかわからない場合は、IT チームにお問い合わせください。

AWS アクセスポータルを通じて AWS にサインインするには クラウド管理者から PowerUserAccess (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

サポートについては、IT チームにお問い合わせください。

aws configure sso ウィザードでプロファイルを設定する

IAM Identity Center プロファイルと sso-session の両方を AWS CLI に設定するには
  1. 次の手順を実行して IAM ID センターの情報を収集します。

    1. AWS アクセスポータルで、開発に使用するアクセス許可セットを選択し、[コマンドラインまたはプログラムによるアクセス] というリンクを選択します。

    2. [認証情報の取得] ダイアログボックスで、オペレーティングシステムに応じて、[MacOS と Linux] または [Windows] を選択します。

    3. [IAM Identity Center 認証情報] メソッドを選択して、aws configure sso の実行に必要な SSO Start URLSSO Region の値を取得します。

    4. どのスコープ値を登録するかについては、「IAM Identity Center ユーザーガイド」の「OAuth 2.0 アクセススコープ」を参照してください。

  2. 任意のターミナルで aws configure sso コマンドを実行し、IAM Identity Center の開始 URL と、Identity Center ディレクトリをホストする AWS リージョンを指定します。

    $ aws configure sso SSO session name (Recommended): my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access
  3. AWS CLI は、デフォルトのブラウザを開き、IAM Identity Center アカウントのログインプロセスを開始します。

    Attempting to automatically open the SSO authorization page in your default browser.

    AWS CLI がブラウザを開くことができない場合、ログインプロセスを手動で開始する方法を示す次のメッセージが表示されます。

    If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-west-2.amazonaws.com/ Then enter the code: QCFK-N451

    IAM Identity Center は、コードを使用して IAM Identity Center セッションを現在の AWS CLI セッションに関連付けます。IAM Identity Center ブラウザページでは、IAM Identity Center の認証情報を使用してログインするように求められます。これにより、ユーザーが IAM Identity Center で使用を許可されている AWS アカウントとロールを AWS CLI が取得して表示することが許可されます。

    注記

    サインインプロセス中に、データへのアクセスを AWS CLI に許可するように求められる場合があります。AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには 名前 botocore のさまざまなバリエーションが含まれる場合があります。

  4. AWS CLI は、使用可能な AWS アカウントを表示します。使用する権限のあるアカウントが 1 つだけの場合、AWS CLI はそのアカウントを自動的に選択し、プロンプトをスキップします。使用できる AWS アカウントは、IAM Identity Center のユーザー設定によって決まります。

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

    矢印キーを使用して、使用するアカウントを選択します。左の 「>」文字は、現在の選択肢を指します。[Enter] キーを押して、選択を行います。

  5. AWS CLI は、アカウントの選択を確認し、選択したアカウントで使用できる IAM ロールを表示します。選択したアカウントにロールが 1 つしかない場合は、AWS CLI はそのロールを自動的に選択し、プロンプトをスキップします。使用できるロールは、IAM Identity Center のユーザー設定によって決まります。

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

    矢印キーを使用して、必要な IAM ロールを選択し、<ENTER> キーを押します。

  6. デフォルトの出力形式、コマンドの送信先となるデフォルトの AWS リージョンプロファイルの名前を指定すると、ローカルコンピュータに定義されているすべてのプロファイルからこのプロファイルを参照できるようになります。次の例では、デフォルトのリージョン、デフォルトの出力形式、プロファイルの名前を入力します。既定の設定がある場合は、代わりに <ENTER> キーを押して、角括弧の間に表示されるデフォルト値を選択することもできます。推奨されるプロファイル名は、アカウント ID 番号、アンダースコア、ロール名が続きます。

    CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
    注記

    プロファイル名として default を指定した場合、このプロファイルは、AWS CLI コマンドを実行し、プロファイル名を指定しない場合に使用されるプロファイルになります。

  7. 最後のメッセージは、完了したプロファイル設定について説明しています。

    To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile my-dev-profile
  8. その結果、次のような sso-session セクションと名前付きプロファイルが ~/.aws/config に作成されます。

    [profile my-dev-profile] sso_session = my-sso sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

    これで、この sso-session とプロファイルを使用して認証情報の更新をリクエストできます。aws sso login コマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。手順については、「IAM Identity Center 名前付きプロファイルを使用する 」を参照してください。

aws configure sso-session ウィザードで sso-session セクションのみを設定する

aws configure sso-session コマンドは、~/.aws/config ファイル内の sso-session セクションのみを更新します。このコマンドは、セッションを作成または更新するために使用できます。これは、既存の設定があり、新しい設定を作成したり、既存の sso-session 設定を編集したりする場合に便利です。

aws configure sso-session コマンドを実行し、IAM Identity Center の開始 URL と、Identity Center ディレクトリをホストする AWS リージョンを指定します。

$ aws configure sso-session SSO session name: my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access

情報を入力すると、完了したプロファイル設定について説明するメッセージが表示されます。

Completed configuring SSO session: my-sso Run the following to login and refresh access token for this session: aws sso login --sso-session my-sso
注記

サインインしている sso-session を更新する場合は、aws sso login コマンドを実行してトークンを更新します。

config ファイルを使用した手動設定

config ファイルの sso-session セクションを使用して、SSO アクセストークンを取得するための設定変数をグループ化します。これらを使用して、AWS 認証情報を取得できます。次の設定を使用します。

sso-session セクションを定義してプロファイルに関連付けます。sso_regionsso_start_urlsso-session セクション内に設定する必要があります。SDK が SSO 認証情報をリクエストできるように、通常、sso_account_idsso_role_nameprofileセクション内に設定する必要があります。

次の例では、SSO 認証情報をリクエストするように SDK を設定し、トークンの自動更新をサポートしています。

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

これにより、sso-session 設定を複数のプロファイルでも再利用できるようになります。

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [profile prod] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole2 [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

ただし、sso_account_idsso_role_name は SSO トークン設定のすべてのシナリオで必須というわけではありません。アプリケーションでベアラー認証をサポートする AWS のサービスのみを使用する場合、従来の AWS 認証情報は必要ありません。ベアラー認証は、ベアラートークンと呼ばれるセキュリティトークンを使用する HTTP 認証スキームです。このシナリオでは、sso_account_idsso_role_name は必須ではありません。AWS のサービスでベアラートークン認証をサポートしているかどうかについては、各サービスのガイドを参照してください。

さらに、登録スコープは sso-session の一部として設定できます。スコープは、ユーザーのアカウントに対するアプリケーションのアクセスを制限する OAuth 2.0 のメカニズムです。アプリケーションは 1 つ以上のスコープをリクエストでき、アプリケーションに発行されたアクセストークンは付与されたスコープに限定されます。これらのスコープは、登録された OIDC クライアントがリクエストできるアクセス許可と、クライアントが取得するアクセストークンを定義します。次の例では、アカウント/ロールを一覧表示するアクセスを許可するように sso_registration_scopes を設定しています。

[sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

認証トークンは、セッション名に基づいたファイル名を使用して、~/.aws/sso/cache ディレクトリの下のディスクにキャッシュされます。