メニュー
AWS Identity and Access Management
ユーザーガイド

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

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

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

欠点は、すべてのサービスがリソースベースのポリシーをサポートしているわけではないことです。以下に、リソースベースのポリシーをサポートする AWS サービスをいくつか示しています。

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

  • Amazon Simple Notification Service(Amazon SNS)トピック–詳細については、『Amazon Simple Notification Service 開発者ガイド』の「Managing Access to Your Amazon SNS Topics」を参照してください。

  • Amazon Simple Queue Service(Amazon SQS)キュー–詳細については、『Amazon Simple Queue Service 開発者ガイド』の「Appendix: The Access Policy Language」を参照してください。

プリンシパルに対してではなく、リソースに対する権限ポリシーのアタッチをサポートするさまざまな AWS サービスの詳細な一覧については、「IAM と連携する AWS サービス」を参照してください。この一覧で、[リソースベース] 列が [はい] になっているサービスを探してください。

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

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

アクセスを 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 アカウントは、アクセス権を付与された範囲でのみアクセス権を委任できますが、アカウント自身に付与された範囲を超えるアクセス権を委任することはできません。