Amazon S3 のアクション
Amazon S3 では、ポリシー内で指定できる一連のアクセス許可が定義されています。これらはそれぞれ、Amazon S3 の特定のオペレーションに対応するキーワードです。Amazon S3 のオペレーションの詳細については、Amazon Simple Storage Service API リファレンスの Actions を参照してください。
Amazon S3 のポリシーでアクセス許可を指定する方法については、以下のポリシーの例を参照してください。Amazon S3 のポリシーで使用できるアクション、リソース、条件キーの一覧については、Amazon S3 のアクション、リソース、条件キー を参照してください。Amazon S3 のアクションの一覧については、Actions を参照してください。
例 — オブジェクトオペレーション
以下のバケットポリシーの例では、ユーザー (Dave) に s3:PutObject
と s3:PutObjectAcl
のアクセス許可を付与します。Principal
エレメントを削除すれば、ユーザーにポリシーをアタッチできます。これらはオブジェクトオペレーションです。それに従って、relative-id
の ARN の Resource
の部分はオブジェクト (awsexamplebucket1/*
) を識別します。詳細については、Amazon S3 のリソース を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Dave" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
awsexamplebucket1
/*" } ] }
Amazon S3 のすべてのアクションのアクセス許可
ワイルドカードを使用して、Amazon S3 のすべてのアクションのアクセス許可を付与することもできます。
"Action": "*"
例 — バケットオペレーション
以下のユーザーポリシーの例では、ユーザーに s3:CreateBucket
、s3:ListAllMyBuckets
、s3:GetBucketLocation
のアクセス許可を付与します。これらすべてのアクセス許可について、Resource
ARN の relative-id
部分を「*」に設定します。その他のすべてのバケットアクションには、バケット名を指定する必要があります。詳細については、Amazon S3 のリソース を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:CreateBucket", "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::*" ] } ] }
コンソールアクセスのポリシー
ユーザーが AWS Management Console を使用してバケットやそれらのいずれかのバケット内容を表示する場合、s3:ListAllMyBuckets
および s3:GetBucketLocation
アクセス許可が必要です。例については、ブログ記事のWriting IAM Policies: How to Grant Access to an Amazon S3 Bucket」の Policy for Console Access
例 — バケットサブリソースオペレーション
以下のユーザーポリシーは、ユーザー Dave に
バケットに対する DOC-EXAMPLE-BUCKET1
s3:GetBucketAcl
の許可を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": [ "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::" ] } ] }
DOC-EXAMPLE-BUCKET1
オブジェクト削除のアクセス許可
オブジェクトを削除するには、明示的に DELETE Object API を呼び出すか、オブジェクトのライフサイクルを設定して (「ストレージのライフサイクルの管理」を参照)、有効期限が過ぎたオブジェクトを Amazon S3 が削除できるようにします。ユーザーやアカウントがオブジェクトを削除することを明示的に禁止する場合は、s3:DeleteObject
、s3:DeleteObjectVersion
、および s3:PutLifecycleConfiguration
のアクセス許可を明示的に拒否する必要があります。
明示的な拒否
デフォルトでは、ユーザーには一切のアクセス許可がありません。ただし、ユーザーを作成し、グループにユーザーを追加してアクセス許可を付与すると、意図していないアクセス許可が付与される可能性があります。このようなアクセス許可の抜け穴を避けるには、明示的な拒否を追加して、より厳格なアクセスポリシーを記述する必要があります。
前述のバケットポリシーは、s3:GetBucketAcl
許可
バケットをユーザー Dave に付与します。この例では、ユーザー Dave の DELETE オブジェクトの許可を明示的に拒否します。明示的な拒否は、付与されている他のアクセス許可に常に優先されます。以下は、明示的な拒否が追加された、改訂済みアクセスポリシーの例です。DOC-EXAMPLE-BUCKET1
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
DOC-EXAMPLE-BUCKET1
/*123456789012
:user/Dave" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
" ] } ] }
DOC-EXAMPLE-BUCKET1
/*
例 — アカウントオペレーション
以下のユーザーポリシーの例では、ユーザーに s3:GetAccountPublicAccessBlock
のアクセス許可を付与します。これらのアクセス許可については、Resource
値を "*"
に設定します。詳細については、Amazon S3 のリソース を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }