者アカウント(匿名 アカウントを含む)
にオブジェクトを PUTする権限を付 与する
バケット 有効。オブジェクトは作成 者アカウントによって所有 され、バケットポリシーは 適用されない。作成者アカ ウントは、オブジェクトの ACLを使用してオブジェク トにアクセス権限を付与す る必要がある
有効。オブジェクトはバ ケット所有者アカウント によって所有され、バ ケットポリシーが適用 される
関連概念
Write-Once-Read-Many(WORM)による保護(70ページ)
関連情報
StorageGRID Webscaleの管理
ポリシーの例
このセクションでは、StorageGRID Webscaleのバケットとグループのアクセスポリシーを作 成する例を示します。
バケットポリシーの例
バケットポリシーでは、そのポリシーが関連付けられたバケットに対するアクセス権限を 指定します。バケットポリシーは、S3 PutBucketPolicy APIを使用して設定します。
バケットポリシーを設定するには、AWS CLIで次のコマンドを使用します。
> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json
例:すべてのユーザにバケットへの読み取り専用アクセスを許可する
この例では、匿名ユーザを含むすべてのユーザにバケットのList処理とバケット内のす べてのオブジェクトのGet処理を許可しています。それ以外の処理はすべて拒否され
は限定的な状況でしか使用されないことに注意してください。
{
"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", "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処理を許可し、そのうちの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範 囲外からの要求はすべて拒否されます。
注:「Condition」キーワードは、テナント管理インターフェイス(StorageGRID Webscale バージョン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": [
"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/*"
] } ] }
グループポリシーの例
グループポリシーでは、そのポリシーが関連付けられたグループに対するアクセス権限を 指定します。プリンシパルは暗黙的に決まるため、このポリシーにはPrincipal要素はあり ません。グループポリシーは、テナント管理インターフェイスまたはAPIを使用して設定し ます。
例:テナント管理インターフェイスを使用したグループポリシーの設定
テナント管理インターフェイスを使用してグループを追加または編集する場合は、[S3
Policy]ダイアログボックスで有効なJSON形式の文字列を使用してグループポリシー
を作成および更新します。
この例では、バケットポリシーで明示的に拒否されている場合を除き、グループのす べてのメンバーにテナントアカウント所有のすべてのバケットへのフルアクセスが 許可されます。
{
"Statement": [ {
"Action": "s3:*", "Effect": "Allow",
"Resource": "urn:sgws:s3:::*"
} ] }
例:グループにすべてのバケットへの読み取り専用アクセスを許可する
この例では、バケットポリシーで明示的に拒否されている場合を除き、グループのす べてのメンバーにすべてのバケットへの読み取り専用アクセスが許可されます。この アカウントで所有しているバケットへのアクセスは、ターゲットバケットポリシーで 明示的に拒否されていない場合に限り許可されます。
{
"Statement": [ {
"Sid": "AllowGroupReadOnlyAccess", "Effect": "Allow",
"Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetObject" ], "Resource": "urn:sgws:s3:::*"
} ] }
例:グループメンバーにバケット内の各自の「フォルダ」のみへのフルアクセスを許 可する
この例では、指定したバケット内の固有のフォルダ(キープレフィックス)の参照と アクセスだけがグループのメンバーに許可されます。それらのフォルダのプライバ シー設定を決めるときは、他のグループポリシーやバケットポリシーのアクセス権限 を考慮する必要があることに注意してください。
注:「Condition」キーワードとsgws:username変数は、テナント管理インターフェイ
ス(StorageGRID Webscaleバージョン10.4以降)でのみサポートされます。
{
"Statement": [ {
"Sid": "AllowListBucketOfASpecificUserPrefix", "Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "urn:sgws:s3:::department_bucket", "Condition": {
"StringLike": {
"s3:prefix": "${sgws:username}/*"
} } }, {
"Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix", "Effect": "Allow",
"Action": "s3:*Object",
"Resource": "urn:sgws:s3:::department_bucket/${sgws:username}/*"
} ] }
この例では、PutOverwriteObjectとDeleteObjectのEffectをDenyに設定して、オブジェク トのデータとメタデータが削除または変更されないように保護しています。
詳細については、PutOverwriteObject権限の使用(60ページ)および Write-Once-Read-Many(WORM)による保護(70ページ)を参照してください。
{
"Sid": "WORMExamplePolicy",
"Effect": "Deny",
"Action": ["s3:PutOverwriteObject", "s3:DeleteObject"],
"Resource": ["urn:sgws:s3:::*"], }