デフォルトのONTAP S3バケットポリシーにアクセスルールを追加する
デフォルトのバケット ポリシーにアクセス ルールを追加できます。デフォルト ポリシーのアクセス制御対象は対応するバケットであるため、バケットが1つだけの場合はデフォルト ポリシーが最も適しています。
S3サーバとバケットを含むS3対応のStorage VMがすでに存在している必要があります。
権限を付与するには、事前にユーザまたはグループを作成しておく必要があります。
新しいユーザーやグループに新しいステートメントを追加したり、既存のステートメントの属性を変更したりできます。 `vserver object-store-server bucket policy`の詳細については、"ONTAPコマンド リファレンス"をご覧ください。
ユーザとグループの権限は、バケットの作成時、または必要に応じてあとから付与することができます。バケットの容量やQoSポリシー グループの割り当ても変更できます。
ONTAP 9.9.1 以降、ONTAP S3 サーバで AWS クライアントオブジェクトのタグ付け機能をサポートする予定の場合は、 GetObjectTagging、 PutObjectTagging、および `DeleteObjectTagging`のアクションをバケットまたはグループポリシーを使用して許可する必要があります。
実行する手順は、System ManagerとCLIのどちらのインターフェイスを使用するかによって異なります。
-
バケットを編集するには、「ストレージ > バケット」をクリックし、対象のバケットをクリックして「編集」をクリックします。権限を追加または変更する際には、以下のパラメータを指定できます:
-
プリンシパル:アクセスが許可されるユーザーまたはグループ。
-
効果:ユーザーまたはグループへのアクセスを許可または拒否します。
-
アクション:特定のユーザーまたはグループに対してバケット内で許可されるアクション。
-
リソース:アクセスが許可または拒否されるバケット内のオブジェクトのパスと名前。
デフォルトの bucketname と bucketname/* は、バケット内のすべてのオブジェクトへのアクセスを許可します。また、単一のオブジェクトへのアクセスを許可することもできます。たとえば、bucketname/*_readme.txt などです。
-
条件(オプション):アクセス試行時に評価される条件式。例えば、アクセスを許可または拒否する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 つ以上のリストを指定することもできます: `GetObject, PutObject, DeleteObject, ListBucket, GetBucketAcl,GetObjectAcl, ListBucketMultipartUploads,`および `ListMultipartUploadParts`。
-principalS3ユーザまたはグループのリストを指定します。
-
指定できるユーザまたはグループの数は最大10個までです。
-
S3グループを指定する場合は、次の形式にする必要があります
group/group_name. -
`*`を指定すると、パブリックアクセス(アクセスキーとシークレットキーなしでのアクセス)を意味します。
-
プリンシパルが指定されていない場合は、ストレージ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以降では、バケットポリシーに変数を指定できます。次の例では、ストレージVM `svm1`と `bucket1`のサーババケットポリシーステートメントを作成し、 `${aws:username}`をポリシーリソースの変数として指定します。ポリシーが評価されると、ポリシー変数はリクエストコンテキストのユーザー名に置き換えられ、そのユーザーに対して設定されたポリシーアクションを実行できます。たとえば、次のポリシーステートメントが評価されると、 `${aws:username}`はS3操作を実行するユーザーに置き換えられます。ユーザー `user1`が操作を実行すると、そのユーザーには `bucket1`として `bucket1/user1/*`へのアクセスが許可されます。
cluster1::> object-store-server bucket policy statement create -vserver svm1 -bucket bucket1 -effect allow -action * -principal - -resource bucket1,bucket1/${aws:username}/*##