AWS CLI を使用した IAM アイデンティティセンター認証の設定 - AWS Command Line Interface

AWS CLI を使用した IAM アイデンティティセンター認証の設定

このトピックでは、AWS IAM Identity Center (IAM アイデンティティセンター) を使用して AWS CLI を設定し、AWS CLI コマンドを実行するための認証情報を取得する方法について説明します。IAM アイデンティティセンターユーザーを認証し、AWS CLI コマンドを実行するための認証情報を config ファイルを通じて取得する主な方法には、次の 2 つがあります。

  • (推奨) SSO トークンプロバイダー設定。

  • 更新不可のレガシー設定。

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

注記

AWS CLI コマンドで IAM アイデンティティセンターを使用するガイド付きプロセスについては、「チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する」を参照してください。

トピック

前提条件

  • AWS CLI をインストールします。詳細については、「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。

  • 最初に IAM Identity Center 内で SSO 認証へのアクセス権が必要です。AWS 認証情報にアクセスするには、次のいずれかの方法を選択します。

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

注記

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

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

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

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

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

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

IAM アイデンティティセンターへのアクセスを取得したら、次を実行して IAM アイデンティティセンターの情報を収集します。

  1. AWS アクセスポータルで、開発に使用するアクセス許可セットを選択し、[アクセスキー] リンクを選択します。

  2. [認証情報の取得] ダイアログボックスで、オペレーティングシステムに一致するタブを選択します。

  3. [IAM Identity Center 認証情報] メソッドを選択して、aws configure sso の実行に必要な SSO Start URLSSO Region の値を取得します。どのスコープ値を登録するかについては、「IAM Identity Center ユーザーガイド」の「OAuth 2.0 アクセススコープ」を参照してください。

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

IAM アイデンティティセンターで有効化されたプロファイルを AWS CLI に対して設定するには
  1. 任意のターミナルで aws configure sso コマンドを実行します。

    IAM Identity Center

    セッション名を作成し、IAM アイデンティティセンターの開始 URL、IAM アイデンティティセンターのディレクトリをホストする 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
    Legacy IAM Identity Center

    セッション名をスキップし、IAM アイデンティティセンターの開始 URL と、IAM アイデンティティセンターのディレクトリをホストする AWS リージョンを指定します。

    $ aws configure sso SSO session name (Recommended): SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1
  2. AWS CLI は、デフォルトのブラウザを開いて、IAM アイデンティティセンターのアカウントのサインインプロセスを開始しようとします。このプロセスでは、AWS CLI によるデータへのアクセスを許可するように求められる場合があります。AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには 名前 botocore のさまざまなバリエーションが含まれる場合があります。

    • 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
  3. 表示されたリストから使用する AWS アカウントを選択します。使用する権限のあるアカウントが 1 つだけの場合、AWS CLI はそのアカウントを自動的に選択し、プロンプトをスキップします。

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)
  4. 表示されたリストから使用する IAM ロールを選択します。使用できるロールが 1 つしかない場合、AWS CLI はそのロールを自動的に選択し、プロンプトをスキップします。

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess
  5. デフォルトの出力形式、コマンドの送信先になるデフォルトAWS リージョン、およびプロファイルの名前を指定します。プロファイル名として default を指定すると、このプロファイルは使用されるデフォルトプロファイルになります。次の例では、デフォルトのリージョン、デフォルトの出力形式、プロファイルの名前を入力します。

    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>
  6. 最後のメッセージは、完了したプロファイル設定について説明しています。これで、このプロファイルを使用して認証情報をリクエストできます。aws sso login コマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。手順については、IAM アイデンティティセンターのセッションにサインインする を参照してください。

これらのステップを実行すると、config ファイルに次のような sso-session セクションと名前付きプロファイルが作成されます。

IAM Identity Center
[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
Legacy IAM Identity Center
[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

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

注記

この設定は、従来の IAM アイデンティティセンターとは互換性がありません。

aws configure sso-session コマンドは、~/.aws/config ファイル内の sso-session セクションを更新します。aws configure sso-session コマンドを実行し、IAM アイデンティティセンターの開始 URL と、IAM アイデンティティセンターのディレクトリをホストする 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

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

IAM アイデンティティセンターの設定情報は config ファイルに保存されており、テキストエディタを使用して編集できます。名前付きプロファイルに IAM アイデンティティセンターのサポートを手動で追加するには、config ファイルにキーと値を追加する必要があります。

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

sso-session セクションを定義し、プロファイルに関連付けます。sso_region および sso_start_url の設定は、sso-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

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

注記

トークンの自動更新は、更新不可のレガシー設定ではサポートされていません。SSO トークン設定を使用することをお勧めします。

名前付きプロファイルに手動で IAM Identity Center サポートを追加するには、config ファイルのプロファイル定義に次のキーと値を追加する必要があります。

.aws/config ファイル内で有効なその他のキーや値を含めることができます。次の例は、IAM アイデンティティセンターのプロファイルの例です。

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 111122223333 sso_role_name = SSOReadOnlyRole region = us-west-2 output = json

コマンドを実行するには、まず IAM アイデンティティセンターのセッションにサインインする コマンドを使用して一時認証情報をリクエストおよび取得する必要があります。

config ファイルとcredentials ファイルの詳細については、「AWS CLI での設定と認証情報ファイル設定」を参照してください。

IAM アイデンティティセンターのセッションにサインインする

注記

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

IAM アイデンティティセンターの認証情報セットを取得してキャッシュするには、AWS CLI の次のコマンドを実行してデフォルトのブラウザを開き、IAM アイデンティティセンターのログインを確認します。

$ aws sso login --profile my-dev-profile SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start

IAM アイデンティティセンターの認証情報はキャッシュされ、AWS CLI はそれらを使用して、プロファイルで指定されている IAM ロールの AWS 認証情報を安全に取得します。

AWS CLI がブラウザを開くことができない場合は、ブラウザを自分で開き、指定したコードを入力するように求められます。

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://device.sso.us-west-2.amazonaws.com/ and enter the following code: QCFK-N451

aws sso login コマンドの --sso-session パラメータを使用してログインするときに、どの sso-session プロファイルを使用するかも指定できます。この sso-session オプションは、従来の IAM アイデンティティセンターでは使用できません。

$ aws sso login --sso-session my-dev-session

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

IAM アイデンティティセンターのプロファイルでコマンドを実行する

ログインしたら、認証情報を使用して、関連付けられた名前付きプロファイルで AWS CLI コマンドを呼び出すことができます。次の例は、プロファイルを使用するコマンドを示しています。

$ aws sts get-caller-identity --profile my-dev-profile

IAM アイデンティティセンターにサインインしており、キャッシュされた認証情報の有効期限が切れていない限り、AWS CLI は必要に応じて期限切れの AWS 認証情報を自動的に更新します。ただし、IAM Identity Center 認証情報の有効期限が切れた場合は、IAM Identity Center アカウントに再度ログインして明示的に更新する必要があります。

IAM アイデンティティセンターのセッションからサインアウトする

IAM アイデンティティセンターのプロファイルの使用が完了したら、認証情報の有効期限が切れるのを待つか、次のコマンドを実行してキャッシュされた認証情報を削除することができます。

$ aws sso logout Successfully signed out of all SSO profiles.

トラブルシューティング

AWS CLI の使用中に問題が発生した場合のトラブルシューティングのステップについては、「AWS CLI のエラーのトラブルシューティング」を参照してください。

関連リソース

その他のリソースは次のとおりです。