バケットとグループのアクセスポリシーを使用する
StorageGRID は、Amazon Web Services (AWS) ポリシー言語を使用して、S3 テナントがバケットおよびバケット内のオブジェクトへのアクセスを制御できるようにします。 StorageGRIDシステムは、S3 REST API ポリシー言語のサブセットを実装します。 S3 API のアクセス ポリシーは JSON で記述されます。
アクセスポリシーの概要
StorageGRIDでサポートされているアクセス ポリシーには 2 種類あります。
-
バケット ポリシー。GetBucketPolicy、PutBucketPolicy、DeleteBucketPolicy S3 API 操作、または Tenant Manager または Tenant Management API を使用して管理されます。バケット ポリシーはバケットに添付され、バケット所有者アカウントまたはその他のアカウントのユーザーによるバケットおよびバケット内のオブジェクトへのアクセスを制御するように構成されます。バケット ポリシーは 1 つのバケットにのみ適用され、複数のグループに適用される場合があります。
-
グループ ポリシー。これは、Tenant Manager または Tenant Management API を使用して設定されます。グループ ポリシーはアカウント内のグループに添付され、そのグループがそのアカウントが所有する特定のリソースにアクセスできるように構成されます。グループ ポリシーは 1 つのグループにのみ適用され、複数のバケットに適用される場合もあります。
|
グループ ポリシーとバケット ポリシーの優先順位に違いはありません。 |
StorageGRIDバケットおよびグループ ポリシーは、Amazon によって定義された特定の文法に従います。各ポリシー内にはポリシー ステートメントの配列があり、各ステートメントには次の要素が含まれています。
-
ステートメントID(Sid)(オプション)
-
効果
-
プリンシパル/非プリンシパル
-
リソース/非リソース
-
アクション/非アクション
-
条件(オプション)
ポリシー ステートメントは、次の構造を使用して作成され、アクセス許可を指定します: <Condition> が適用される場合に、<Principal> が <Resource> に対して <Action> を実行することを許可/拒否するには、<Effect> を付与します。
各ポリシー要素は特定の機能に使用されます。
要素 | 説明 |
---|---|
シド |
Sid 要素はオプションです。 Sid はユーザーへの説明としてのみ使用されます。これはStorageGRIDシステムによって保存されますが、解釈されません。 |
効果 |
Effect 要素を使用して、指定された操作が許可されるか拒否されるかを決定します。サポートされているアクション要素のキーワードを使用して、バケットまたはオブジェクトに対して許可 (または拒否) する操作を識別する必要があります。 |
プリンシパル/非プリンシパル |
ユーザー、グループ、アカウントが特定のリソースにアクセスし、特定のアクションを実行できるようにすることができます。リクエストに S3 署名が含まれていない場合は、プリンシパルとしてワイルドカード文字 (*) を指定することにより匿名アクセスが許可されます。デフォルトでは、アカウント ルートのみがアカウントが所有するリソースにアクセスできます。 バケット ポリシーでは、Principal 要素のみを指定する必要があります。グループ ポリシーの場合、ポリシーが関連付けられているグループは暗黙的な Principal 要素です。 |
リソース/非リソース |
リソース要素はバケットとオブジェクトを識別します。リソースを識別する Amazon リソースネーム (ARN) を使用して、バケットとオブジェクトへのアクセス許可を許可または拒否できます。 |
アクション/非アクション |
アクション要素と効果要素は、権限の 2 つのコンポーネントです。グループがリソースを要求すると、リソースへのアクセスが許可または拒否されます。権限を明示的に割り当てない限りアクセスは拒否されますが、明示的な拒否を使用して、別のポリシーによって付与された権限を上書きすることができます。 |
条件 |
Condition 要素はオプションです。条件を使用すると、ポリシーをいつ適用するかを決定する式を作成できます。 |
Action 要素では、ワイルドカード文字 (*) を使用して、すべての操作または操作のサブセットを指定できます。たとえば、このアクションは、s3:GetObject、s3:PutObject、s3:DeleteObject などの権限と一致します。
s3:*Object
リソース要素では、ワイルドカード文字 (*) と (?) を使用できます。アスタリスク (*) は 0 個以上の文字に一致しますが、疑問符 (?) は任意の 1 文字に一致します。
Principal 要素では、すべてのユーザーに権限を付与する匿名アクセスを設定する場合を除き、ワイルドカード文字はサポートされていません。たとえば、ワイルドカード (*) をプリンシパル値として設定します。
"Principal":"*"
"Principal":{"AWS":"*"}
次の例では、ステートメントは Effect、Principal、Action、および Resource 要素を使用しています。この例では、効果「許可」を使用してプリンシパル、管理者グループに権限を付与する完全なバケットポリシーステートメントを示しています。 federated-group/admin`財務グループ `federated-group/finance
、アクションを実行する権限 `s3:ListBucket`バケットの名前 `mybucket`そしてアクション `s3:GetObject`そのバケット内のすべてのオブジェクトに適用されます。
{ "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 分かかることがあります。デフォルトでは、バケット ポリシーに加えた更新はすべて強力な整合性を持ちます。
必要に応じて、バケット ポリシー更新の一貫性保証を変更できます。たとえば、サイトが停止している間もバケット ポリシーの変更を利用できるようにしたい場合があります。
この場合、 Consistency-Control
PutBucketPolicy リクエストのヘッダーを追加するか、PUT Bucket 一貫性リクエストを使用することもできます。バケット ポリシーが整合すると、ポリシーのキャッシュにより、変更が有効になるまでにさらに 8 秒かかることがあります。
|
一時的な状況を回避するために一貫性を別の値に設定する場合は、完了したらバケット レベルの設定を元の値に戻してください。それ以外の場合、今後のすべてのバケット リクエストでは変更された設定が使用されます。 |
ポリシーステートメントで ARN を使用する
ポリシーステートメントでは、ARN は Principal 要素と Resource 要素で使用されます。
-
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`除外のため。 -
S3 リソース ARN を使用してリソースを指定します。例えば:
"Resource": "arn:aws:s3:::mybucket/*"
-
オブジェクト キー内でポリシー変数を使用することもできます。例えば:
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
-
リソース値には、グループ ポリシーの作成時にまだ存在しないバケットを指定できます。
ポリシーでプリンシパルを指定する
Principal 要素を使用して、ポリシー ステートメントによってリソースへのアクセスが許可/拒否されるユーザー、グループ、またはテナント アカウントを識別します。
-
バケット ポリシー内の各ポリシー ステートメントには、Principal 要素を含める必要があります。グループ ポリシー内のポリシー ステートメントでは、グループがプリンシパルであると認識されるため、Principal 要素は必要ありません。
-
ポリシーでは、プリンシパルは要素「Principal」で示され、除外する場合は「NotPrincipal」で示されます。
-
アカウントベースの ID は、ID または ARN を使用して指定する必要があります。
"Principal": { "AWS": "account_id"} "Principal": { "AWS": "identity_arn" }
-
この例では、アカウント ルートとアカウント内のすべてのユーザーを含むテナント アカウント ID 27233906934684427525 を使用します。
"Principal": { "AWS": "27233906934684427525" }
-
アカウント ルートのみを指定することもできます。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
-
特定のフェデレーション ユーザー (「Alex」) を指定できます。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
-
特定のフェデレーション グループ (「マネージャー」) を指定できます。
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
匿名プリンシパルを指定できます。
"Principal": "*"
-
曖昧さを避けるために、ユーザー名の代わりにユーザーの UUID を使用できます。
arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013
例えば、アレックスが組織を離れ、ユーザー名が `Alex`削除されます。新しいアレックスが組織に参加し、同じ役割を担う場合 `Alex`ユーザー名を変更すると、新しいユーザーが元のユーザーに付与された権限を意図せず継承してしまう可能性があります。
-
プリンシパル値には、バケット ポリシーの作成時にまだ存在しないグループ/ユーザー名を指定できます。
ポリシーで権限を指定する
ポリシーでは、アクション要素はリソースへのアクセス許可を許可/拒否するために使用されます。ポリシーで指定できる一連の権限があり、これらは要素「Action」で示され、除外の場合は「NotAction」で示されます。これらの各要素は、特定の S3 REST API 操作にマッピングされます。
表には、バケットに適用される権限とオブジェクトに適用される権限がリストされています。
|
Amazon S3 は、PutBucketReplication アクションと DeleteBucketReplication アクションの両方に s3:PutReplicationConfiguration 権限を使用するようになりました。 StorageGRID は、元の Amazon S3 仕様に一致する、アクションごとに個別の権限を使用します。 |
|
既存の値を上書きするために put が使用されると、削除が実行されます。 |
バケットに適用される権限
権限 | S3 REST API 操作 | StorageGRID向けカスタム |
---|---|---|
s3:バケットの作成 |
CreateBucket |
○ 注: グループ ポリシーでのみ使用します。 |
s3:バケットの削除 |
DeleteBucket |
|
s3:DeleteBucketMetadata通知 |
バケットメタデータ通知設定の削除 |
はい |
s3:DeleteBucketポリシー |
DeleteBucketPolicy |
|
s3:レプリケーション構成の削除 |
バケットレプリケーションの削除 |
はい、PUTとDELETEに別々の権限が必要です |
s3:GetBucketAcl |
GetBucketAcl |
|
s3:GetBucketCompliance |
GET バケットコンプライアンス(非推奨) |
はい |
s3:GetBucketConsistency |
GETバケットの一貫性 |
はい |
s3:GetBucketCORS |
GetBucketCors |
|
s3:暗号化設定の取得 |
バケット暗号化を取得 |
|
s3:GetBucketLastAccessTime |
GET バケットの最終アクセス時刻 |
はい |
s3:GetBucketLocation |
GetBucketLocation |
|
s3:GetBucketMetadataNotification |
バケットメタデータ通知設定の取得 |
はい |
s3:GetBucketNotification |
GetBucketNotificationConfiguration |
|
s3:GetBucketObjectLockConfiguration |
GetObjectLockConfiguration |
|
s3:GetBucketPolicy |
GetBucketPolicy |
|
s3:GetBucketTagging |
GetBucketTagging |
|
s3:GetBucketVersioning |
GetBucketVersioning |
|
s3:GetLifecycleConfiguration |
GetBucketLifecycleConfiguration |
|
s3:GetReplicationConfiguration |
GetBucketReplication |
|
s3:すべてのバケットをリスト |
|
はい、GET ストレージ使用量の場合です。 注: グループ ポリシーでのみ使用します。 |
s3:リストバケット |
|
|
s3:リストバケットマルチパートアップロード |
|
|
s3:バケットバージョンのリスト |
GETバケットのバージョン |
|
s3:PutBucketコンプライアンス |
PUT バケットコンプライアンス(非推奨) |
はい |
s3:PutBucketConsistency |
PUT バケットの一貫性 |
はい |
s3:PutBucketCORS |
|
|
s3:PutEncryptionConfiguration |
|
|
s3:PutBucket最終アクセス時間 |
バケットの最終アクセス時刻をPUTする |
はい |
s3:PutBucketMetadataNotification |
PUT バケットメタデータ通知設定 |
はい |
s3:PutBucket通知 |
PutBucketNotificationConfiguration |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PutBucketポリシー |
PutBucketPolicy |
|
s3:PutBucketTagging |
|
|
s3:PutBucketバージョン管理 |
PutBucketVersioning |
|
s3:PutLifecycleConfiguration |
|
|
s3:PutReplicationConfiguration |
PutBucketレプリケーション |
はい、PUTとDELETEに別々の権限が必要です |
オブジェクトに適用される権限
権限 | S3 REST API 操作 | StorageGRID向けカスタム |
---|---|---|
s3:マルチパートアップロードの中止 |
|
|
s3:バイパスガバナンス保持 |
|
|
s3:オブジェクトの削除 |
|
|
s3:オブジェクトのタグ付けを削除 |
DeleteObjectTagging |
|
s3:オブジェクトバージョンタグ付けの削除 |
DeleteObjectTagging (オブジェクトの特定のバージョン) |
|
s3:オブジェクトバージョンの削除 |
DeleteObject (オブジェクトの特定のバージョン) |
|
s3:GetObject |
|
|
s3:GetObjectAcl |
GetObjectAcl |
|
s3:GetObjectLegalHold |
GetObjectLegalHold |
|
s3:GetObjectRetention |
GetObjectRetention |
|
s3:GetObjectTagging |
GetObjectTagging |
|
s3:GetObjectVersionTagging |
GetObjectTagging (オブジェクトの特定のバージョン) |
|
s3:GetObjectVersion |
GetObject (オブジェクトの特定のバージョン) |
|
s3:ListMultipartUploadParts |
リストパーツ、復元オブジェクト |
|
s3:PutObject |
|
|
s3:PutObjectLegalHold |
PutObjectLegalHold |
|
s3:PutObjectRetention |
PutObjectRetention |
|
s3:オブジェクトのタグ付け |
PutObjectTagging |
|
s3:PutObjectVersionTagging |
PutObjectTagging(オブジェクトの特定のバージョン) |
|
s3:上書きオブジェクト |
|
はい |
s3:オブジェクトの復元 |
オブジェクトの復元 |
PutOverwriteObject権限を使用する
s3:PutOverwriteObject 権限は、オブジェクトを作成または更新する操作に適用されるカスタムStorageGRID権限です。この権限の設定により、クライアントがオブジェクトのデータ、ユーザー定義のメタデータ、または S3 オブジェクトのタグ付けを上書きできるかどうかが決まります。
この権限で可能な設定は次のとおりです:
-
許可: クライアントはオブジェクトを上書きできます。これがデフォルト設定です。
-
拒否: クライアントはオブジェクトを上書きできません。 Deny に設定すると、PutOverwriteObject 権限は次のように動作します。
-
同じパスに既存のオブジェクトが見つかった場合:
-
オブジェクトのデータ、ユーザー定義のメタデータ、または S3 オブジェクトのタグ付けは上書きできません。
-
進行中の取り込み操作はすべてキャンセルされ、エラーが返されます。
-
S3 のバージョン管理が有効になっている場合、Deny 設定により、PutObjectTagging または DeleteObjectTagging 操作によってオブジェクトとその非現在のバージョンの TagSet が変更されることが防止されます。
-
-
既存のオブジェクトが見つからない場合、この権限は効果がありません。
-
-
この権限が存在しない場合は、Allow が設定されている場合と同じ効果になります。
|
現在の S3 ポリシーで上書きが許可されていて、PutOverwriteObject 権限が Deny に設定されている場合、クライアントはオブジェクトのデータ、ユーザー定義のメタデータ、またはオブジェクトのタグ付けを上書きできません。さらに、クライアントによる変更を禁止する チェックボックスが選択されている場合 ([構成] > [セキュリティ設定] > [ネットワークとオブジェクト])、その設定は PutOverwriteObject 権限の設定よりも優先されます。 |
ポリシーで条件を指定する
条件は、ポリシーがいつ有効になるかを定義します。条件は演算子とキーと値のペアで構成されます。
条件では、評価にキーと値のペアを使用します。 Condition 要素には複数の条件を含めることができ、各条件には複数のキーと値のペアを含めることができます。条件ブロックは次の形式を使用します。
Condition: { condition_type: { condition_key: condition_values
次の例では、IpAddress 条件で SourceIp 条件キーが使用されています。
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" ... }, ...
サポートされている条件演算子
条件演算子は次のように分類されます。
-
弦
-
数字
-
ブーリアン
-
IPアドレス
-
ヌルチェック
条件演算子 | 説明 |
---|---|
文字列に等しい |
完全一致 (大文字と小文字を区別) に基づいてキーと文字列値を比較します。 |
文字列が等しくない |
否定一致(大文字と小文字を区別)に基づいてキーと文字列値を比較します。 |
文字列が等しい場合、大文字と小文字を区別しない |
完全一致 (大文字と小文字は区別されません) に基づいてキーと文字列値を比較します。 |
文字列が等しくない場合大文字と小文字を区別しない |
否定一致(大文字と小文字を区別しない)に基づいてキーと文字列値を比較します。 |
文字列のような |
完全一致 (大文字と小文字を区別) に基づいてキーと文字列値を比較します。 * および ? ワイルドカード文字を含めることができます。 |
文字列が似ていない |
否定一致(大文字と小文字を区別)に基づいてキーと文字列値を比較します。 * および ? ワイルドカード文字を含めることができます。 |
数値等しい |
完全一致に基づいてキーと数値を比較します。 |
数値NotEquals |
否定一致に基づいてキーと数値を比較します。 |
数値より大きい |
「より大きい」一致に基づいてキーと数値を比較します。 |
数値より大きい |
「以上」の一致に基づいてキーと数値を比較します。 |
数値の小数点以下 |
「より小さい」一致に基づいてキーを数値と比較します。 |
数値の「未満」 |
「以下」の一致に基づいてキーと数値を比較します。 |
ブール |
「true または false」の一致に基づいてキーをブール値と比較します。 |
IPアドレス |
キーを IP アドレスまたは IP アドレスの範囲と比較します。 |
IPアドレスなし |
否定一致に基づいて、キーを IP アドレスまたは IP アドレスの範囲と比較します。 |
Null |
現在のリクエスト コンテキストに条件キーが存在するかどうかを確認します。 |
サポートされている条件キー
条件キー | アクション | 説明 |
---|---|---|
aws:ソースIP |
IPオペレーター |
リクエストの送信元の IP アドレスと比較します。バケットまたはオブジェクトの操作に使用できます。 注: S3 リクエストが管理ノードおよびゲートウェイ ノードのロード バランサ サービスを通じて送信された場合、これはロード バランサ サービスのアップストリームの IP アドレスと比較されます。 注: サードパーティの非透過ロードバランサが使用されている場合、これはそのロードバランサの IP アドレスと比較されます。どれでも `X-Forwarded-For`ヘッダーの有効性を確認できないため、無視されます。 |
aws:ユーザー名 |
リソース/アイデンティティ |
リクエストの送信元のユーザー名と比較します。バケットまたはオブジェクトの操作に使用できます。 |
s3:区切り文字 |
s3:ListBucketと s3:ListBucketVersions 権限 |
ListObjects または ListObjectVersions リクエストで指定された区切り文字パラメータと比較します。 |
s3:ExistingObjectTag/<タグキー> |
s3:オブジェクトのタグ付けを削除 s3:オブジェクトバージョンタグ付けの削除 s3:GetObject s3:GetObjectAcl 3:オブジェクトのタグ付けを取得する s3:GetObjectVersion s3:GetObjectVersionAcl s3:GetObjectVersionTagging s3:PutObjectAcl s3:オブジェクトのタグ付け s3:PutObjectVersionAcl s3:PutObjectVersionTagging |
既存のオブジェクトに特定のタグ キーと値があることが必要になります。 |
s3:最大キー数 |
s3:ListBucketと s3:ListBucketVersions 権限 |
ListObjects または ListObjectVersions リクエストで指定された max-keys パラメータと比較します。 |
s3:オブジェクトロックの残り保持日数 |
s3:PutObject |
指定された保持期限日と比較します `x-amz-object-lock-retain-until-date`リクエスト ヘッダーまたはバケットのデフォルトの保持期間から計算され、これらの値が次のリクエストの許容範囲内であることを確認します。
|
s3:オブジェクトロックの残り保持日数 |
s3:PutObjectRetention |
PutObjectRetention リクエストで指定された retain-until-date と比較して、それが許容範囲内であることを確認します。 |
s3:プレフィックス |
s3:ListBucketと s3:ListBucketVersions 権限 |
ListObjects または ListObjectVersions リクエストで指定されたプレフィックス パラメータと比較します。 |
s3:RequestObjectTag/<タグキー> |
s3:PutObject s3:オブジェクトのタグ付け s3:PutObjectVersionTagging |
オブジェクト リクエストにタグ付けが含まれている場合は、特定のタグ キーと値が必要になります。 |
ポリシーで変数を指定する
利用可能な場合にポリシー情報を入力するには、ポリシー内の変数を使用できます。ポリシー変数は、 `Resource`要素と文字列の比較では `Condition`要素。
この例では、変数 `${aws:username}`リソース要素の一部です:
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
この例では、変数 `${aws:username}`条件ブロック内の条件値の一部です。
"Condition": { "StringLike": { "s3:prefix": "${aws:username}/*" ... }, ...
変数 | 説明 |
---|---|
|
提供された変数として SourceIp キーを使用します。 |
|
提供された変数としてユーザー名キーを使用します。 |
|
提供された変数としてサービス固有のプレフィックス キーを使用します。 |
|
提供された変数としてサービス固有の max-keys キーを使用します。 |
|
特殊文字。文字をリテラル * 文字として使用します。 |
|
特殊文字。文字をリテラル ? 文字として使用します。 |
|
特殊文字。文字をリテラル $ 文字として使用します。 |
特別な処理を必要とするポリシーを作成する
場合によっては、ポリシーによって、アカウントのルート ユーザーをロックアウトするなど、セキュリティ上危険な権限や継続的な操作にとって危険な権限が付与されることがあります。 StorageGRID S3 REST API 実装は、ポリシー検証時には Amazon よりも制限が少なくなりますが、ポリシー評価時には同様に厳格になります。
ポリシーの説明 | ポリシー タイプ | アマゾンの行動 | StorageGRIDの動作 |
---|---|---|---|
ルートアカウントへのすべての権限を拒否する |
バケット |
有効かつ強制されていますが、ルートユーザーアカウントはすべての S3 バケットポリシー操作の権限を保持します。 |
同じ |
ユーザー/グループへのすべての権限を拒否する |
グループ |
有効かつ強制 |
同じ |
外国のアカウントグループに任意の権限を許可する |
バケット |
無効なプリンシパル |
有効ですが、すべての S3 バケットポリシー操作の権限は、ポリシーで許可されている場合、405 メソッドが許可されていないエラーを返します。 |
外部アカウントのルートまたはユーザーに任意の権限を許可する |
バケット |
有効ですが、すべての S3 バケットポリシー操作の権限は、ポリシーで許可されている場合、405 メソッドが許可されていないエラーを返します。 |
同じ |
すべてのアクションに対する権限を全員に許可する |
バケット |
有効ですが、すべてのS3バケットポリシー操作の権限は、外部アカウントのルートとユーザーに対して405 Method Not Allowedエラーを返します。 |
同じ |
すべてのアクションに対する全員の権限を拒否 |
バケット |
有効かつ強制されていますが、ルートユーザーアカウントはすべての S3 バケットポリシー操作の権限を保持します。 |
同じ |
プリンシパルは存在しないユーザーまたはグループです |
バケット |
無効なプリンシパル |
有効 |
リソースは存在しないS3バケットです |
グループ |
有効 |
同じ |
校長は地元のグループです |
バケット |
無効なプリンシパル |
有効 |
ポリシーは、所有者以外のアカウント (匿名アカウントを含む) にオブジェクトを配置する権限を付与します。 |
バケット |
有効。オブジェクトは作成者アカウントによって所有され、バケット ポリシーは適用されません。作成者アカウントは、オブジェクト ACL を使用してオブジェクトへのアクセス権限を付与する必要があります。 |
有効。オブジェクトはバケット所有者アカウントによって所有されます。バケットポリシーが適用されます。 |
一度書き込み、何度も読み取り可能な(WORM)保護
データ、ユーザー定義のオブジェクト メタデータ、および S3 オブジェクトのタグ付けを保護するために、Write Once Read Many (WORM) バケットを作成できます。 WORM バケットを構成して、新しいオブジェクトの作成を許可し、既存のコンテンツの上書きや削除を防止します。ここで説明するいずれかのアプローチを使用します。
上書きが常に拒否されるようにするには、次の操作を実行します。
-
グリッド マネージャーから、[構成] > [セキュリティ] > [セキュリティ設定] > [ネットワークとオブジェクト] に移動し、[クライアントの変更を禁止する] チェックボックスをオンにします。
-
次のルールと S3 ポリシーを適用します。
-
S3 ポリシーに PutOverwriteObject DENY 操作を追加します。
-
S3 ポリシーに DeleteObject DENY 操作を追加します。
-
S3 ポリシーに PutObject ALLOW 操作を追加します。
-
|
S3 ポリシーで DeleteObject を DENY に設定しても、「30 日後にコピーがゼロ」などのルールが存在する場合は ILM によるオブジェクトの削除を防ぐことはできません。 |
|
これらすべてのルールとポリシーを適用しても、同時書き込みを防ぐことはできません (状況 A を参照)。連続した完了上書きは防止します (状況 B を参照)。 |
状況A: 同時書き込み(防御されていない)
/mybucket/important.doc PUT#1 ---> OK PUT#2 -------> OK
状況B: 連続した完了上書き(防止対象)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)