S3 オブジェクトの所有権 を使用してアップロードされたオブジェクトの所有権を制御する - Amazon Simple Storage Service

S3 オブジェクトの所有権 を使用してアップロードされたオブジェクトの所有権を制御する

S3 オブジェクトの所有権 は、AWS マネジメントコンソール、AWS Command Line Interface、AWS SDK または Amazon S3 REST API を使用して設定できます。AWS CloudFormation サポートは計画されていますが、まだ利用できません。

S3 オブジェクトの所有権 は、バケットにアップロードされる新しいオブジェクトの所有権を制御するために使用できる Amazon S3 バケット設定です。デフォルトでは、他の AWS アカウントがバケットにオブジェクトをアップロードしても、オブジェクトはアップロードアカウントによって所有されたままになります。S3 オブジェクトの所有権 を使用すると、bucket-owner-full-control 既定アクセスコントロールリスト (ACL) を持つ他のアカウントによって書き込まれた新しいオブジェクトは、バケット所有者によって自動的に所有され、バケット所有者はオブジェクトを完全に制御できるようになります。異なるアカウントの複数のユーザーとチームが書き込み、および読み取りできる共有データストアを作成して、バケット内の新しいオブジェクトの所有権を標準化できます。これにより、バケット所有者は、バケットポリシーなどのリソースベースのポリシーを使用して、これらのオブジェクトへのアクセスを共有および管理できます。S3 オブジェクトの所有権 は既存のオブジェクトには影響しません。

S3 オブジェクトの所有権 には 2 つの設定があります。

  • オブジェクトライター – アップロードアカウントはオブジェクトを所有します。

  • バケット所有者優先 – オブジェクトが bucket-owner-full-control 既定 ACL を使用してアップロードされた場合、バケット所有者はオブジェクトを所有します。この設定と既定 ACL がない場合、オブジェクトはアップロードされ、アップロードアカウントによって所有されたままになります。オブジェクト所有権の強制については、「新しいオブジェクトの所有権を取得するにはどうすればよいですか?」を参照してください。

新しいオブジェクトの所有権を取得するにはどうすればよいですか?

S3 オブジェクトの所有権 をバケット所有者優先に設定した後、バケットポリシーを追加して、すべての Amazon S3 PUT オペレーションに bucket-owner-full-control 既定 ACL を含めるように要求できます。この ACL は、バケット所有者に新しいオブジェクトの完全な制御を付与し、S3 オブジェクトの所有権 設定により、オブジェクトの所有権をバケット所有者に移譲します。アップローダーがアップロードの ACL 要件を満たさない場合、リクエストは失敗します。これにより、バケット所有者は、バケット内の新しくアップロードされたすべてのオブジェクトに対して統一されたオブジェクト所有権を適用できます。

次のバケットポリシーでは、オブジェクトの ACL が bucket-owner-full-control に設定されている場合にのみ、アカウント 111122223333awsdoc-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:::awsdoc-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://awsdoc-example-bucket --acl bucket-owner-full-control

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

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

注記

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

Amazon S3 レプリケーション での S3 オブジェクトの所有権 の使用

S3 オブジェクトの所有権 は Amazon S3 レプリケーション の動作を変更しません。レプリケーションでは、デフォルトで、レプリケート元オブジェクトの所有者もレプリカを所有しています。レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリカの所有権を変更するためのオプション設定を追加できます。レプリケートされたオブジェクトの所有権をレプリケート先バケット所有者に移譲するには、Amazon S3 レプリケーション 所有者上書きオプションを使用します。レプリカの所有権の移譲の詳細については、「レプリカ所有者の変更」を参照してください。