メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

Amazon S3 がオブジェクトオペレーションのリクエストを許可する方法

Amazon S3 は、オブジェクトオペレーションのリクエストを受け取ると、関連するすべてのアクセス許可、すなわちリソースベースの アクセス許可(オブジェクトアクセスコントロールリスト(ACL)、バケットポリシー、バケット ACL)と IAM ユーザーポリシーを、実行時に評価されるポリシーのセットに変換します。その後、作成したポリシーのセットを一連の手順で評価します。各ステップでは、ポリシーのサブセットが、ユーザーコンテキスト、バケットコンテキスト、オブジェクトコンテキストの 3 つの固有のコンテキストで評価されます。

  1. ユーザーコンテキスト - リクエスタが IAM ユーザーの場合、ユーザーは自分が属する親 AWS アカウントからのアクセス許可を持つ必要があります。このステップで、Amazon S3 は、親アカウント(コンテキストの権限とも呼ばれる)が所有するポリシーのサブセットを評価します。このポリシーのサブセットには、親がユーザーにアタッチするユーザーポリシーが含まれます。親がリクエスト内のリソース(バケット、オブジェクト)も所有している場合、Amazon S3 は、対応するリソースポリシー(バケットポリシー、バケット ACL、オブジェクト ACL)を同時に評価します。

    注記

    親 AWS アカウントがリソース(バケットまたはオブジェクト)を所有している場合、親アカウントは、ユーザーポリシーまたはリソースポリシーを使用して、リソースのアクセス許可を IAM ユーザーに付与できます。

  2. バケットコンテキスト – このコンテキストでは、Amazon S3 はバケットを所有する AWS アカウントが所有するポリシーを評価します。

    リクエスト内のオブジェクトを所有する AWS アカウントがバケット所有者と同じでない場合、Amazon S3 はバケットコンテキストでポリシーをチェックして、バケット所有者がオブジェクトへのアクセスを明示的に拒否しているかどうかを確認します。オブジェクトに対する明示的な拒否セットが存在する場合、Amazon S3 はリクエストを許可しません。

  3. オブジェクトコンテキスト –リクエスタは特定のオブジェクトオペレーションを実行するためのオブジェクト所有者からのアクセス許可を持つ必要があります。このステップで、Amazon S3 はオブジェクト ACL を評価します。

    注記

    バケットとオブジェクトの所有者が同じ場合、オブジェクトへのアクセスは、バケットコンテキストで評価されるバケットポリシーで許可することができます。所有者が異なる場合、オブジェクトの所有者はオブジェクト ACL を使用してアクセス許可を付与する必要があります。オブジェクトを所有する AWS アカウントが IAM ユーザーの親アカウントでもある場合、そのアカウントはユーザーコンテキストで評価されているユーザーポリシーでオブジェクトのアクセス許可を設定できます。これらのアクセスポリシーの各オプションの詳細については、「アクセスポリシーのオプションを使用するためのガイドライン」を参照してください。

次に示すのは、オブジェクトオペレーションに対するコンテキストベースの評価の説明です。

例 1: オブジェクトオペレーションのリクエスト

この例では、親 AWS アカウントが 1111-1111-1111 である IAM ユーザー Jill が、AWS アカウント 2222-2222-2222 が所有するバケットにある、AWS アカウント 3333-3333-3333 が所有するオブジェクトに対するオブジェクトオペレーションのリクエスト(オブジェクトの取得など)を送信します。

Jill には、親 AWS アカウント、バケット所有者、およびオブジェクト所有者からのアクセス許可が必要です。Amazon S3 は次のようにコンテキストを評価します。

  1. リクエストは IAM ユーザーからであるため、Amazon S3 は、ユーザーコンテキストを評価して、親 AWS アカウント 1111-1111-1111 がリクエストされたオペレーションを実行するアクセス許可を Jill に付与していることを確認します。アクセス許可がある場合、Amazon S3 はバケットコンテキストを評価します。アクセス許可がない場合、Amazon S3 はリクエストを拒否します。

  2. バケットコンテキストでは、バケット所有者の AWS アカウント 2222-2222-2222 がコンテキストの権限です。Amazon S3 は、バケットポリシーを評価して、バケットの所有者がオブジェクトへのアクセスを Jill に対して明示的に拒否しているかどうかを判定します。

  3. オブジェクトコンテキストでは、コンテキストの権限はオブジェクト所有者の AWS アカウント 3333-3333-3333 です。Amazon S3 は、オブジェクト ACL を評価して、Jill がオブジェクトにアクセスするアクセス許可を持つかどうかを判定します。アクセス許可がある場合、Amazon S3 はリクエストを許可します。