Amazon S3 のアクション - Amazon Simple Storage Service

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:PutObjects3: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:CreateBuckets3:ListAllMyBucketss3: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:DeleteObjects3:DeleteObjectVersion、および s3:PutLifecycleConfiguration のアクセス許可を明示的に拒否する必要があります。

明示的な拒否

デフォルトでは、ユーザーには一切のアクセス許可がありません。ただし、ユーザーを作成し、グループにユーザーを追加してアクセス許可を付与すると、意図していないアクセス許可が付与される可能性があります。このようなアクセス許可の抜け穴を避けるには、明示的な拒否を追加して、より厳格なアクセスポリシーを記述する必要があります。

前述のバケットポリシーは、s3:GetBucketAcl 許可DOC-EXAMPLE-BUCKET1 バケットをユーザー Dave に付与します。この例では、ユーザー Dave の DELETE オブジェクトの許可を明示的に拒否します。明示的な拒否は、付与されている他のアクセス許可に常に優先されます。以下は、明示的な拒否が追加された、改訂済みアクセスポリシーの例です。

{ "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:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] } ] }

以下のユーザーポリシーの例では、ユーザーに s3:GetAccountPublicAccessBlock のアクセス許可を付与します。これらのアクセス許可については、Resource 値を "*" に設定します。詳細については、Amazon S3 のリソース を参照してください。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }