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