AWS Identity and Access Management
ユーザーガイド

IAM ロールへの切り替え (AWS CLI)

ロールは、必要な AWS リソースへのアクセスに使用できる一連のアクセス許可を指定します。その点では、AWS Identity and Access Management (IAM) のユーザーに似ています。ユーザーとしてサインインすると、特定の一連のアクセス許可が付与されます。ただし、ロールにはサインインされませんが、一度ユーザーとしてサインインするとロールを切り替えることができます。こうすると、元のユーザーアクセス許可が一時的に無効になり、そのロールに割り当てられたアクセス許可が代わりに付与されます。ロールは、自身のアカウントのロールでも、他の AWS アカウントのロールでもかまいません。ロールとその利点、およびロールを作成して設定する方法については、「IAM ロール」および「IAM ロールの作成」を参照してください。ロールを引き受ける別の方法については、「IAM ロールを使用する」を参照してください。

重要

IAM ユーザーのアクセス許可および引き受けるロールは、累積されません。同時に有効になるアクセス権限のセットは 1 つのみです。ロールを引き受けると、以前のユーザーまたはロールのアクセス許可が一時的に無効になり、切り替え後のロールに割り当てられたアクセス許可が有効になります。そのロールを終了すると、ユーザーアクセス権限が自動的に復元されます。

IAM ユーザーとしてサインインしている場合、ロールを使用して AWS CLI コマンドを実行できます。また、外部で認証されたユーザー (SAML または OIDC) としてサインインしている場合にも、ロールを使用して AWS CLI コマンドを実行できます。また、インスタンスプロファイルを経由して、ロールにアタッチされた Amazon EC2 インスタンス内部から AWS CLI コマンドを実行するロールを使用できます。ロールを使用して 2 つ目のロールを引き受ける、ロールの連鎖を使用することもできます。AWS アカウントのルートユーザー としてサインインしているときに、ロールを引き受けることはできません。

デフォルトでは、ロールセッションは 1 時間です。assume-role* CLI オペレーションを使用してこのロールを引き受ける場合は、duration-seconds パラメータの値を指定できます。この値は 900 秒 (15 分) からロールの最大セッション期間設定までの範囲を指定できます。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。

ロールの連鎖を使用すると、セッション期間は最長である 1 時間に制限されます。この場合 duration-seconds パラメータを使用して 1 時間より大きい値を指定すると、オペレーションは失敗します。

開発環境で作業する IAM ユーザーがいて、不定期に本稼働環境で AWS CLI のコマンドラインで作業する必要があるとします。1 つのアクセスキー認証情報のセットがすでに使用可能です。このセットは、標準の IAM ユーザーに割り当てられたアクセスキーペアである場合があります。または、フェデレーティッドユーザーとしてサインインしている場合は、最初に割り当てられたロールのアクセスキーペアである場合があります。現在のアクセス許可で特定のロールを引き受けることができるなら、AWS CLI 設定ファイルの「プロファイル」でそのロールを特定できます。このコマンドは、元のアイデンティティではなく、指定されたロールのアクセス許可を使用して実行されます。このプロファイルを AWS CLI コマンドで指定すると、新しいロールを使用することになります。この場合、開発用アカウントの元のアクセス許可を同時に使用することはできません。同時に有効にできるアクセス許可のセットは 1 つのみであるためです。

注記

セキュリティ上の目的で、AWS CloudTrail を使用して、アカウントのロールの使用を監査することができます。CloudTrail ログでロールのアクションを特定するには、ロールセッション名を使用できます。このトピックで説明しているように、AWS CLI がユーザーに代わってロールを引き受けると、ロールセッション名が自動的に AWS-CLI-session-nnnnnnnn の形式で作成されます。ここでは nnnnnnnnUnix エポック時刻 (1970 年 1 月 1 日午前 0 時 UTC からの秒数) 形式の時刻を表す整数です。詳細については、『AWS CloudTrail User Guide』の「CloudTrail イベントリファレンス」を参照してください。

ロールを切り替えるには (AWS CLI)

  1. AWS CLI をはじめて使用する場合は、まず、デフォルトの CLI プロファイルを設定する必要があります。コマンドプロンプトを開き、IAM ユーザーまたはフェデレーティッドロールからのアクセスキーを使用するように、AWS CLI を設定します。詳細については、AWS Command Line Interface ユーザーガイド の「AWS Command Line Interface の設定」を参照してください。

    $ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-2 Default output format [None]: json
  2. ロールの新しいプロファイルを .aws/config ファイルに作成します。以下の例では、123456789012 アカウントの ProductionAccessRole ロールに切り替える「prodaccess」というプロファイルを作成します。ロール ARN は、ロールを作成したアカウント管理者から入手します。このプロファイルが呼び出されると、AWS CLI は source_profile の認証情報を使用してロールのための認証情報をリクエストします。そのため、source_profile として参照されるアイデンティティは、sts:AssumeRole で指定されたロールの role_arn アクセス許可がなければなりません。

    [profile prodaccess] role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole source_profile = default
  3. 新しいプロファイルを作成した後、--profile prodaccess パラメータを指定した AWS CLI コマンドは、デフォルトのユーザーではなく IAM ロール ProductionAccessRole にアタッチされたアクセス許可の下で実行されます。

    $ aws iam list-users --profile prodaccess

    このコマンドが機能するのは、ProductionAccessRole に割り当てられたアクセス許可の下で現在の AWS アカウントのユーザーを一覧表示できる場合です。

  4. 元の認証情報によって付与されるアクセス許可に戻すには、--profile パラメーターなしでコマンドを実行します。AWS CLI は、「ステップ 1」で設定したデフォルトのプロファイルの認証情報の使用に戻ります。

詳細については、『AWS Command Line Interface ユーザーガイド』の「ロールの引き受け」を参照してください。