AWS IAM Identity Center (successor to AWS Single Sign-On) を使用するための AWS CLI の設定 - AWS Command Line Interface

AWS IAM Identity Center (successor to AWS Single Sign-On) を使用するための AWS CLI の設定

組織が AWS IAM Identity Center (successor to AWS Single Sign-On) (IAM Identity Center) を使用している場合、ユーザーはアクティブディレクトリ、組み込み IAM Identity Center ディレクトリ、または IAM Identity Center に接続された別の IdP にサインインして、AWS CLI コマンドの実行を可能にする AWS Identity and Access Management (IAM) ロールにマッピングできます。使用する IdP に関係なく、IAM Identity Center によってそれらの区別がなくなり、以下で説明するように、すべての IdP が AWS CLI で機能します。例えば、ブログ記事「The Next Evolution in AWS IAM Identity Center (successor to AWS Single Sign-On)」で説明されているように、Microsoft Azure AD を接続できます。

IAM Identity Center の詳細については、AWS IAM Identity Center (successor to AWS Single Sign-On) ユーザーガイドを参照してください。

このトピックでは、AWS CLI コマンドを実行するための短期的な認証情報を取得するために IAM Identity Center を使用してユーザーを認証するように AWS CLI を設定する方法について説明します。以下のセクションで構成されます。

IAM Identity Center を使用するための名前付きプロファイルの設定

1 つ以上の AWS CLI 名前付きプロファイルを設定して、IAM Identity Center からロールを使用できます。

プロファイルを設定するには、次の方法があります。

  • 自動: コマンド aws configure sso を使用します。

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

自動設定

IAM Identity Center に有効化されたプロファイルを AWS CLI に追加するには、次のコマンドを実行し、IAM Identity Center 開始 URL と IAM Identity Center ディレクトリをホストする AWS リージョンを指定します。

$ aws configure sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

AWS CLI は、デフォルトのブラウザを開き、IAM Identity Center アカウントのログインプロセスを開始します。

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

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

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

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

次に、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] キーを押して、選択を行います。

次に、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 キーを押して、選択を行います。

AWS CLI によって、ロールの選択が確認されます。

Using the role name "ReadOnly"

これで、デフォルトの出力形式、コマンドの送信先となるデフォルトの 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 コマンドを実行し、プロファイル名を指定しない場合に使用されるプロファイルになります。

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

このプロファイルを使用するには、次のように --profile を使用してプロファイル名を指定します。

aws s3 ls --profile my-dev-profile

上記のエントリの例では、次の例のような名前付きプロファイルが ~/.aws/config で生成されます。

[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 sso login コマンドを実行する必要があります。手順については、「IAM Identity Center が有効な名前付きプロファイルの使用」を参照してください。

注記

指定したプロファイルを使用して AWS CLI コマンドを実行することもできます。現在 AWS アクセスポータルにログインしていない場合は、aws sso login コマンドを手動で実行した場合と同様に、ログインプロセスが自動的に開始されます。

手動設定

名前付きプロファイルに手動で IAM Identity Center サポートを追加するには、ファイル ~/.aws/config (Linux または macOS) または %USERPROFILE%/.aws/config (Windows) のプロファイル定義に次のキーと値を追加する必要があります。

sso_start_url

組織の AWS アクセスポータルを指す URL を指定します。AWS CLI は、この URL を使用して、IAM Identity Center サービスとのセッションを確立し、ユーザーを認証します。AWS アクセスポータル URL を検索するには、次のいずれかを使用します。

  • 招待 E メールを開くと、AWS アクセスポータル URL が一覧で表示されます。

  • https://console.aws.amazon.com/singlesignon/ で AWS IAM Identity Center (successor to AWS Single Sign-On) コンソールを開きます。AWS アクセスポータル URL がお客様の設定に一覧で表示されます。

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

AWS アクセスポータルホストが含まれる AWS リージョン。これはデフォルトの CLI region パラメータとは別で、異なるリージョンにすることができます。

sso_region = us-west-2
sso_account_id

このプロファイルで使用する IAM ロールが含まれる AWS アカウント ID。

sso_account_id = 123456789011
sso_role_name

このプロファイルを使用するときのユーザーのアクセス許可を定義する IAM ロールの名前。

sso_role_name = ReadAccess

これらのキーが存在すると、このプロファイルは、IAM Identity Center がユーザーの認証に使用するプロファイルとして識別されます。

.aws/config ファイル内で有効なその他のキーや値 (regionoutputs3 など) を含めることもできます。ただし、role_arnaws_secret_access_key など、認証情報に関連する値を含めることはできません。含めた場合は、AWS CLI はエラーを生成します。

したがって、.aws/config の典型的な 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 CLI サービスコマンドを実行することはできません。まず、コマンドを使用して、実際に aws sso login コマンドを実行するために必要な一時認証情報を要求および取得する必要があります。手順については、次のセクション、「IAM Identity Center が有効な名前付きプロファイルの使用」を参照してください。

IAM Identity Center が有効な名前付きプロファイルの使用

このセクションでは、前のセクションで作成した IAM Identity Center プロファイルの使用方法について説明します。

サインインと一時認証情報の取得

名前付きプロファイルを自動または手動で設定したら、そのプロファイルを呼び出してから、一時的な認証情報を から要求できますAWS AWS CLI サービスコマンドを実行する前に、一時認証情報のセットを取得してキャッシュする必要があります。これらの一時認証情報を取得するには、次のコマンドを実行します。

$ aws sso login --profile my-dev-profile

AWS CLI がデフォルトブラウザを開き、IAM Identity Center ログインを確認します。

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 Identity Center にサインインしていない場合は、IAM Identity Center の認証情報を指定する必要があります。

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

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

AWS CLI は、デフォルトのブラウザを開き (または選択したブラウザを手動で開く)、指定されたコードを入力します。ウェブページでは、IAM Identity Center 認証情報の入力を求められます。

IAM Identity Center セッション認証情報はキャッシュされ、有効期限のタイムスタンプが含まれます。認証情報の有効期限が切れると、AWS CLI は 再度 IAM Identity Center へのサインインを要求します。

IAM Identity Center 認証情報が有効な場合、AWS CLI はそれらを使用して、プロファイルに指定された IAM ロールの AWS 一時認証情報を安全に取得します。

Welcome, you have successfully signed-in to the AWS-CLI.

IAM Identity Center 有効化されたプロファイルでコマンドを実行する

これらの一時認証情報を使用して、関連付けられた名前付きプロファイルで AWS CLI コマンドを呼び出すことができます。次の例は、指定したアカウントの一部である引き受けたロールでコマンドが実行されたことを示しています。

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

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

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

それぞれが異なる AWS アカウントまたはロールを指す、複数の IAM Identity Center 対応名前付きプロファイルを作成できます。aws sso login このコマンドは、一度に複数のプロファイルに対しても使用できます。複数のプロファイルのいずれかが同じ IAM Identity Center ユーザーアカウントを共有している場合は、その IAM Identity Center ユーザーアカウントに一度だけログインする必要があります。その後、複数のプロファイルのすべてが IAM Identity Center キャッシュされた認証情報の 1 つのセットを共有します。

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same AWS access portal, then it uses the SSO credentials that you retrieved in the # previous command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # IAM Identity Center again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

IAM Identity Center セッションからサインアウトする

IAM Identity Center 対応プロファイルを使用し終わったら、何もせず、AWS 一時認証情報と IAM Identity Center 認証情報の有効期限が切れるようにすることができます。ただし、次のコマンドを実行して、SSO 認証情報キャッシュフォルダ内のキャッシュされたすべての認証情報、および IAM Identity Center 認証情報に基づくすべての AWS 一時認証情報をすぐに削除することもできます。これにより、これらの認証情報は将来のコマンドで使用できなくなります。

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

後で IAM Identity Center 有効化されたプロファイルの 1 つでコマンドを実行する場合は、aws sso login コマンドを再度実行し (前のセクションを参照)、使用するプロファイルを指定する必要があります。