ロールを切り替えるアクセス許可をユーザーに付与する - AWS Identity and Access Management

ロールを切り替えるアクセス許可をユーザーに付与する

クロスアカウントアクセス用のロールを作成する場合、そのロールを所有するアカウントおよびリソース (信頼するアカウント) からユーザーを含むアカウント (信頼されるアカウント) への信頼を確立します。これを行うには、信頼するアカウントの管理者が、ロールの信頼ポリシーで信頼できるアカウント番号を Principal として指定します。これにより、信頼されたアカウント内のすべてのユーザーがロールを引き受けることができるようになる可能性があります。設定を完了するには、信頼されたアカウントの管理者がそのアカウント内の特定のグループまたはユーザーにロールを切り替えるアクセス権限を付与する必要があります。

ロールを切り替えるユーザーアクセス権限を付与するには、信頼されたアカウントの管理者がユーザーの新しいポリシーを作成します。または、管理者が既存のポリシーを編集して、必要な要素を追加することもできます。その後、詳細がすべてすでに入力されている [ロールの切り替え] ページへのリンクをユーザーに送信できます。または、管理者がアカウント ID 番号またはロールを含むアカウントエイリアスと、ロール名をユーザーに提供できます。これにより、ユーザーは [ロールの切り替え] ページに移動し、詳細を手動で追加できます。ユーザーがロールを切り替える方法について詳しくは、「ロールの切り替え (コンソール)」を参照してください。

ロールを切り替えることができるのは、IAM ユーザーとしてサインインしているときのみですのでご注意ください。 AWS アカウント ルートユーザーとしてサインインすると、ロールを切り替えることはできません。

重要

AWS Management Console で、ExternalId 値を必要とするロールに切り替えることはできません。ExternalId パラメーターをサポートする AssumeRole API を呼び出すことにより、このようなロールに切り替えることができます。

Notes
  • このタスクの目標は、最終的にユーザーにアクセス許可を付与することです。そのため、このトピックでは、ユーザーのポリシーについて説明します。ただし、個々のユーザーにアクセス許可を直接付与しない方法が、ベストプラクティスです。管理を簡単にするために、ポリシーを割り当ててアクセス許可を IAM グループに付与し、その後ユーザーを適切なグループのメンバーにする方法をお勧めします。

  • AWS Management Consoleでロールを切り替えると、コンソールは常に元の認証情報を使用して切り替えを認証します。これは、IAM ユーザー、SAML フェデレーションロール、またはウェブ ID フェデレーションロールとしてサインインする際に適用されます。たとえば、RoleA に切り替える場合は、元のユーザーまたはフェデレーションロールの認証情報を使用して、RoleA の引き受けが許可されているかどうかが判断されます。その後、RoleA を使用中に RoleB への切り替えを試みると、元のユーザーまたはフェデレーションロールの認証情報を使用して、RoleB への切り替えが承認されます。RoleA の資格情報は、このアクションには使用されません。

ポリシーの作成または編集

ロールを引き受けるアクセス許可をユーザーに付与するポリシーには、次の Allow 効果を伴うステートメントを含める必要があります。

  • sts:AssumeRoleアクション

  • Resource 要素でのロールの Amazon リソースネーム (ARN)

これを次の例で示します。このポリシーを取得するユーザー (グルームメンバーまたは直接アタッチ) は、指定されたロールに切り替えることができます。

注記

Resource* に設定されている場合、ユーザーは、ユーザーのアカウントを信頼する任意のアカウントで任意のロールを引き受けることができます。(つまり、ロールの信頼ポリシーは、ユーザーのアカウントを Principal として指定します)。ベストプラクティスとして、最小権限の原則に従って、ユーザーが必要とするロールに限って完全な ARN を指定することをお勧めします。

次の例に示すポリシーでは、ユーザーは 1 つのアカウントに限ってロールを引き受けることができます。さらに、このポリシーではワイルドカード (*) を使用し、ロール名が文字列 Test で始まる場合に限り、ユーザーがロールに切り替えることができることを指定します。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS: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

ユーザーにトピック「ロールの切り替え (コンソール)」を参照してプロセスに従ってもらうことをお勧めします。

Considerations

  • プログラムでロールを作成した場合は、名前に加えてパスを指定できます。、ユーザーが AWS Management Console の[ロールの切り替え]ページで入力できるように、完全なパスとロール名をユーザーに提供する必要があります。例: division_abc/subdivision_efg/role_XYZ

  • ロールの作成をプログラムで行う場合は、Path に加えて 512 文字までの RoleName を指定できます。名前の長さは最大 64 文字です。ただし、AWS Management Console の [ロールの切り替え] 機能でロールを使用するには、PathRoleName の合計が 64 文字を超えることはできません。

  • セキュリティ上の理由から、AWS CloudTrail ログを確認して、AWS でアクションを実行したユーザーを調べることができます。ロール信頼ポリシーで sts:SourceIdentity 条件キーを使用すると、ユーザーがロールを引き受けるときに ID を指定するように要求できます。たとえば、IAM ユーザーがソース ID として自分のユーザー名を指定するように要求できます。これにより、AWS で特定のアクションを実行したユーザーを特定できます。詳細については、「」を参照してください。sts:SourceIdentitysts:RoleSessionName 条件キーを使用すると、ユーザーがロールを引き受けるときにセッション名を指定するように要求できます。これは、ロールが異なるプリンシパルによって使用される場合に、ロールセッションを区別するのに役立ちます。