すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。 - Amazon Simple Storage Service

すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。

Amazon S3 バケットで ACL を無効にすることをお勧めします。これを行うには、S3 オブジェクトの所有権に [バケット所有者の強制] 設定を適用します。この設定を適用すると、ACL が無効になり、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できるようになります。ACL を無効にしてすべての新しいバケットを作成するように要求するには、次のセクションで説明するように、AWS Identity and Access Management (IAM) ポリシーまたは AWS Organizations サービスコントロールポリシー (SCP) を使用します。

ACL を無効にせずに新しいオブジェクトのオブジェクト所有権を強制するには、バケット所有者の優先設定を適用できます。この設定を適用する場合は、バケットポリシーを更新して、バケットへのすべての PUT リクエストに bucket-owner-full-control 既定 ACL を要求することを強くお勧めします。bucket-owner-full-control 既定 ACL を他のアカウントのバケットに送信するように、クライアントも更新してください。

すべての新しいバケットの ACL を無効にします (バケット所有者の強制)

次の例の IAM ポリシーは、[バケット所有者の強制] 設定がオブジェクト所有権に適用されていない限り、特定の IAM ユーザーまたはロールの s3:CreateBucket アクセス許可を拒否します。Condition ブロック内のキーバリューのペアは、キーには s3:x-amz-object-ownership を、値には BucketOwnerEnforced 設定を指定します。つまり、IAM ユーザーは、オブジェクト所有権に[バケット所有者の強制] 設定を設定し、ACL を無効にした場合にのみ、バケットを作成できます。このポリシーは、AWS 組織の境界 SCP として使用することもできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireBucketOwnerFullControl", "Action": "s3:CreateBucket", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-object-ownership": "BucketOwnerEnforced" } } } ] }

Amazon S3 PUT オペレーションで bucket-owner-full-control 既定 ACL を要求する (バケット所有者の優先)

オブジェクト所有権に対するバケット所有者の優先設定を使用すると、バケット所有者は、他のアカウントが bucket-owner-full-control 既定 ACL を使用してバケットに書き込む新しいオブジェクトを所有し、完全に制御できます。ただし、他のアカウントが bucket-owner-full-control 規定 ACL なしでバケットにオブジェクトを書き込む場合、オブジェクトライターは完全制御アクセスを維持します。バケット所有者は、bucket-owner-full-control 既定 ACL を指定した場合にのみ書き込みを許可するバケットポリシーを実装できます。

注記

[バケット所有者の強制] 設定で ACL を無効にすると、バケット所有者として、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できます。このセクションを使用してバケットポリシーを更新して、バケット所有者にオブジェクトの所有権を適用する必要はありません。

次のバケットポリシーでは、オブジェクトの ACL が bucket-owner-full-control に設定されている場合にのみ、アカウント 111122223333amzn-s3-demo-bucket にオブジェクトをアップロードできるように指定しています。お客様のアカウントで、111122223333 を、お客様のバケット名でamzn-s3-demo-bucket を置き換えてください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with bucket owner full control", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

次に、AWS Command Line Interface (AWS CLI) を使用した bucket-owner-full-control 既定 ACL を含むコピーオペレーションの例を示します。

aws s3 cp file.txt s3://amzn-s3-demo-bucket --acl bucket-owner-full-control

バケットポリシーが有効になった後、クライアントに bucket-owner-full-control 既定 ACL が含まれていない場合、オペレーションは失敗し、アップローダーは次のエラーを受け取ります。

PutObject オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました

注記

アップロード後にクライアントがオブジェクトにアクセスする必要がある場合は、アップロードアカウントに追加のアクセス権限を付与する必要があります。アカウントにリソースへのアクセス許可を付与する方法については、チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理 を参照してください。