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

IAM ロールとリソースベースのポリシーとの相違点

一部の AWS サービスでは、リソースに対するクロスアカウントアクセス許可を付与できます。これを行うには、プロキシとしてロールを使用する代わりに、共有するリソースに直接ポリシーをアタッチします。共有するリソースは、リソースベースのポリシーをサポートしている必要があります。ユーザーベースのポリシーとは異なり、リソースベースのポリシーでは、誰がリソースにアクセスできるかを AWS アカウント ID 番号のリストの形式で指定します。

クロスアカウントアクセスには、ロールを使うよりも、リソースベースのポリシーを使うほうがいくつかの点で有利です。リソースベースのポリシーによってリソースにアクセスする場合、ユーザーは信頼されたアカウントで作業を行い、ロールのアクセス権限を取得する代わりに自身のアクセス権限が無効になることはありません。つまり、ユーザーは信頼されたアカウントのリソースに引き続きアクセス可能である一方で、信頼するアカウントのリソースにもアクセスできます。これは、他のアカウントに属する共有リソースから、また共有リソースへと情報をコピーするといったタスクにおいて便利です。

以下に、リソースベースのポリシーをサポートする AWS サービスをいくつか示しています。

  • Amazon S3 バケット – ポリシーはバケットにアタッチされますが、ポリシーによってバケットとバケット内のオブジェクトの両方へのアクセスがコントロールされます。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「アクセスコントロール」を参照してください。

    状況によっては、Amazon S3 へのクロスアカウントアクセスにロールを使うのが最適な場合もあります。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「チュートリアル例」を参照してください。

  • Amazon Simple Notification Service (Amazon SNS) トピック – 詳細については、『Amazon Simple Notification Service 開発者ガイド』の「Amazon SNS トピックへのアクセスの管理」を参照してください。

  • Amazon Simple Queue Service (Amazon SQS) キュー – 詳細については、『Amazon Simple Queue Service 開発者ガイド』の「付録: アクセスポリシー言語」を参照してください。

プリンシパルではなくリソースへのアクセス許可ポリシーのアタッチをサポートする、AWS の増え続けるサービスの全一覧については、「IAM と連携する AWS のサービス」を参照してください。これらのサービスでは、「リソースベース」列が「はい」になっています。

リソースベースのポリシーにおける AWS アクセス許可の委任について

リソースベースのポリシーでプリンシパルとしてのアクセス許可を AWS アカウントに付与した後、AWS アカウントに属している特定のユーザーやグループにアクセス許可を委任できます。ポリシーを、アクセス権限の委任先となるユーザーやグループにアタッチします。委任できるアクセス権限は、アカウントを保持しているリソースによってアカウントに付与されたアクセス権限と同等か、それ以下のアクセス権限だけです。たとえば、お客様のアカウントに他の AWS アカウントのリソースへのフルアクセスが許可されている場合は、お客様の AWS アカウントに属しているユーザーに、フルアクセス、一覧表示アクセスなどの部分的なアクセス許可を委任できます。これに対して、お客様のアカウントにリストアクセス権だけが付与されている場合は、リストアクセス権だけを委任できます。アカウントが保持しているものよりも多くのアクセス許可を委任しようとしても、ユーザーが保持できるのは一覧表示アクセスのみになります。これを次の図に示します。ユーザーやグループにポリシーをアタッチする方法については、「IAM ポリシーを管理する」を参照してください。


        AWS アカウントへのアクセス許可の委任
  1. アカウント A はアカウント B をポリシーでプリンシパルとして指定し、アカウント B に対して、アカウント A の S3 バケットへのフルアクセス権を付与しています。その結果、アカウント B はアカウント A のバケットですべてのアクションを実行できるようになり、アカウント B の管理者はアカウント B のユーザーにアクセス権を委任できるようになります。

  2. アカウント B の管理者は、ユーザー 1 に対してアカウント A の S3 バケットへの読み取り専用アクセス権を付与します。ユーザー 1 は、アカウント A のバケットのオブジェクトを閲覧できるようになります。アカウント B が委任できるアクセスレベルは、アカウントが保持しているアクセス権と同等か、それ以下になります。この場合、アカウント B にはフルアクセス権が付与されていますが、ユーザー 1 に付与されるのは読み取り専用アクセス権に限定されています。

  3. アカウント B の管理者は、ユーザー 2 にはアクセス権を付与しません。ユーザーは、明示的に付与されたアクセス許可以外のアクセス許可をデフォルトでは保持していないため、ユーザー 2 はアカウント A の Amazon S3 バケットへアクセスすることはできません。

重要

上の例で、アカウント B がワイルドカード(*)を使用してすべてのリソースに対するフルアクセス権をユーザー 1 に付与していた場合、ユーザー 1 は、アカウント B がアクセスできるすべてのリソースに対するアクセス権を自動的に保持することになります。この場合、他のアカウントから付与されたリソースへのアクセス権も含まれます。この場合、ユーザー 1 は、アカウント B に付与されたアカウント A のすべてのリソースに対するアクセス権を保持し、さらに、ユーザー 1 に明示的に付与されたアクセス権も保持します。

IAM は、ユーザーがリクエストを行った時点でユーザーの権限を評価します。したがって、ワイルドカード (*) を使用して、あなたが自身のリソースに対するフルアクセスをユーザーに付与した場合、そのユーザーはあなたの AWS アカウントがアクセスを持つあらゆるリソースにアクセスできることになります。たとえ、ユーザーのポリシーが作成された後にあなたが追加、またはアクセス権を得たリソースであっても同様です。

権限、ポリシー、ポリシーを作成するのに使用するアクセス許可ポリシー言語の詳細については、「アクセス管理」を参照してください。

重要

信頼できるエンティティにだけアクセスを付与し、必要最少数のアクセスを提供します。信頼されたエンティティが他の AWS アカウントである場合、そのアカウントは属しているすべての IAM ユーザーにアクセス許可を委任できます。信頼された AWS アカウントは、アクセス権を付与された範囲でのみアクセス権を委任できますが、アカウント自身に付与された範囲を超えるアクセス権を委任することはできません。