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 アイデンティティセンターの情報を収集します。
-
AWS アクセスポータルで、開発に使用するアクセス許可セットを選択し、[アクセスキー] リンクを選択します。
-
[認証情報の取得] ダイアログボックスで、オペレーティングシステムに一致するタブを選択します。
-
[IAM Identity Center 認証情報] メソッドを選択して、
aws configure sso
の実行に必要なSSO Start URL
とSSO Region
の値を取得します。どのスコープ値を登録するかについては、「IAM Identity Center ユーザーガイド」の「OAuth 2.0 アクセススコープ」を参照してください。
aws
configure sso
ウィザードでプロファイルを設定する
IAM アイデンティティセンターで有効化されたプロファイルを AWS CLI に対して設定するには
-
任意のターミナルで
aws configure sso
コマンドを実行します。 -
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
-
表示されたリストから使用する 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
) -
表示されたリストから使用する IAM ロールを選択します。使用できるロールが 1 つしかない場合、AWS CLI はそのロールを自動的に選択し、プロンプトをスキップします。
Using the account ID
123456789011
There are 2 roles available to you. > ReadOnly FullAccess -
デフォルトの出力形式、コマンドの送信先になるデフォルト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> -
最後のメッセージは、完了したプロファイル設定について説明しています。これで、このプロファイルを使用して認証情報をリクエストできます。
aws sso login
コマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。手順については、IAM アイデンティティセンターのセッションにサインインする を参照してください。
これらのステップを実行すると、config
ファイルに次のような sso-session
セクションと名前付きプロファイルが作成されます。
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_id
と sso_role_name
は profile
セクション内に設定する必要があります。
次の例では、SSO 認証情報をリクエストするように SDK を設定し、トークンの自動更新をサポートしています。
[profile
dev
] sso_session =my-sso
sso_account_id =111122223333
sso_role_name =SampleRole
[sso-sessionmy-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
[profileprod
] sso_session =my-sso
sso_account_id =111122223333
sso_role_name =SampleRole2
[sso-sessionmy-sso
] sso_region =us-east-1
sso_start_url =https://my-sso-portal.awsapps.com/start
ただし、sso_account_id
と sso_role_name
は SSO トークン設定のすべてのシナリオで必須というわけではありません。アプリケーションでベアラー認証をサポートする AWS のサービスのみを使用する場合、従来の AWS 認証情報は必要ありません。ベアラー認証は、ベアラートークンと呼ばれるセキュリティトークンを使用する HTTP 認証スキームです。このシナリオでは、sso_account_id
と sso_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 のエラーのトラブルシューティング」を参照してください。
関連リソース
その他のリソースは次のとおりです。
-
チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する
-
aws configure sso
(AWS CLI バージョン 2 リファレンス) -
aws configure sso-session
(AWS CLI バージョン 2 リファレンス) -
aws sso login
(AWS CLI バージョン 2 リファレンス) -
aws sso logout
(AWS CLI バージョン 2 リファレンス) -
「Amazon CodeCatalyst ユーザーガイド」の「Setting up to use the AWS CLI with CodeCatalyst」
-
「IAM アイデンティティセンターのユーザーガイド」の OAuth 2.0 アクセススコープ
-
「IAM アイデンティティセンターのユーザーガイド」の入門チュートリアル