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

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

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

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 オペレーションにバケット所有者完全制御の既定 ACL を要求します (バケット所有者が推奨)

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

注記

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

次のバケットポリシーでは、オブジェクトの ACL が bucket-owner-full-control に設定されている場合にのみ、アカウント 111122223333DOC-EXAMPLE-BUCKET にオブジェクトをアップロードできるように指定しています。お客様のアカウントで、111122223333 を、お客様のバケット名でDOC-EXAMPLE-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:::DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

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

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

注記

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