• 検索結果がありません。

バケットとグループのアクセス ポリシー

StorageGRID Webscaleシステムには、バケットとそれらのバケット内のオブジェクトへのア

クセスを制御するのに使用できるS3 REST APIポリシー言語のサブセットが実装されていま す。

概要

StorageGRID Webscaleでは、Amazon Web Services(AWS)のポリシー言語構文を使用してS3 テナントのデータへのアクセスポリシーを作成できます。S3 APIのアクセスポリシーは JSON形式で記述されます。StorageGRID Webscaleでは2種類のアクセスポリシーがサポート されています。

バケットポリシーは、GET Bucket policy、PUT Bucket policy、DELETE Bucket policyの各

S3 API処理を使用して設定されます。バケットポリシーはバケットに関連付けられ、バ

ケットとそのオブジェクトへのバケット所有者アカウントやその他のアカウントのユー ザによるアクセスを制御するために使用されます。バケットポリシーは1つのバケット にのみ適用され、場合によっては複数のグループに適用されます。

グループポリシーは、テナント管理インターフェイスまたはテナント管理APIを使用し て設定されます。グループポリシーはアカウントの特定のグループに関連付けられ、そ のアカウントが所有する特定のリソースへのアクセスをそのグループに許可するために 使用されます。グループポリシーは1つのグループにのみ適用され、場合によっては複数 のバケットに適用されます。

StorageGRID Webscaleのバケットとグループのポリシーは、Amazonが定義している特定の文

法に従って記述されます。各ポリシーは一連のステートメントからなり、それぞれのステー トメントは次の要素で構成されます。

• Sid(ステートメントID)(オプション)

• Effect

• Principal / NotPrincipal

• Action / NotAction

• Condition(オプション)

これらの要素を使用して、次の構文に従って権限を指定するポリシーステートメントが構 築されます。<Effect>を付与して、<Condition>に該当する場合に<Principal>に<Resource>に 対する<Action>の実行を許可または拒否します。

ポリシーの各要素の説明を次に示します。

要素 説明

Sid Sid要素はオプションです。Sidはユーザに対する説明としてのみ使 用されます。StorageGRID Webscaleシステムに格納はされますが、シ ステムで解釈されません。

Effect Effect要素では、指定した処理を許可するか拒否するかを指定します。

Action要素でサポートされるキーワードを使用して、バケットまたは

オブジェクトで許可(または拒否)する処理を指定する必要がありま す。

Principal / NotPrincipal

ユーザ、グループ、またはアカウントを指定して、特定のリソースへ のアクセスや特定の処理の実行を許可できます。要求にS3の署名が 含まれていない場合は、ワイルドカード文字(*)をプリンシパルと して指定することで匿名アクセスが許可されます。デフォルトでは、

アカウントが所有するリソースへのアクセスはrootアカウントにの み許可されます。

Principal要素を指定する必要があるのはバケットポリシーだけです。

グループポリシーの場合は、ポリシーが関連付けられたグループが 暗黙的にプリンシパルになります。

Resource / NotResource

Resource要素では、バケットおよびオブジェクトを指定します。

Uniform Resource Name(URN)を使用してリソースを指定して、バ ケットやオブジェクトに対する権限を許可または拒否することがで きます。

Action / NotAction 権限はAction要素とEffect要素の2つで構成されます。グループがリ ソースを要求すると、権限に基づいてリソースへのアクセスが許可ま たは拒否されます。権限を明示的に割り当てていなければアクセス は拒否されますが、明示的な拒否を使用して別のポリシーで付与され た権限を拒否することもできます。

Condition Condition要素はオプションです。ポリシーを適用する条件を示す式

を作成できます。

Action要素では、ワイルドカード文字(*)を使用してすべての処理や処理のサブセットを

指定できます。たとえば、次のActionの値は、s3:GetObject、s3:PutObject、s3:DeleteObjectな どの権限に一致します。

s3:*Object

Resource要素では、ワイルドカード文字の「*」と「?」を使用できます。アスタリスク(*)

は0文字以上の文字に一致し、疑問符(?)は任意の1文字に一致します。

ワイルドカード文字はサポートされません。Principalの値としてワイルドカード(*)を設定 する例を次に示します。

"Principal":"*"

次に、Effect、Principal、Action、およびResourceの各要素を使用して記述したステートメン トの例を示します。このバケットポリシーのステートメントでは、Effectで「Allow」を指定 して、Principalで指定したadminグループ(federated-group/admin)とfinanceグループ

federated-group/finance)に、「mybucket」という名前のバケットに対する

s3:ListBucket処理とそのバケット内のすべてのオブジェクトに対するs3:GetObject処理 を実行する権限を付与しています。

{

"Statement": [ {

"Effect": "Allow", "Principal": { "SGWS": [

"urn:sgws:identity::27233906934684427525:federated-group/admin", "urn:sgws:identity::27233906934684427525:federated-group/finance"

] },

"Action": [ "s3:ListBucket", "s3:GetObject"

],

"Resource": [

"urn:sgws:s3:::mybucket", "urn:sgws:s3:::mybucket/*"

] } ] }

バケットポリシーのサイズの上限は20,480バイトで、グループポリシーのサイズの上限は 5,120バイトです。

ポリシーの整合性制御設定

デフォルトでは、グループポリシーに対するすべての更新の整合性レベルは結果整合性で す。グループポリシーが整合した状態になっても、ポリシーキャッシュのために、変更が 有効になるまでさらに15分を要することがあります。

デフォルトでは、バケットポリシーに対するすべての更新の整合性レベルも結果整合性で す。ただし、バケットポリシーの更新の整合性保証は必要に応じて変更できます。たとえ ば、セキュリティ上の理由から、できるだけ速やかにバケットポリシーの変更を有効にし なければならない場合があります。

その場合は、PUT Bucket policy要求でConsistency-Controlヘッダーを設定するか、PUT

Bucket consistency要求を使用します。この要求で整合性制御を変更する場合は、値「all」を

使用して最高レベルのリードアフターライト整合性を保証する必要があります。それ以外 の整合性制御値をPUT Bucket consistency要求のヘッダーで指定すると、要求は拒否されま

す。PUT Bucket policy要求でそれ以外の値を指定した場合は、値が無視されます。バケット

ポリシーが整合した状態になっても、ポリシーキャッシュのために、変更が有効になるま でさらに8秒を要することがあります。

注:新しいバケットポリシーを速やかに有効にするために整合性制御レベルを「all」に設 定する場合は、処理が完了したあとに必ずバケットレベルの制御を元の値に戻してくださ い。そうしないと、それ以降のすべてのバケット要求で「all」の設定が使用されます。

ポリシーステートメントでは、Principal要素とResource要素で次のようにしてURNを使用し ます。

• S3リソースのURNの指定には次の構文を使用します。

urn:sgws:s3:::bucket_name

urn:sgws:s3:::bucket_name/object_key

• アイデンティティリソースのURN(ユーザおよびグループ)の指定には次の構文を使用 します。

urn:SGWS:ID::account_id:root

urn:sgws:identity::account_id:user/user_name urn:sgws:identity::account_id:group/group_name

urn:sgws:identity::account_id:federated-user/user_name urn:sgws:identity::account_id:federated-group/group_name その他の考慮事項:

• オブジェクトキーの一部にワイルドカードとしてアスタリスク(*)を使用できます。ア スタリスクは0文字以上の文字に一致します。

• オブジェクトキーで指定できる国際文字は、JSON UTF-8形式またはJSON \uエスケープ シーケンスを使用してエンコードする必要があります。パーセントエンコーディング

(「RFC 2141 URN Syntax」を参照)はサポートされていません。

PUT Bucket policy処理のHTTP要求の本文は、charset=UTF-8でエンコードする必要があり ます。

ポリシーでのリソースの指定

ポリシーステートメントでは、Resource要素を使用して、権限を許可または拒否するバケッ トやオブジェクトを指定できます。

• Resource要素はポリシーの各ステートメントに必要です。ポリシーでは、「Resource」要

素または「NotResource」要素(除外の場合)でリソースを指定します。

• リソースはS3リソースのURNで指定します。

次に例を示します。

"Resource": "urn:sgws:s3:::mybucket/*"

• オブジェクトキーの一部にポリシー変数を使用することもできます。

例:

"Resource": "urn:sgws:s3:::mybucket/home/${sgws:username}/*"

使用できるポリシー変数のリストについては、ポリシーでの変数の指定(62ページ)を 参照してください。

• グループポリシーの作成時は、まだ存在しないバケットもリソースの値で指定すること ができます。

ポリシーでのプリンシパルの指定

ポリシーステートメントでリソースへのアクセスを許可または拒否するユーザ、グループ、

またはテナントアカウントを指定するには、Principal要素を使用します。

なされるため、Principal要素は指定されません。

• Principal要素はポリシーの各ステートメントに含める必要があります(グループポリ

シーの場合は除く)。ポリシーでは、「Principal」要素または「NotPrincipal」要素(除外の 場合)でプリンシパルを指定します。

• IDまたはURNを使用してアカウントベースのアイデンティティを指定する必要がありま す。

"Principal": { "SGWS": "account_id"}

"Principal": { "SGWS": "identity_urn" }

• 次の例では、テナントアカウントID 27233906934684427525を使用しています。この場 合、rootアカウントとそのすべてのユーザが含まれます。

"Principal": { "SGWS": "27233906934684427525" }

• rootアカウントのみを指定する場合は次のようになります。

"Principal": { "SGWS": "urn:sgws:identity::

27233906934684427525:root" }

• 特定のフェデレーションユーザ(「Bob」)のみを指定する場合は次のようになります。

"Principal": { "SGWS": "urn:sgws:identity::

27233906934684427525:federated-user/Bob" }

• 特定のフェデレーショングループ(「Managers」)のみを指定する場合は次のようになり ます。

"Principal": { "SGWS": "urn:sgws:identity::

27233906934684427525:federated-group/Managers" }

• 匿名プリンシパルを指定する場合は次のようになります。

"Principal": "*"

• Bobが組織を離れてユーザ名Bobを削除したあとに、新たに加わったBobに同じユーザ名 Bobを割り当てた場合、以前に在籍していたBobに付与されていた権限が意図せずに継承 されることがあります。このようなあいまいさを排除するために、ユーザ名の代わりに UUIDを使用できます。次に例を示します。

urn:sgws:identity::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013

• グループポリシーの作成時は、まだ存在しないグループやユーザの名前もプリンシパル の値で指定することができます。

ポリシーでの権限の指定

ポリシーでは、Action要素を使用してリソースに対する権限を許可または拒否します。ポリ シーで指定できる一連の権限が用意されており、それらを「Action」要素または

「NotAction」要素(除外の場合)で指定します。それぞれがS3 REST APIの特定の処理に対

応しています。

関連したドキュメント