ロールを切り替えるアクセス許可をユーザーに付与する
管理者がクロスアカウントアクセス用のロールを作成する場合、ロールを所有するアカウント、リソース (信頼するアカウント)、およびユーザーを含むアカウント (信頼されるアカウント) の間で信頼を確立します。これを行うには、信頼するアカウントの管理者が、ロールの信頼ポリシーで信頼できるアカウント番号を Principal
として指定します。これにより、信頼されたアカウント内のすべてのユーザーがロールを引き受けることができるようになる可能性があります。設定を完了するには、信頼されたアカウントの管理者がそのアカウント内の特定のグループまたはユーザーにロールを切り替えるアクセス権限を付与する必要があります。
ロールを切り替えるアクセス許可を付与するには
-
信頼されたアカウントの管理者として、ユーザーの新しいポリシーを作成するか、既存のポリシーを編集して必要な要素を追加します。詳細については、「ポリシーの作成または編集」を参照してください。
-
次に、ロール情報を共有する方法を次の中から選択します。
-
ロールリンク: 詳細がすべて既に入力されている [Switch Role] (ロールの切り替え) ページへのリンクをユーザーに送信します。
-
アカウント ID またはエイリアス: ロール名とアカウント ID 番号またはアカウントのエイリアスを各ユーザーに提供します。これにより、ユーザーは [ロールの切り替え] ページに移動し、詳細を手動で追加できます。
詳細については、「ユーザーへの情報の提供」を参照してください。
-
ロールを切り替えできるのは、IAM ユーザー、SAML フェデレーションロール、またはウェブ ID フェデレーションロールとしてサインインしている場合のみですのでご注意ください。AWS アカウントのルートユーザー としてサインインすると、ロールを切り替えることはできません。
重要
AWS Management Console で、ExternalId 値を必要とするロールに切り替えることはできません。ExternalId
パラメータをサポートする AssumeRole
API を呼び出すことにより、このようなロールに切り替えることができます。
メモ
-
タスクを達成するために最終的にユーザーにアクセス許可を付与するので、このトピックでは、ユーザーのポリシーについて説明します。ただし、個々のユーザーに直接アクセス許可を付与することはお勧めしません。ユーザーがロールを引き受けると、そのロールに関連付けられたアクセス許可が割り当てられます。
-
AWS Management Console でロールを切り替えると、コンソールは常に元の認証情報を使用して切り替えを認証します。これは、IAM ユーザー、SAML フェデレーションロール、またはウェブ ID フェデレーションロールとしてサインインする際に適用されます。例えば、RoleA に切り替える場合は、IAM では元のユーザーまたはフェデレーションロールの認証情報を使用して、RoleA の引き受けが許可されているかどうかが判断されます。その後、RoleA を使用中に RoleB への切り替えを試みると、元のユーザーまたはフェデレーションロールの認証情報を使用して、RoleB への切り替えが承認されます。RoleA の資格情報は、このアクションには使用されません。
ポリシーの作成または編集
ロールを引き受けるアクセス許可をユーザーに付与するポリシーには、次の Allow
効果を伴うステートメントを含める必要があります。
-
sts:AssumeRole
アクション -
Resource
要素でのロールの Amazon リソースネーム (ARN)
このポリシーを取得するユーザーは、(グループメンバーとして、または直接アタッチされて) 一覧表示されたリソース上のロールに切り替えることができます。
注記
Resource
が *
に設定されている場合、ユーザーは、ユーザーのアカウントを信頼する任意のアカウントで任意のロールを引き受けることができます。(つまり、ロールの信頼ポリシーは、ユーザーのアカウントを Principal
として指定します)。ベストプラクティスとして、最小権限の原則
次の例に示すポリシーでは、ユーザーは 1 つのアカウントに限ってロールを引き受けることができます。さらに、このポリシーではワイルドカード (*) を使用し、ロール名が文字列 Test
で始まる場合に限り、ユーザーがロールに切り替えることができることを指定します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
account-id
:role/Test*" } }
注記
ロールをユーザーに付与するアクセス権限は、既にユーザーに付与されているアクセス権限に追加されるわけではありません。ユーザーがロールに切り替えると、そのユーザーはロールによって付与されたアクセス権限と引き換えに元々付与されていたアクセス権限を一時的に喪失します。ユーザーがロールを終了すると、元のユーザーアクセス権限が自動的に復元します。例えば、ユーザーのアクセス許可では Amazon EC2 インスタンスの操作が許可されるが、これらのアクセス許可はロールのアクセス許可ポリシーで付与されないとします。この場合、ロールの使用中に、ユーザーはコンソールで Amazon EC2 インスタンスを操作できません。さらに、AssumeRole
を介して取得された一時的な認証情報は、プログラムでは Amazon EC2 インスタンスで機能しません。
ユーザーへの情報の提供
ロールを作成し、このロールに切り替えるアクセス許可をユーザーに付与した後で、ユーザーに以下を提供する必要があります。
-
ロールの名前は
-
ID またはロールが含まれているアカウントエイリアス
アカウント ID とロール名が事前設定されたリンクを送信すると、ユーザーのアクセスが簡素化されます。ロールのリンクは、[ロールの作成] ウィザードの完了後に [ロールを表示] バナーを選択すると表示されます。また、クロスアカウントが有効なロールの場合は [ロールの概要] ページに表示されます。
または、次の形式を使用して手動でリンクを作成することもできます。次の例の 2 つのパラメータのアカウント ID またはエイリアスとロール名を置き換えます。
https://signin.aws.amazon.com/switchrole?account=
your_account_ID_or_alias
&roleName=optional_path/role_name
ユーザーにトピック「ユーザーから IAM ロールに切り替える (コンソール)」を参照してプロセスに従って進めてもらうことをお勧めします。ロールを引き受ける際に遭遇する可能性がある一般的な問題のトラブルシューティングを行うには、、「ロールを引き受けることができない」を参照してください。
考慮事項
-
プログラムでロールを作成する場合は、パスと名前を持ったロールを作成できます。、ユーザーが AWS Management Console の[ロールの切り替え]ページで入力できるように、完全なパスとロール名をユーザーに提供する必要があります。例:
division_abc/subdivision_efg/role_XYZ
。 -
プログラムでロールを作成する場合は、512 文字までの
Path
とRoleName
を追加できます。名前の長さは最大 64 文字です。ただし、AWS Management Console の [ロールの切り替え] 機能でロールを使用するには、Path
とRoleName
の合計が 64 文字を超えることはできません。
-
セキュリティ上の理由から、AWS CloudTrail ログを確認して、AWS でアクションを実行したユーザーを調べることができます。ロール信頼ポリシーで
sts:SourceIdentity
条件キーを使用すると、ユーザーがロールを引き受けるときに ID を指定するように要求できます。例えば、IAM ユーザーがセッション名として自分のユーザー名を指定するように要求できます。これにより、AWS の特定のアクションを実行したユーザーを特定できます。詳細については、「sts:SourceIdentity」を参照してください。sts:RoleSessionName 条件キーを使用すると、ユーザーがロールを引き受けるときにセッション名を指定するように要求できます。これは、ロールが異なるプリンシパルによって使用される場合に、ロールセッションを区別するのに役立ちます。