ロール信頼ポリシーを更新する - AWS Identity and Access Management

ロール信頼ポリシーを更新する

ロールを引き受けるユーザーを変更するには、ロールの信頼ポリシーを変更する必要があります。サービスにリンクされたロールの信頼ポリシーは変更できません。

メモ
  • ユーザーがプリンシパルとしてロールの信頼ポリシーに表示されているが、そのロールを引き受けることができない場合は、ユーザーのアクセス許可の境界を確認します。アクセス許可の境界がユーザーに対して設定されている場合は、sts:AssumeRole アクションを許可する必要があります。

  • ロールセッション内でユーザーが現在のロールを再び引き受けることができるようにするには、ロール信頼ポリシーでロール ARN または AWS アカウント ARN をプリンシパルとして指定します。Amazon EC2、Amazon ECS、Amazon EKS、Lambda などのコンピューティングリソースを提供する AWS のサービス は、一時的な認証情報を提供し、これらの認証情報を自動的に更新します。これにより、常に有効な認証情報セットを確保できます。これらのサービスでは、一時的な認証情報を取得するために現在のロールを再度引き受ける必要はありません。ただし、セッションタグまたはセッションポリシーを渡す場合は、現在のロールを再度引き受ける必要があります。

ロール信頼ポリシーの更新 (コンソール)

AWS Management Consoleでロールの信頼ポリシーを変更するには
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. IAM コンソールのナビゲーションペインで [ロール] を選択します。

  3. アカウントのロールの一覧で、変更するロールの名前を選択します。

  4. [信頼関係] タブを選択し、続いて [信頼ポリシーの編集] を選択します。

  5. 必要に応じて信頼ポリシーを編集します。ロールを引き受ける他のプリンシパルを追加するには、Principal 要素で指定します。以下のポリシースニペットの例では、Principal 要素の 2 つの AWS アカウント を参照する方法を示しています。

    "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] },

    別のアカウントでプリンシパルを指定した場合、ロールの信頼ポリシーにアカウントを追加しても、クロスアカウントの信頼関係は半分しか確立されません。デフォルトでは、信頼されたアカウントのユーザーはロールを引き受けることができません。新しく信頼されたアカウントの管理者は、ロールを引き受けるアクセス許可をユーザーに付与する必要があります。これを行うには、ユーザーにアタッチするポリシーを作成または編集し、sts:AssumeRole アクションへのアクセスをユーザーに許可する必要があります。詳細については、次の手順または「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

    以下のポリシースニペットでは、AWS 要素で Principal の 2 つのサービスを参照する方法を示します。

    "Principal": { "Service": [ "opsworks.amazonaws.com", "ec2.amazonaws.com" ] },
  6. 信頼ポリシーの編集を完了したら、[Update policy] (ポリシーの更新) を選択して変更を保存します。

    ポリシーの構造や構文の詳細については、「AWS Identity and Access Management でのポリシーとアクセス許可」および「IAM JSON ポリシー要素のリファレンス」を参照してください。

信頼された外部アカウントのユーザーにロールの使用を許可するには (コンソール)

この手順の詳細については、「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

  1. 信頼された外部 AWS アカウント にサインインします。

  2. ユーザーとグループのどちらにアクセス許可をアタッチするかを決定します。IAM コンソールのナビゲーションペインで [Users] (ユーザー) または [User groups] (ユーザーグループ) を適切に選択します。

  3. アクセスを許可する対象となるユーザーまたはグループの名前を選択し、[Permissions (アクセス許可)] タブを選択します。

  4. 次のいずれかを行います。

    • 既存のカスタマー管理ポリシーを編集するには、ポリシーの名前を選択してから [ポリシーの編集] を選択し、[JSON] タブを選択します。AWS の管理ポリシーを編集することはできません。AWS 管理ポリシーには AWS アイコン ( Orange cube icon indicating a policy is managed by AWS. ) が表示されます。AWS 管理ポリシーとカスタマー管理ポリシーの違いの詳細については、「管理ポリシーとインラインポリシー」を参照してください。

    • インラインポリシーを編集するには、ポリシーの名前の横にある矢印を選択してから、[ポリシーの編集] を選択します。

  5. ポリシーエディターで、新しい Statement 要素を追加して、次のように指定します。

    { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME" }

    ステートメント内の ARN を、ユーザーが引き受けるロールの ARN に置き換えます。

  6. 画面のプロンプトに従って、ポリシーの編集を終了します。

ロール信頼ポリシーの更新 (AWS CLI)

AWS CLI を使用して、誰がロールを引き受けることができるかを変更できます。

ロールの信頼ポリシーを変更するには (AWS CLI)
  1. (オプション) 変更するロールの名前が不明である場合は、次のコマンドを実行してアカウントのロールを一覧表示します。

  2. (オプション) ロールの現在の信頼ポリシーを表示するには、次のコマンドを実行します。

  3. ロールにアクセス可能な信頼されたプリンシパルを変更するには、更新された信頼ポリシーを使用してテキストファイルを作成します。ポリシーの作成には任意のテキストエディタを使用できます。

    以下の信頼ポリシーの例では、Principal 要素で 2 つの AWS アカウント を参照する方法を示します。これにより、2 つの別個の AWS アカウント 内のユーザーが、このロールを引き受けることができます。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ]}, "Action": "sts:AssumeRole" } }

    別のアカウントでプリンシパルを指定した場合、ロールの信頼ポリシーにアカウントを追加しても、クロスアカウントの信頼関係は半分しか確立されません。デフォルトでは、信頼されたアカウントのユーザーはロールを引き受けることができません。新しく信頼されたアカウントの管理者は、ロールを引き受けるアクセス許可をユーザーに付与する必要があります。これを行うには、ユーザーにアタッチするポリシーを作成または編集し、sts:AssumeRole アクションへのアクセスをユーザーに許可する必要があります。詳細については、次の手順または「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

  4. 先ほど作成したファイルを使用して信頼ポリシーを更新するには、次のコマンドを実行します。

信頼された外部アカウントのユーザーにロールの使用を許可するには (AWS CLI)

この手順の詳細については、「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

  1. JSON ファイルを作成し、ロールを引き受けるためのアクセス許可を付与するアクセス許可ポリシーを含めます。たとえば、次のポリシーには必要最小限のアクセス権限が含まれています。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::ACCOUNT-ID-THAT-CONTAINS-ROLE:role/ROLE-NAME" } }

    ステートメント内の ARN を、ユーザーが引き受けるロールの ARN に置き換えます。

  2. 次のコマンドを実行し、信頼ポリシーが含まれている JSON ファイルを IAM にアップロードします。

    このコマンドの出力には、ポリシーの ARN が含まれています。この ARN を書き留めます。後のステップで必要になります。

  3. ポリシーをアタッチするユーザーまたはグループを決定します。目的のユーザーやグループの名前が不明である場合は、以下のいずれかのコマンドを使用して、アカウントのユーザーやグループを一覧表示します。

  4. 以下のいずれかのコマンドを使用して、前のステップで作成したポリシーをユーザーまたはグループにアタッチします。

ロール信頼ポリシーの更新 (AWS API)

AWS API を使用して、誰がロールを引き受けることができるかを変更できます。

ロールの信頼ポリシーを変更するには (AWS API)
  1. (オプション) 変更するロールの名前が不明な場合は、次のオペレーションを呼び出してアカウントのロールを一覧表示します。

  2. (オプション) ロールの現在の信頼ポリシーを表示するには、次のオペレーションを呼び出します。

  3. ロールにアクセス可能な信頼されたプリンシパルを変更するには、更新された信頼ポリシーを使用してテキストファイルを作成します。ポリシーの作成には任意のテキストエディタを使用できます。

    以下の信頼ポリシーの例では、Principal 要素で 2 つの AWS アカウント を参照する方法を示します。これにより、2 つの別個の AWS アカウント 内のユーザーが、このロールを引き受けることができます。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ]}, "Action": "sts:AssumeRole" } }

    別のアカウントでプリンシパルを指定した場合、ロールの信頼ポリシーにアカウントを追加しても、クロスアカウントの信頼関係は半分しか確立されません。デフォルトでは、信頼されたアカウントのユーザーはロールを引き受けることができません。新しく信頼されたアカウントの管理者は、ロールを引き受けるアクセス許可をユーザーに付与する必要があります。これを行うには、ユーザーにアタッチするポリシーを作成または編集し、sts:AssumeRole アクションへのアクセスをユーザーに許可する必要があります。詳細については、次の手順または「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

  4. 先ほど作成したファイルを使用して信頼ポリシーを更新するには、次のオペレーションを呼び出します。

信頼された外部アカウントのユーザーにロールの使用を許可するには (AWS API)

この手順の詳細については、「ロールを切り替えるアクセス許可をユーザーに付与する」を参照してください。

  1. JSON ファイルを作成し、ロールを引き受けるためのアクセス許可を付与するアクセス許可ポリシーを含めます。たとえば、次のポリシーには必要最小限のアクセス権限が含まれています。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::ACCOUNT-ID-THAT-CONTAINS-ROLE:role/ROLE-NAME" } }

    ステートメント内の ARN を、ユーザーが引き受けるロールの ARN に置き換えます。

  2. 次のオペレーションを呼び出し、信頼ポリシーが含まれている JSON ファイルを IAM にアップロードします。

    このオペレーションの出力には、ポリシーの ARN が含まれています。この ARN を書き留めます。後のステップで必要になります。

  3. ポリシーをアタッチするユーザーまたはグループを決定します。目的のユーザーやグループの名前が不明である場合は、以下のいずれかのオペレーションを呼び出して、アカウントのユーザーやグループを一覧表示します。

  4. 以下のいずれかのオペレーションを呼び出して、前のステップで作成したポリシーをユーザーまたはグループにアタッチします。