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 バケットポリシーを作成するには、Effect
、Principal
および 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 オペレーションです。例: CreateBucket
、ListObjectsV2
、PutBucketPolicy
。バケットオペレーションの S3 ポリシーアクションでは、バケットポリシーの Resource
要素または IAM アイデンティティベースのポリシーが、次の例形式の S3 バケットタイプの Amazon リソースネーム (ARN) 識別子である必要があります。
"Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
"
次のバケットポリシーは、アカウント 12345678901
のユーザー Akua
に ListObjectsV2 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 オペレーションです。例: GetObject
、PutObject
、DeleteObject
。オブジェクトオペレーションの S3 ポリシーアクションでは、ポリシーの Resource
要素を次の例の形式で S3 オブジェクト ARN にする必要があります。
"Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/*"
"Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/prefix
/*"
注記
前の例に示すように、オブジェクト ARN にはバケット名の後にスラッシュが含まれている必要があります。
次のバケットポリシーは、アカウント 12345678901
のユーザー Akua
に PutObject 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 オペレーションです。例: CreateAccessPoint
、DeleteAccessPoint
、GetAccessPointPolicy
。アクセスポイントオペレーションの S3 ポリシーアクションは、バケットポリシーやアクセスポイントポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。アクセスポイントオペレーションでは、Resource
要素を次の例の形式の accesspoint
ARN にする必要があります。
"Resource": "arn:aws:s3:us-west-2:
123456789012
:accesspoint/DOC-EXAMPLE-ACCESS-POINT
"
次の IAM アイデンティティベースのポリシーは、S3 アクセスポイント DOC-EXAMPLE-ACCESS-POINT
で GetAccessPointPolicy 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 アクセスポイントオペレーションのポリシーを設定する方法についての詳細は、「Object Lambda アクセスポイントの IAM ポリシーの設定」を参照してください。
マルチリージョンアクセスポイントオペレーション
マルチリージョンアクセスポイントオペレーションのポリシーを設定する方法の詳細については、「マルチリージョンアクセスポイントポリシーの例」を参照してください。
バッチジョブオペレーション
(バッチオペレーション) ジョブオペレーションは、ジョブリソースタイプで動作する S3 API オペレーションです。例えば、DescribeJob
と CreateJob
です。ジョブオペレーションの 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 設定オペレーション
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":[ "*" ] } ] }