バケットポリシーでは、そのポリシーが関連付けられたバケットに対するアクセス権限を 指定します。バケットポリシーは、S3 PutBucketPolicy APIを使用して設定します。
バケットポリシーを設定するには、AWS CLIで次のコマンドを使用します。
> aws s3api put-bucket-policy --bucket examplebucket --policy file://
policy.json
例:すべてのユーザにバケットへの読み取り専用アクセスを許可する
この例では、匿名ユーザを含むすべてのユーザにバケット内のオブジェクトのリスト とバケット内のすべてのオブジェクトのGet Object処理を許可しています。それ以外 の処理はすべて拒否されます。バケットへの書き込みがrootアカウントにしか許可さ れないため、このポリシーは限定的な状況でしか使用されないことに注意してくださ い。
{
"Statement": [ {
"Sid": "AllowEveryoneReadOnlyAccess", "Effect": "Allow",
"Principal": "*",
"Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource":
["urn:sgws:s3:::examplebucket","urn:sgws:s3:::examplebucket/*"]
} ] }
例:特定のアカウントのすべてのユーザにフルアクセスを許可し、別のアカウントの すべてのユーザにバケットへの読み取り専用アクセスを許可する
この例では、指定したアカウントのすべてのユーザにバケットへのフルアクセスを許 可しています。さらに、アカウントをもう1つ指定し、そのアカウントのすべてのユー ザには、バケットのList処理と「shared/」というオブジェクトキープレフィックスで 始まるバケット内のオブジェクトのGet処理のみを許可しています。
注:StorageGRID Webscaleでは、非所有者アカウント(匿名アカウントを含む)に
よって作成されたオブジェクトが、バケット所有者アカウントによって所有されま す。これらのオブジェクトにはバケットポリシーが適用されます。
{
"Statement": [ {
"Effect": "Allow", "Principal": {
"SGWS": "95390887230002558202"
},
"Action": "s3:*", "Resource": [
"urn:sgws:s3:::examplebucket/*"
] }, {
"Effect": "Allow", "Principal": {
"SGWS": "31181711887329436680"
},
"Action": "s3:GetObject",
"Resource": "urn:sgws:s3:::examplebucket/shared/*"
}, {
"Effect": "Allow", "Principal": {
"SGWS": "31181711887329436680"
},
"Action": "s3:ListBucket",
"Resource": "urn:sgws:s3:::examplebucket", "Condition": {
"StringLike": {
"s3:prefix": "shared/*"
} } } ] }
例:すべてのユーザにバケットへの読み取り専用アクセスを許可し、指定したグルー プにフルアクセスを許可する
この例では、指定したアカウントの匿名ユーザを含むすべてのユーザにバケットのList 処理とバケット内のすべてのオブジェクトのGET Object処理を許可し、そのうちの
Marketingグループに属するユーザにのみフルアクセスを許可しています。
{
"Statement": [ {
"Effect": "Allow", "Principal": {
"SGWS": "urn:sgws:identity::95390887230002558202:federated-group/
Marketing"
},
"Action": "s3:*", "Resource": [
"urn:sgws:s3:::examplebucket", "urn:sgws:s3:::examplebucket/*"
] }, {
"Effect": "Allow", "Principal": "*",
"Action": ["s3:ListBucket","s3:GetObject"], "Resource": [
"urn:sgws:s3:::examplebucket", "urn:sgws:s3:::examplebucket/*"
] } ] }
例:クライアントのIP範囲を限定して、すべてのユーザにバケットへの読み取り / 書 き込みアクセスを許可する
この例では、指定したIP範囲(54.240.143.0~54.240.143.255で54.240.143.188を除く)か らの要求についてのみ、匿名ユーザを含むすべてのユーザにバケットのList処理とバ ケット内のすべてのオブジェクトの全処理を許可しています。それ以外の処理やIP範 囲外からの要求はすべて拒否されます。
10.4以降)でのみサポートされます。
{
"Statement": [ {
"Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange", "Effect": "Allow",
"Principal": "*",
"Action": [ "s3:*Object", "s3:ListBucket" ], "Resource":
["urn:sgws:s3:::examplebucket","urn:sgws:s3:::examplebucket/*"], "Condition": {
"IpAddress": {"sgws:SourceIp": "54.240.143.0/24"}, "NotIpAddress": {"sgws:SourceIp": "54.240.143.188"}
} } ] }
例:指定したフェデレーションユーザにのみバケットへのフルアクセスを許可する この例では、Bobというフェデレーションユーザにexamplebucketバケットとそのオ ブジェクトへのフルアクセスを許可しています。「root」を含む他のユーザについて は、すべての処理を明示的に拒否しています。ただし、この場合も「root」によるPut/
Get/DeleteBucketPolicyは拒否されません。
{
"Statement": [ {
"Effect": "Allow", "Principal": {
"SGWS": "urn:sgws:identity::95390887230002558202:federated-user/Bob"
},
"Action": [ "s3:*"
],
"Resource": [
"urn:sgws:s3:::examplebucket", "urn:sgws:s3:::examplebucket/*"
] }, {
"Effect": "Deny", "NotPrincipal": {
"SGWS": "urn:sgws:identity::95390887230002558202:federated-user/Bob"
},
"Action": [ "s3:*"
],
"Resource": [
"urn:sgws:s3:::examplebucket", "urn:sgws:s3:::examplebucket/*"
] } ] }
関連概念
バケットの処理(21ページ)