バケットとグループのアクセスポリシーを使用
StorageGRID では、 Amazon Web Services ( AWS )ポリシー言語を使用して、 S3 テナントによるバケットおよびバケット内のオブジェクトへのアクセスを制御できます。StorageGRID システムには、 S3 REST API ポリシー言語のサブセットが実装されています。S3 API のアクセスポリシーは JSON 形式で記述されます。
アクセスポリシーの概要
StorageGRID では 2 種類のアクセスポリシーがサポートされています。
-
バケットポリシー。S3 APIのGetBucketPolicy、PutBucketPolicy、DeleteBucketPolicyの各処理、またはTenant Managerまたはテナント管理APIを使用して管理されます。バケットポリシーはバケットに関連付けられ、バケットとそのオブジェクトへのバケット所有者アカウントやその他のアカウントのユーザによるアクセスを制御するために使用されます。バケットポリシー環境 は 1 つのバケットのみで、場合によっては複数のグループに分かれています。
-
* グループポリシー * 。 Tenant Manager またはテナント管理 API を使用して設定します。グループポリシーはアカウントのグループに関連付けられ、そのアカウントが所有する特定のリソースにそのグループがアクセスできるように設定されます。グループポリシー環境 は 1 つのグループに限定され、場合によっては複数のバケットに適用されます。
グループポリシーとバケットポリシーの優先度に違いはありません。 |
StorageGRID のバケットとグループのポリシーは、 Amazon が定義している特定の文法に従って記述されます。各ポリシーは一連のステートメントからなり、各ステートメントは次の要素で構成されます。
-
ステートメント ID ( SID )(オプション)
-
効果
-
プリンシパル / NotPrincipal
-
リソース / メモリソース
-
アクション / NotAction
-
Condition (オプション)
次の構造を使用して、権限を指定するポリシーステートメントが構築されます。 <Effect> を付与して、 <Condition> に該当する場合に <Principal> に <Resource> に対する <Action> の実行を許可または拒否します。
各ポリシー要素は、特定の機能に使用されます。
要素 | 製品説明 |
---|---|
SID |
Sid 要素はオプションです。SID は、ユーザの概要 としてのみ使用されます。StorageGRID システムに格納はされますが、システムで解釈されません。 |
効果 |
Effect 要素では、指定した処理を許可するか拒否するかを指定します。Action 要素でサポートされるキーワードを使用して、バケットやオブジェクトで許可(または拒否)する処理を指定する必要があります。 |
プリンシパル / NotPrincipal |
ユーザ、グループ、およびアカウントに特定のリソースへのアクセスと特定の操作の実行を許可できます。要求に S3 の署名が含まれていない場合は、ワイルドカード文字( * )をプリンシパルとして指定することで匿名アクセスが許可されます。デフォルトでは、アカウントが所有するリソースへのアクセスは root アカウントにのみ許可されます。 Principal 要素を指定する必要があるのはバケットポリシーだけです。グループポリシーの場合は、ポリシーが関連付けられたグループが暗黙的にプリンシパルになります。 |
リソース / メモリソース |
Resource 要素では、バケットとオブジェクトを指定します。Amazon リソースネーム( ARN )を使用してリソースを指定し、バケットやオブジェクトに対する権限を許可または拒否することができます。 |
アクション / NotAction |
権限は Action 要素と Effect 要素の 2 つで構成されます。グループがリソースを要求すると、リソースへのアクセスが許可または拒否されます。権限を明示的に割り当てていないかぎりアクセスは拒否されますが、明示的な拒否を使用して別のポリシーで付与された権限を上書きすることもできます。 |
条件 |
Condition 要素はオプションです。条件を使用すると、ポリシーを適用する条件を示す式を作成できます。 |
Action 要素では、ワイルドカード文字( * )を使用してすべての処理または処理のサブセットを指定できます。たとえば、次の Action の値は、 s3 : GetObject 、 s3 : PutObject 、 s3 : DeleteObject などの権限に一致します。
s3:*Object
Resource 要素では、ワイルドカード文字( \ * )および(?)を使用できます。アスタリスク( * )は 0 文字以上の文字に一致し、疑問符( ? )は 0 文字以上の文字に一致します。 任意の 1 文字に一致します。
Principal要素では、匿名アクセスを設定してすべてのユーザに権限を付与する場合を除き、ワイルドカード文字はサポートされません。たとえば、 Principal の値としてワイルドカード( * )を設定します。
"Principal":"*"
"Principal":{"AWS":"*"}
次の例では、 Effect 、 Principal 、 Action 、および Resource の各要素を使用して記述します。この例は、完全なバケットポリシーのステートメントで、「allow」という効果を使用して、Principals、adminグループ、およびfinanceグループ federated-group/finance`に、というバケット `mybucket`に対してActionを実行する権限 `s3:ListBucket
、およびそのバケット内のすべてのオブジェクトに対してActionを `s3:GetObject`付与して `federated-group/admin`います。
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::27233906934684427525:federated-group/admin", "arn:aws:iam::27233906934684427525:federated-group/finance" ] }, "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ] } ] }
バケットポリシーのサイズの上限は 20 、 480 バイトで、グループポリシーのサイズの上限は 5 、 120 バイトです。
ポリシーノセイコウセイ
デフォルトでは、グループポリシーに対するすべての更新の整合性レベルは結果整合性です。グループポリシーの整合性が取れた場合、ポリシーキャッシュのために変更が有効になるまでにさらに15分かかることがあります。デフォルトでは、バケットポリシーに対する更新の整合性は非常に高くなります。
バケットポリシーの更新の整合性保証は必要に応じて変更できます。たとえば、サイトが停止しているときにバケットポリシーを変更できるようにすることができます。
この場合は、PutBucketPolicy要求でヘッダーを設定する `Consistency-Control`か、PUT Bucket consistency要求を使用します。バケットポリシーの整合性が確保されると、ポリシーキャッシュのために変更が有効になるまでにさらに8秒かかることがあります。
一時的な状況を回避するために整合性の値を別の値に設定する場合は、完了後にバケットレベルの設定を元の値に戻してください。そうしないと、以降のすべてのバケット要求で変更後の設定が使用されます。 |
ポリシーステートメントでは ARN を使用します
ポリシーステートメントでは、 Principal 要素と Resource 要素で ARN を使用します。
-
S3 リソースの ARN の指定には次の構文を使用します。
arn:aws:s3:::bucket-name arn:aws:s3:::bucket-name/object_key
-
アイデンティティリソースの ARN (ユーザおよびグループ)の指定には次の構文を使用します。
arn:aws:iam::account_id:root arn:aws:iam::account_id:user/user_name arn:aws:iam::account_id:group/group_name arn:aws:iam::account_id:federated-user/user_name arn:aws:iam::account_id:federated-group/group_name
その他の考慮事項:
-
オブジェクトキーの一部にワイルドカードとしてアスタリスク( * )を使用すると、 0 文字以上の文字に一致します。
-
オブジェクトキーで指定できる国際文字は、 JSON UTF-8 形式または JSON \u エスケープシーケンスを使用してエンコードする必要があります。パーセントエンコーディングはサポートされていません。
PutBucketPolicy処理のHTTP要求の本文は、charset=UTF-8でエンコードする必要があります。
ポリシー内のリソースを指定します
ポリシーステートメントでは、 Resource 要素を使用して、権限を許可または拒否するバケットやオブジェクトを指定できます。
-
Resource 要素はポリシーの各ステートメントに必要です。ポリシーでは、リソースは要素で指定されます。または、 `NotResource`除外する場合は要素でも指定され `Resource`ます。
-
リソースは S3 リソースの ARN で指定します。例:
"Resource": "arn:aws:s3:::mybucket/*"
-
オブジェクトキーの内部でポリシー変数を使用することもできます。例:
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
-
グループポリシーの作成時は、まだ存在しないバケットもリソースの値で指定することができます。
ポリシーでプリンシパルを指定します
ポリシーステートメントでリソースへのアクセスを許可または拒否するユーザ、グループ、またはテナントアカウントを指定するには、 Principal 要素を使用します。
-
バケットポリシーの各ポリシーステートメントには、 Principal 要素を含める必要があります。グループはプリンシパルとみなされるため、グループポリシーのポリシーステートメントではPrincipal要素は必要ありません。
-
ポリシーでは、「Principal」要素または「NotPrincipal」要素(除外の場合)でプリンシパルを指定します。
-
ID または ARN を使用してアカウントベースのアイデンティティを指定する必要があります。
"Principal": { "AWS": "account_id"} "Principal": { "AWS": "identity_arn" }
-
次の例では、テナントアカウント ID 27233906934684427525 を使用しています。この場合、 root アカウントとそのすべてのユーザが含まれます。
"Principal": { "AWS": "27233906934684427525" }
-
root アカウントのみを指定する場合は次のようになります。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
-
特定のフェデレーテッドユーザ(「 Alex 」)を指定する場合は次のようになります。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
-
特定のフェデレーテッドグループ(「 Managers 」)のみを指定する場合は次のようになります。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
匿名プリンシパルを指定する場合は次のようになります。
"Principal": "*"
-
あいまいさを排除するために、ユーザ名の代わりに UUID を使用できます。
arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013
たとえば、Alexが組織を離れ、ユーザ名が削除されたとし
Alex`ます。新しいAlexが組織に参加し、同じユーザー名が割り当てられている場合 `Alex
、新しいユーザーは元のユーザーに付与された権限を意図せず継承する可能性があります。 -
バケットポリシーの作成時は、まだ存在しないグループ / ユーザの名前もプリンシパルの値で指定することができます。
ポリシーで権限を指定します
ポリシーでは、 Action 要素を使用してリソースに対する権限を許可または拒否します。ポリシーには、「 Action 」要素で示される一連の権限、または除外する「 NotAction 」要素で指定できる一連の権限があります。それぞれが特定の S3 REST API 処理に対応しています。
次の表に、バケットに適用される権限とオブジェクトに適用される権限を示します。
Amazon S3では、PutBucketReplicationとDeleteBucketReplicationの両方のアクションにs3:PutReplicationConfiguration権限が使用されるようになりました。StorageGRID では、元の Amazon S3 仕様に一致する個別の権限が各アクションに使用されます。 |
DELETEは、PUTを使用して既存の値を上書きした場合に実行されます。 |
バケットに適用される権限
権限 | S3 REST API の処理 | StorageGRID のカスタム |
---|---|---|
S3 : CreateBucket を指定します |
CreateBucket |
はい。 注:グループポリシーでのみ使用します。 |
S3 : DeleteBucket |
DeleteBucket |
|
S3 : DeleteBucketMetadataNotification |
バケットのメタデータ通知設定を削除します |
はい |
S3 : DeleteBucketPolicy |
DeleteBucketPolicy |
|
S3 : DeleteReplicationConfiguration |
DeleteBucketReplication |
○(PUTとDELETEに別 々 の権限を設定) |
S3 : GetBucketAcl |
GetBucketAcl |
|
S3 : GetBucketCompliance |
GET Bucket compliance(廃止) |
はい |
S3 : GetBucketConsistency |
GET Bucket consistency |
はい |
S3 : GetBucketCORS |
GetBucketCors |
|
S3 : GetEncryptionConfiguration |
GetBucketEncryptionの略 |
|
S3 : GetBucketLastAccessTime |
GET Bucket last access time のように指定します |
はい |
S3 : GetBucketLocation |
GetBucketLocation |
|
S3 : GetBucketMetadataNotification |
GET Bucket metadata notification configuration のコマンドです |
はい |
S3 : GetBucketNotification |
GetBucketNotificationConfigurationを参照してください |
|
S3 : GetBucketObjectLockConfiguration |
GetObjectLockConfigurationの略 |
|
S3 : GetBucketPolicy |
GetBucketPolicy |
|
S3 : GetBucketTagging |
GetBucketTagging |
|
S3 : GetBucketVersioning |
GetBucketVersioning |
|
S3 : GetLifecycleConfiguration |
GetBucketLifecycleConfiguration |
|
S3 : GetReplicationConfiguration |
GetBucketReplicationの略 |
|
S3 : ListAllMyBuckets |
|
○(GET Storage Usage)。 注:グループポリシーでのみ使用します。 |
S3 : ListBucket |
|
|
S3 : ListBucketMultipartUploads |
|
|
S3 : ListBucketVersions |
GET Bucket versions (バケットバージョンの取得 |
|
S3 : PutBucketCompliance |
PUT Bucket compliance(廃止) |
はい |
S3 : PutBucketConsistency |
PUT Bucket consistency |
はい |
S3 : PutBucketCORS |
|
|
S3 : PutEncryptionConfiguration |
|
|
S3 : PutBucketLastAccessTime |
PUT Bucket last access time のように指定します |
はい |
S3 : PutBucketMetadataNotification |
PUT Bucket metadata notification configuration のコマンドです |
はい |
S3 : PutBucketNotification |
PutBucketNotificationConfigurationの略 |
|
S3 : PutBucketObjectLockConfiguration |
|
|
S3 : PutBucketPolicy |
PutBucketPolicy |
|
S3 : PutBucketTagging |
|
|
S3 : PutBucketVersioning |
PutBucketVersioning |
|
S3 : PutLifecycleConfiguration |
|
|
S3 : PutReplicationConfiguration |
PutBucketReplicationの略 |
○(PUTとDELETEに別 々 の権限を設定) |
オブジェクトに適用される権限
権限 | S3 REST API の処理 | StorageGRID のカスタム |
---|---|---|
S3 : AbortMultipartUpload |
|
|
S3:Bypassガバナー 保持 |
|
|
S3 : DeleteObject |
|
|
S3 : DeleteObjectTagging |
DeleteObjectTagging |
|
S3 : DeleteObjectVersionTagging |
DeleteObjectTagging(オブジェクトの特定のバージョン) |
|
S3 : DeleteObjectVersion |
deleteObject(オブジェクトの特定のバージョン) |
|
S3 : GetObject |
|
|
S3 : GetObjectAcl |
GetObjectAcl |
|
S3 : GetObjectLegalHold |
GetObjectLegalHold |
|
S3 : GetObjectRetention |
GetObjectRetention |
|
S3 : GetObjectTagging |
GetObjectTagging |
|
S3 : GetObjectVersionTagging |
GetObjectTagging(オブジェクトの特定のバージョン) |
|
S3:GetObjectVersion |
GetObject(オブジェクトの特定のバージョン) |
|
S3 : ListMultipartUploadParts |
ListParts、RestoreObject |
|
S3 : PutObject |
|
|
S3 : PutObjectLegalHold |
PutObjectLegalHold |
|
S3 : PutObjectRetention |
PutObjectRetention |
|
S3 : PutObjectTagging |
PutObjectTagging |
|
S3 : PutObjectVersionTagging |
PutObjectTagging(オブジェクトの特定のバージョン) |
|
S3 : PutOverwriteObject |
|
はい |
S3 : RestoreObject |
RestoreObject |
PutOverwriteObject 権限を使用します
s3 : PutOverwriteObject 権限は、オブジェクトの作成または更新を行う環境 処理のカスタムの StorageGRID 権限です。この権限の設定により、オブジェクトのデータ、ユーザ定義メタデータ、または S3 オブジェクトのタグをクライアントが上書きできるかどうかが決まります。
この権限で可能な設定は次のとおりです。
-
* allow * :クライアントはオブジェクトを上書きできます。これがデフォルト設定です。
-
Deny:クライアントはオブジェクトを上書きできません。PutOverwriteObject 権限が Deny に設定されている場合の動作は次のとおりです。
-
同じパスで既存のオブジェクトが見つかった場合は、次の手順を実行します。
-
オブジェクトのデータ、ユーザ定義メタデータ、またはS3オブジェクトのタグを上書きすることはできません。
-
実行中の取り込み処理はすべてキャンセルされ、エラーが返されます。
-
S3のバージョン管理が有効になっている場合は、Denyに設定すると、PutObjectTagging処理またはDeleteObjectTagging処理によってオブジェクトとその最新でないバージョンのTagSetが変更されなくなります。
-
-
既存のオブジェクトが見つからない場合は、この権限の設定は影響しません。
-
-
この権限がない場合、 Allow が設定されたものと同じ結果になります。
現在のS3ポリシーで上書きが許可されていて、PutOverwriteObject権限がDenyに設定されている場合、オブジェクトのデータ、ユーザ定義メタデータ、またはオブジェクトのタグをクライアントが上書きすることはできません。また、[Prevent client modification]*チェックボックスが選択されている場合( configuration > Security settings > Network and objects *)、この設定はPutOverwriteObject権限の設定よりも優先されます。 |
ポリシーの条件を指定します
条件は、ポリシーが有効になるタイミングを定義します。条件は演算子とキーと値のペアで構成されます。
条件はキーと値のペアを使用して評価されます。Condition 要素には複数の条件を指定でき、各条件には複数のキーと値のペアを含めることができます。条件ブロックの形式は次のとおりです。
Condition: { condition_type: { condition_key: condition_values
次の例では、 IpAddress 条件で SourceIp 条件キーを使用しています。
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" ... }, ...
サポートされる条件演算子は次の
条件演算子は次のように分類されます。
-
文字列
-
数値
-
ブーリアン
-
IPアドレス
-
Null チェック
条件演算子 | 製品説明 |
---|---|
StringEquals |
キーを文字列値と比較し、完全一致であるかを確認します(大文字と小文字の区別あり)。 |
StringNotEquals |
キーを文字列値と比較し、不一致であるかを確認します(大文字と小文字の区別あり)。 |
StringEqualsIgnoreCase |
キーを文字列値と比較し、完全一致であるかを確認します(大文字と小文字の区別なし)。 |
StringNotEqualsIgnoreCase |
キーを文字列値と比較し、不一致であるかを確認します(大文字と小文字の区別なし)。 |
StringLike |
キーを文字列値と比較し、完全一致であるかを確認します(大文字と小文字の区別あり)。ワイルドカード文字「*」と「?」を使用できます。 |
StringNotLike |
キーを文字列値と比較し、不一致であるかを確認します(大文字と小文字の区別あり)。ワイルドカード文字「*」と「?」を使用できます。 |
NumericEquals (数値機器) |
キーを数値と比較し、完全一致であるかを確認します。 |
NumericNotEquals |
キーを数値と比較し、不一致であるかを確認します。 |
NumericGreaterThan |
キーを数値と比較し、「より大きい」の一致であるかどうかを確認します。 |
NumericGreaterThanEquals |
キーを数値と比較し、「以上」の一致であるかどうかを確認します。 |
NumericLessThan |
キーを数値と比較し、「より小さい」一致であるかを確認します。 |
NumericLessThanEquals |
キーを数値と比較し、「小なり」の一致であるかを確認します。 |
ブール値 |
キーをブール値と比較し、「trueまたはfalse」の一致であるかを確認します。 |
IP アドレス |
キーを IP アドレスまたは IP アドレスの範囲と比較します。 |
NotIpAddress |
キーを IP アドレスまたは IP アドレスの範囲と比較し、不一致であるかを確認します。 |
ヌル |
現在の要求コンテキストに条件キーが存在するかどうかを確認します。 |
サポートされている条件キー
Conditionキー | アクション | 製品説明 |
---|---|---|
AWS : sourceIP |
IP 演算子 |
要求の送信元の IP アドレスと比較します。バケットまたはオブジェクトの処理に使用できます。
|
AWS :ユーザ名 |
リソース / ID |
要求の送信者のユーザ名と比較します。バケットまたはオブジェクトの処理に使用できます。 |
S3 :デリミタ |
S3 : ListBucket と S3 : ListBucketVersions 権限 |
ListObjects要求またはListObjectVersions要求で指定されたdelimiterパラメータと比較します。 |
S3:ExistingObjectTag /<tag-key> |
S3 : DeleteObjectTagging S3 : DeleteObjectVersionTagging S3 : GetObject S3 : GetObjectAcl 3:GetObjectTagging S3:GetObjectVersion S3:GetObjectVersionAcl S3 : GetObjectVersionTagging S3:PutObjectAcl S3 : PutObjectTagging S3:PutObjectVersionAcl S3 : PutObjectVersionTagging |
既存のオブジェクトに特定のタグキーと値が必要になります。 |
S3 : max-keys |
S3 : ListBucket と S3 : ListBucketVersions 権限 |
ListObjects要求またはListObjectVersions要求で指定されたmax-keysパラメータと比較します。 |
S3 : object-lock-remaining-retention-days |
S3 : PutObject |
要求ヘッダーで指定されたretain-until-dateと比較される `x-amz-object-lock-retain-until-date`か、バケットのデフォルト保持期間から計算され、次の要求でこれらの値が許容範囲内であることが確認されます。
|
S3 : object-lock-remaining-retention-days |
S3 : PutObjectRetention |
は、PutObjectRetention要求で指定されたretain-until-dateと比較して、許容範囲内であることを確認します。 |
S3 :プレフィックス |
S3 : ListBucket と S3 : ListBucketVersions 権限 |
ListObjects要求またはListObjectVersions要求で指定されたprefixパラメータと比較します。 |
S3:RequestObjectTag /<tag-key> |
S3 : PutObject S3 : PutObjectTagging S3 : PutObjectVersionTagging |
オブジェクト要求にタグ付けが含まれている場合は、特定のタグキーと値が必要になります。 |
ポリシーで変数を指定します
ポリシーで変数を使用すると、該当するポリシーの情報を設定できます。ポリシー変数は、要素内および要素内の文字列比較で Condition`使用できます `Resource
。
この例では、変数は `${aws:username}`Resource要素の一部です。
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
この例では、変数は `${aws:username}`ConditionブロックのCondition値の一部です。
"Condition": { "StringLike": { "s3:prefix": "${aws:username}/*" ... }, ...
変数 | 製品説明 |
---|---|
|
SourceIp キーを指定の変数として使用します。 |
|
username キーを指定の変数として使用します。 |
|
サービス固有のプレフィックスキーを指定の変数として使用します。 |
|
サービス固有の max-keys キーを指定の変数として使用します。 |
|
特殊文字です。文字をリテラル * 文字として使用します。 |
|
特殊文字です。文字をリテラル?文字として使用します。 |
|
特殊文字です。文字「 $ 」をリテラル文字として使用します。 |
特別な処理を必要とするポリシーを作成します
ポリシーで付与される権限によって、アカウントの root ユーザがロックアウトされるなど、セキュリティや継続的な運用に支障が生じることがあります。StorageGRID の S3 REST API の実装では、ポリシーの検証時の制限は Amazon よりも厳しくありませんが、評価時は同等の制限が適用されます。
ポリシーの説明 | ポリシータイプ | Amazon の動作 | StorageGRID の動作 |
---|---|---|---|
自身に対し、 root アカウントに対するすべての権限を拒否する |
バケット |
有効で適用されるが、 S3 バケットのすべてのポリシー処理に対する権限は引き続き root ユーザアカウントに付与される |
同じ |
自身に対しユーザ / グループに対するすべての権限を拒否する |
グループ |
有効で適用されます |
同じ |
外部アカウントグループに対し任意の権限を許可します |
バケット |
無効なプリンシパルです |
有効だが、 S3 バケットのすべてのポリシー処理に対する権限をポリシーで許可すると 405 Method Not Allowed エラーが返されます |
外部アカウントの root またはユーザに任意の権限を許可します |
バケット |
有効だが、 S3 バケットのすべてのポリシー処理に対する権限をポリシーで許可すると 405 Method Not Allowed エラーが返されます |
同じ |
すべてのユーザにすべての処理に対する権限を許可します |
バケット |
有効だが、外部アカウントの root およびユーザについては、 S3 バケットのすべてのポリシー処理に対する権限で 405 Method Not Allowed エラーが返されます |
同じ |
すべてのユーザに対してすべての処理に対する権限を拒否する |
バケット |
有効で適用されるが、 S3 バケットのすべてのポリシー処理に対する権限は引き続き root ユーザアカウントに付与される |
同じ |
プリンシパルとして新規のユーザまたはグループを指定します |
バケット |
無効なプリンシパルです |
有効 |
リソースとして新規の S3 バケットを指定する必要があります |
グループ |
有効 |
同じ |
プリンシパルとしてローカルグループを指定します |
バケット |
無効なプリンシパルです |
有効 |
ポリシーは、オブジェクトをPUTするための非所有者アカウント(匿名アカウントを含む)権限を付与します。 |
バケット |
有効。オブジェクトは作成者アカウントによって所有され、バケットポリシーは適用されません。作成者アカウントは、オブジェクトの ACL を使用してオブジェクトにアクセス権限を付与する必要があります。 |
有効。オブジェクトはバケット所有者アカウントによって所有され、バケットポリシーが適用される。 |
Write-Once-Read-Many ( WORM )による保護
データ、ユーザ定義オブジェクトのメタデータ、 S3 オブジェクトのタグを保護するために、 Write-Once-Read-Many ( WORM )バケットを作成することができます。新しいオブジェクトの作成を許可し、既存のコンテンツの上書きや削除を防止するように WORM バケットを設定します。ここで説明するいずれかの方法を使用します。
上書きを常に拒否するには、次の操作を実行します。
-
Grid Managerで、* configuration > Security > Security settings > Network and objects の順に選択し、 Prevent client modification *チェックボックスを選択します。
-
次のルールと S3 ポリシーを適用します。
-
S3 ポリシーに PutOverwriteObject DENY 処理を追加します。
-
S3 ポリシーに DeleteObject DENY 処理を追加します。
-
S3ポリシーにPutObject Allow処理を追加します。
-
S3ポリシーでDeleteObjectをDENYに設定しても、「zero copies after 30 days」などのルールが存在する場合はILMによってオブジェクトが削除されます。 |
これらのルールとポリシーがすべて適用されても、同時書き込みからは保護されません(状況Aを参照)。保護の対象になるのはシーケンシャルな上書きです(状況 B を参照)。 |
-
状況 A * :同時書き込み(保護対象外)
/mybucket/important.doc PUT#1 ---> OK PUT#2 -------> OK
-
状況 B * :シーケンシャルな上書き(保護対象)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)