アイデンティティベースおよびリソースベースのポリシー
ポリシーは AWS のオブジェクトであり、アイデンティティやリソースに関連付けられると、これらの許可を定義します。アクセス許可ポリシーを作成してリソースへのアクセスを制限する場合、アイデンティティベースのポリシーまたはリソースベースのポリシーを選択できます。
アイデンティティベースのポリシーは、IAM ユーザー、グループ、ロールにアタッチされます。これらのポリシーを使用すると、そのアイデンティティが実行できる内容 (そのアクセス許可) を指定できます。たとえば、John という名前の IAM ユーザーに Amazon EC2 RunInstances
アクションを実行することを許可するポリシーをアタッチできます。このポリシーでは、John は、MyCompany
という名前の Amazon DynamoDB テーブルからアイテムを取得することもできます。また、John は、自分の IAM セキュリティ認証情報を管理することもできます。ID ベースのポリシーは管理またはインラインとすることができます。
リソースベースのポリシーをリソースにアタッチします。例えば、リソースベースのポリシーをAmazon S3 バケット、Amazon SQS キュー、VPC エンドポイント、AWS Key Management Service 暗号化キー、Amazon DynamoDB テーブルとストリームにアタッチできます。リソースベースのポリシーをサポートするサービスのリストについては、「IAM と連携する AWS のサービス」を参照してください。
リソースベースのポリシーによって、誰がリソースにアクセスでき、彼らがリソースでどのようなアクションを実行できるかを指定できます。信頼ゾーン (信頼できる組織またはアカウント) 外にあるアカウントのプリンシパルにロールを引き受けるアクセス権があるかどうかについては、「IAM Access Analyzer とは」を参照してください。リソースベースのポリシーはインラインのみで、管理ポリシーはありません。
注記
リソースベースのポリシーは、リソースレベルのアクセス許可とは異なっています。リソースベースのポリシーは、このトピックで説明しているように、リソースに直接アタッチできます。リソースレベルのアクセス許可は、ARN を使用してポリシー内で個別のリソースを指定する機能のことです。リソースベースのポリシーは、一部の AWS サービスでのみサポートされます。リソースベースのポリシーおよびリソースレベルのアクセス許可をサポートするサービスのリストについては、「IAM と連携する AWS のサービス」を参照してください。
ID ベースのポリシーとリソースベースのポリシーが同じアカウント内でどのように相互作用するかについては、「単一アカウント内のポリシーを評価する」を参照してください
アカウント間でポリシーがどのようにやり取りされるかについては、クロスアカウントポリシーの評価論理を参照してください。
これらの概念を深く理解するには、以下の図を確認します。123456789012
アカウントの管理者は、アイデンティティベースのポリシーを JohnSmith
、CarlosSalazar
、および MaryMajor
ユーザーにアタッチしました。これらのポリシーのアクションの一部は、特定のリソースで実行できます。たとえば、ユーザー JohnSmith
は、一部のアクションを Resource X
で実行できます。これは、アイデンティティベースのポリシーのリソースレベルのアクセス許可です。また、管理者は、リソースベースのポリシーを Resource X
、Resource
Y
、および Resource Z
に追加しました。リソースベースのポリシーでは、リソースにアクセスできるユーザーを指定することができます。たとえば、Resource X
のリソースベースのポリシーでは、JohnSmith
および MaryMajor
ユーザーは、リソースへのアクセス権を表示し、読み取ることができます。
123456789012
アカウントの例では、次のユーザーは、表示されたアクションを実行することができます。
-
JohnSmith – John は、
Resource X
のアクションを表示して、読み取ることができます。ユーザーにはアイデンティティベースのポリシー、Resource X
にはリソースベースのポリシーによってこのアクセス許可が付与されます。 -
CarlosSalazar – Carlos は、
Resource Y
のアクションの一覧表示、読み取り、書き込みを行うことができますが、Resource Z
へのアクセスは拒否されています。Carlos のアイデンティティベースのポリシーでは、Resource Y
のアクションの一覧表示および読み取りを行うことができます。Resource Y
リソースベースのポリシーでは、アクセス許可の書き込みを行うことができます。ただし、アイデンティティベースのポリシーでは、Resource Z
にアクセスすることができ、Resource Z
リソースベースのポリシーでは、そのアクセスは拒否されます。明示的なDeny
によって、Allow
は上書きされ、Resource Z
へのアクセスは拒否されます。詳細については、「ポリシーの評価論理」を参照してください。 -
MaryMajor Mary – は、
Resource X
、Resource Y
、およびResource Z
のオペレーションの一覧表示、読み取り、および書き込みを行うことができます。Mary のアイデンティティベースのポリシーでは、リソースベースのポリシーよりも多くのリソースで追加のアクションを実行できますが、アクセスが拒否されることはありません。 -
ZhangWei – Zhang は、
Resource Z
に対する完全なアクセス許可が付与されています。Zhang にはアイデンティティベースのポリシーはありませんが、Resource Z
リソースベースのポリシーでは、そのリソースにフルアクセスすることができます。Zhang は、Resource Y
でリストアクションと読み取りアクションを実行することもできます。
アイデンティティベースのポリシーとリソースベースのポリシーはいずれも、アクセス許可ポリシーであり、一緒に評価されます。アクセス許可ポリシーのみが適用されるリクエストの場合、AWS はすべてのポリシーで Deny
がないかチェックします。存在する場合、リクエストは拒否されます。AWS によって、それぞれの Allow
がないかどうか確認されます。1 つ以上のポリシーステートメントで、リクエストのアクションが許可されている場合、そのリクエストは許可されます。Allow
がアイデンティティベースのポリシーか、リソースベースのポリシーであるかは関係ありません。
重要
このロジックは、リクエストが単一の AWS アカウント 内で行われた場合にのみ適用されます。あるアカウントから別のアカウントに行われるリクエストの場合、Account A
のリクエスタには、Account B
のリソースへのリクエストを許可するアイデンティティベースのポリシーが必要です。また、Account B
のリソースベースのポリシーを使用して、Account A
のリクエスタによるリソースへのアクセスを許可する必要があります。両方のアカウントに、オペレーションを許可するポリシーが必要です。それ以外の場合、リクエストは失敗します。クロスアカウントアクセスでリソースベースのポリシーを使用する方法の詳細については、「IAM でのクロスアカウントのリソースへのアクセス」を参照してください。
特定のアクセス許可を持つユーザーが、アクセス許可ポリシーが関連付けられたリソースを要求する場合があります。このような場合、AWS がリソースへのアクセスを許可するかどうかを判断する際、両方のアクセス許可セットが評価されます。ポリシーの評価方法に関する詳細については、「ポリシーの評価論理」を参照してください。
注記
Amazon S3 では、アイデンティティベースのポリシーとリソースベースのポリシー (バケットポリシーと呼ばれます) をサポートしています。さらに、Amazon S3 は、IAM ポリシーおよびアクセス許可から独立した、アクセスコントロールリスト (ACL) と呼ばれるアクセス許可メカニズムをサポートしています。IAM ポリシーは、Amazon S3 ACL と組み合わせて使用できます。Amazon S3 アクセス許可に関する詳細は、Amazon Simple Storage Service ユーザーガイドの「Access Control」を参照してください。