バケットポリシーを変更する
デフォルトのバケットポリシーにアクセスルールを追加できます。アクセス制御の範囲は包含バケットであるため、バケットが1つの場合に最も適しています。
S3サーバとバケットを含むS3対応Storage VMがすでに存在している必要があります。
権限を付与するには、事前にユーザまたはグループを作成しておく必要があります。
新しいユーザとグループの新しいステートメントを追加したり、既存のステートメントの属性を変更したりできます。詳細については、のマニュアルページを参照して `vserver object-store-server bucket policy`ください。
ユーザ権限とグループ権限は、バケットの作成時に付与することも、あとで必要に応じて付与することもできます。バケット容量やQoSポリシーグループの割り当てを変更することもできます。
ONTAP 9 .9.1以降では、ONTAP S3サーバでAWSクライアントオブジェクトのタグ付け機能をサポートする場合は、バケットポリシーまたはグループポリシーを使用して、および `PutObjectTagging`の `DeleteObjectTagging`操作を `GetObjectTagging`許可する必要があります。
実行する手順は、使用するインターフェイス(System ManagerまたはCLI)によって異なります。
-
バケットを編集します。 * Storage > Bucket* をクリックし、目的のバケットをクリックして * Edit * をクリックします。権限を追加または変更するときは、次のパラメータを指定できます。
-
* Principal *:アクセス権を付与するユーザまたはグループ。
-
影響:ユーザまたはグループへのアクセスを許可または拒否します。
-
* Actions *:特定のユーザまたはグループに対してバケットで許可されているアクション。
-
* Resources *:アクセスが許可または拒否されているバケット内のオブジェクトのパスと名前。
デフォルトの * bucketname* および * bketname / * _ * は、バケット内のすべてのオブジェクトへのアクセスを許可します。また、単一のオブジェクトへのアクセスを許可することもできます。たとえば、 *_bketname/*_readme.txt * と指定します。
-
* Conditions *(オプション):アクセス試行時に評価される式。たとえば、アクセスを許可または拒否するIPアドレスのリストを指定できます。
-
ONTAP 9.14.1以降では、* Resources *フィールドでバケットポリシーの変数を指定できます。これらの変数はプレースホルダであり、ポリシーの評価時にコンテキスト値に置き換えられます。たとえば、がポリシーの変数として指定されている場合 ${aws:username} 、この変数は要求コンテキストのユーザ名に置き換えられ、そのユーザに対して設定されたポリシーアクションを実行できます。
|
-
バケットポリシーにステートメントを追加します。
vserver object-store-server bucket policy add-statement -vserver svm_name -bucket bucket_name -effect {allow|deny} -action object_store_actions -principal user_and_group_names -resource object_store_resources [-sid text] [-index integer]
次のパラメータでアクセス権限を定義します。
-effect
アクセスを許可するか拒否するかを指定します。
-action
すべてのアクションを指定するか、または次の1つ以上のリストを指定できます
*
。およびListMultipartUploadParts
。GetObject, PutObject, DeleteObject, ListBucket, GetBucketAcl,GetObjectAcl, ListBucketMultipartUploads,
-principal
S3ユーザまたはグループのリスト。
-
最大10個のユーザまたはグループを指定できます。
-
S3グループを指定する場合は、次の形式で指定する必要があります。
group/group_name.
-
`*`には、パブリックアクセス(アクセスキーとシークレットキーを使用しないアクセス)を指定できます。
-
プリンシパルを指定しない場合、Storage VM内のすべてのS3ユーザにアクセスが許可されます。
-resource
バケットとバケットに含まれるオブジェクト。ワイルドカード文字とを `?`使用 `*`して、リソースを指定するための正規表現を作成できます。リソースについては、ポリシーで変数を指定できます。これらのポリシー変数はプレースホルダであり、ポリシーの評価時にコンテキストに応じた値に置き換えられます。
オプションを使用して、テキスト文字列をコメントとして指定することもできます
-sid
。 -
次の例では、Storage VM svm1.example.comとbucket1に対するオブジェクトストアサーババケットポリシーのステートメントを作成し、オブジェクトストアサーバユーザuser1にreadmeフォルダへのアクセスを許可するように指定しています。
cluster1::> vserver object-store-server bucket policy statement create -vserver svm1.example.com -bucket bucket1 -effect allow -action GetObject,PutObject,DeleteObject,ListBucket -principal user1 -resource bucket1/readme/* -sid "fullAccessToReadmeForUser1"
次の例では、Storage VM svm1.example.comとbucket1に対するオブジェクトストアサーババケットポリシーのステートメントを作成し、オブジェクトストアサーバグループgroup1にすべてのオブジェクトへのアクセスを許可するように指定しています。
cluster1::> vserver object-store-server bucket policy statement create -vserver svm1.example.com -bucket bucket1 -effect allow -action GetObject,PutObject,DeleteObject,ListBucket -principal group/group1 -resource bucket1/* -sid "fullAccessForGroup1"
ONTAP 9 .14.1以降では、バケットポリシーの変数を指定できます。次の例は、Storage VMとの bucket1`サーババケットポリシーステートメントを作成し `svm1
、ポリシーリソースの変数としてを指定します ${aws:username}
。ポリシーが評価されると、ポリシー変数は要求コンテキストのユーザ名に置き換えられ、そのユーザに対して設定されたとおりにポリシーアクションを実行できます。たとえば、次のポリシーステートメントが評価されると ${aws:username}
、はS3処理を実行するユーザに置き換えられます。ユーザ `user1`が操作を実行すると、そのユーザにはAS `bucket1/user1/*`へのアクセスが許可され `bucket1`ます。
cluster1::> object-store-server bucket policy statement create -vserver svm1 -bucket bucket1 -effect allow -action * -principal - -resource bucket1,bucket1/${aws:username}/*##