Amazon S3 ポリシーアクション - Amazon Simple Storage Service

Amazon S3 ポリシーアクション

注記

このページでは、汎用バケットの Amazon S3 ポリシーアクションについて説明します。ディレクトリバケットの Amazon S3 ポリシーアクションの詳細については、「S3 Express One Zone 向けアクション」を参照してください。

Amazon S3 では、ポリシー内で指定できる一連のアクセス許可が定義されています。S3 API オペレーションを実行するアクセス許可を付与するには、有効なポリシー (S3 バケットポリシーや IAM アイデンティティベースのポリシーなど) を作成し、ポリシーの Action 要素で対応するアクションを指定する必要があります。これらのアクションはポリシーアクションと呼ばれます。以下に、S3 API オペレーションと必要なポリシーアクション間のさまざまなタイプのマッピング関係を示します。

  • 同じ名前の 1 対 1 のマッピング。例えば、 PutBucketPolicy API オペレーションを使用するには、s3:PutBucketPolicy ポリシーアクションが必要です。

  • 異なる名前の 1 対 1 のマッピング。例えば、 ListObjectsV2 API オペレーションを使用するには、s3:ListBucket ポリシーアクションが必要です。

  • 1 対多のマッピング。例えば、HeadObject API オペレーションを使用するには、s3:GetObject が必要です。また、S3 オブジェクトロックを使用し、オブジェクトのリーガルホールドステータスまたは保持設定を取得したい場合は、HeadObject API オペレーションを使用する前に、対応する s3:GetObjectLegalHold または s3:GetObjectRetention ポリシーアクションも必要です。

  • 1 対多のマッピング。例えば、ListObjectsV2 または HeadBucket API オペレーションを使用するには、s3:ListBucket ポリシーアクションが必要です。

Action 要素とは別に、有効な S3 バケットポリシーを作成するには、EffectPrincipal および Resource 要素も指定する必要があります。さらに、S3 API オペレーションをより細かく制御するには、Condition要素を指定できます。

Action 要素とは別に、有効な IAM アイデンティティベースのポリシーを作成するには、Effect および Resource 要素も指定する必要があります。有効な IAM アイデンティティベースのポリシーには、Principal 要素は含まれません。

Amazon S3 ポリシーアクションの完全なリストとポリシーで使用する条件キーについては、「サービス認証リファレンス」の「Amazon S3 のアクション、リソース、および条件キー」を参照してください。

ポリシーを作成するときは、対応する Amazon S3 ポリシーアクションに必要な正しいリソースタイプに基づいて、Resource 要素を指定する必要があります。このページでは、アクセス許可をリソースタイプ別に S3 API オペレーションに分類します。リソースタイプの詳細については、「サービス認可リファレンス」の「Amazon S3 で定義されるリソースタイプ」を参照してください。Amazon S3 API オペレーションの完全なリストについては、「Amazon Simple Storage Service API リファレンス」の「Amazon S3 API アクション」を参照してください。

バケットオペレーションは、バケットリソースタイプで動作する S3 API オペレーションです。例: CreateBucketListObjectsV2PutBucketPolicy。バケットオペレーションの S3 ポリシーアクションでは、バケットポリシーの Resource 要素または IAM アイデンティティベースのポリシーが、次の例形式の S3 バケットタイプの Amazon リソースネーム (ARN) 識別子である必要があります。

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"

次のバケットポリシーは、アカウント 12345678901 のユーザー AkuaListObjectsV2 API オペレーションを実行し、S3 バケット内のオブジェクトを一覧表示する s3:ListBucket アクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
アクセスポイントポリシーでのバケットオペレーション

アクセスポイントポリシーで付与されるアクセス許可は、基になるバケットで同じアクセス許可が許可される場合にのみ有効です。S3 アクセスポイントを使用する場合は、バケットからアクセスポイントにアクセスコントロールを委任するか、アクセスポイントポリシーで同じアクセス許可を基礎となるバケットのポリシーに追加する必要があります。詳細については、「アクセスポイントを使用するための IAM ポリシーの設定」を参照してください。アクセスポイントポリシーでは、バケットオペレーションの S3 ポリシーアクションで、次の形式の Resource 要素に accesspoint ARN を使用する必要があります。

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

次のアクセスポイントポリシーは、アカウント 12345678901 のユーザー Akua に、S3 アクセスポイント DOC-EXAMPLE-ACCESS-POINT を介して ListObjectsV2 API オペレーションを実行する s3:ListBucket アクセス許可を付与し、アクセスポイントに関連付けられたバケット内のオブジェクトを一覧表示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT" } ] }
注記

すべてのバケットオペレーションが S3 アクセスポイントでサポートされているわけではありません。詳細については、「S3 オペレーションとアクセスポイントの互換性」を参照してください。

オブジェクトオペレーションは、オブジェクトリソースタイプに基づいて実行される S3 API オペレーションです。例: GetObjectPutObjectDeleteObject。オブジェクトオペレーションの S3 ポリシーアクションでは、ポリシーの Resource 要素を次の例の形式で S3 オブジェクト ARN にする必要があります。

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/*"
注記

前の例に示すように、オブジェクト ARN にはバケット名の後にスラッシュが含まれている必要があります。

次のバケットポリシーは、アカウント 12345678901 のユーザー AkuaPutObject API オペレーションを実行し、S3 バケット内のオブジェクトを一覧表示する s3:PutObject アクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to upload objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
アクセスポイントポリシーでのオブジェクトオペレーション

S3 アクセスポイントを使用してオブジェクトオペレーションへのアクセスを制御する場合、アクセスポイントポリシーを使用できます。アクセスポイントポリシーを使用するとき、オブジェクトオペレーションの S3 ポリシーアクションで、arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource 形式の Resource 要素に accesspoint ARN を使用する必要があります。アクセスポイントを使用するオブジェクトオペレーションの場合、アクセスポイント ARN 全体の後に /object/ 値を Resource 要素に含める必要があります。次に例を示します。

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*"
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/prefix/*"

次のアクセスポイントポリシーは、アカウント 12345678901 のユーザー Akua に、アクセスポイント DOC-EXAMPLE-ACCESS-POINT を介してアクセスポイントに関連付けられたバケットのすべてのオブジェクトに対して GetObject API オペレーションを実行する s3:GetObject アクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to get objects through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*" } ] }
注記

すべてのオブジェクトオペレーションが S3 アクセスポイントでサポートされているわけではありません。詳細については、「S3 オペレーションとアクセスポイントの互換性」を参照してください。

アクセスポイントオペレーションは、accesspoint リソースタイプで動作する S3 API オペレーションです。例: CreateAccessPointDeleteAccessPointGetAccessPointPolicy。アクセスポイントオペレーションの S3 ポリシーアクションは、バケットポリシーやアクセスポイントポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。アクセスポイントオペレーションでは、Resource 要素を次の例の形式の accesspoint ARN にする必要があります。

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

次の IAM アイデンティティベースのポリシーは、S3 アクセスポイント DOC-EXAMPLE-ACCESS-POINTGetAccessPointPolicy API オペレーションを実行する s3:GetAccessPointPolicy アクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point DOC-EXAMPLE-ACCESS-POINT", "Effect": "Allow", "Action": [ "s3:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012:access point/DOC-EXAMPLE-ACCESS-POINT" } ] }

アクセスポイントを使用してバケットオペレーションへのアクセスを制御する場合は、「アクセスポイントポリシーでのバケットオペレーション」を参照してください。オブジェクトオペレーションへのアクセスを制御するには、「アクセスポイントポリシーでのオブジェクトオペレーション」を参照してください。アクセスポイントポリシーの設定方法の詳細については、「アクセスポイントを使用するための IAM ポリシーの設定」を参照してください。

Object Lambda アクセスポイントオペレーションのポリシーを設定する方法についての詳細は、「Object Lambda アクセスポイントの IAM ポリシーの設定」を参照してください。

マルチリージョンアクセスポイントオペレーションのポリシーを設定する方法の詳細については、「マルチリージョンアクセスポイントポリシーの例」を参照してください。

(バッチオペレーション) ジョブオペレーションは、ジョブリソースタイプで動作する S3 API オペレーションです。例えば、DescribeJobCreateJob です。ジョブオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。また、ジョブオペレーションでは、IAM アイデンティティベースのポリシーの Resource 要素を次の例の形式の job ARN にする必要があります。

"Resource": "arn:aws:s3:*:123456789012:job/*"

次の IAM アイデンティティベースのポリシーは、S3 バッチオペレーションジョブ DOC-EXAMPLE-JOB に対して DescribeJob API オペレーションを実行する s3:DescribeJob アクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow describing the Batch operation job DOC-EXAMPLE-JOB", "Effect": "Allow", "Action": [ "s3:DescribeJob" ], "Resource": "arn:aws:s3:*:123456789012:job/DOC-EXAMPLE-JOB" } ] }

S3 Storage Lens 設定オペレーションの設定方法の詳細については、「Amazon S3 ストレージレンズアクセス許可」を参照してください。

アカウントオペレーションは、アカウントレベルで実行される S3 API オペレーションです。例えば、GetPublicAccessBlock (アカウント用) です。アカウントは、Amazon S3 で定義されるリソースタイプではありません。アカウントオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。また、アカウントオペレーションでは、IAM アイデンティティベースのポリシーの Resource 要素が "*" である必要があります。

次の IAM アイデンティティベースのポリシーは、アカウントレベルの GetPublicAccessBlock API オペレーションを実行し、アカウントレベルのパブリックアクセスブロック設定を取得する s3:GetAccountPublicAccessBlock アクセス許可を付与します。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"Allow retrieving the account-level Public Access Block settings", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }