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

S3 のオブジェクトの所有権を使用したアップロードされたオブジェクトの所有権の管理

S3 のオブジェクトの所有権は、バケットにアップロードされた新しいオブジェクトの所有権を管理するために使用できる Amazon S3 のバケットの設定です。デフォルトでは、他の AWS アカウントがバケットにオブジェクトをアップロードしても、オブジェクトはアップロードアカウントによって所有されたままになります。S3 のオブジェクトの所有権を使用すると、既定アクセスコントロールリスト (ACL) の bucket-owner-full-control を指定して他のアカウントによって書き込まれた新しいオブジェクトは、バケット所有者によって自動的に所有され、フルコントロールが与えられます。

異なるアカウントの複数のユーザーやチームが書き込みおよび読み取りを行うことができる共有データストアを作成し、バケット内の新しいオブジェクトの所有権を標準化できます。その後、バケット所有者は、バケットポリシーなどのリソースベースのポリシーを通じて、これらのオブジェクトへのアクセス権を共有および管理できます。S3 のオブジェクトの所有権は、既存のオブジェクトには影響しません。

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

  • オブジェクトを書き込んだアカウント – アップロードしたアカウントがオブジェクトを所有します。

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

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

S3 のオブジェクトの所有権をバケット所有者優先に設定した後、バケットポリシーを追加して、Amazon S3 のすべての PUT オペレーションに bucket-owner-full-control 既定 ACL を含めるように要求できます。この ACL は、バケット所有者に新しいオブジェクトのフルコントロールを付与します。[S3 Object Ownership] (S3 オブジェクトの所有権) 設定では、オブジェクトの所有権をバケット所有者に転送します。アップローダーがアップロードの 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 コマンドラインインターフェイス (AWS CLI) を使用して既定 ACL の bucket-owner-full-control を含めるコピーオペレーションを示しています。

aws s3 cp file.txt s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

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

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

注記

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

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

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

レプリケートされたオブジェクトの所有権をレプリケート先のバケット所有者に移すには、Amazon S3 のレプリケーションの所有者上書きオプションを使用します。レプリカの所有権の移転の詳細については、「レプリカ所有者の変更」を参照してください。

S3 のオブジェクトの所有権の設定

このセクションでは、S3 のオブジェクトの所有権を有効にする方法の例を示します。AWS マネジメントコンソールを使用できます。コンソールの UI を使用して、コードを記述することなくアクセス許可を管理できます。

S3 Object Ownership を AWS マネジメントコンソールで優先されるバケット所有者に設定する

S3 Object Ownership を使用すると、bucket-owner-full-control の既定アクセスコントロールリスト (ACL) を使用して、他の AWS アカウントがバケットにアップロードする新しいオブジェクトの所有権を取得できます。このセクションでは、コンソールを使用して Object Ownership を設定する方法について説明します。

S3 バケットで優先されるバケット所有者へのオブジェクトの所有権の設定

  1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets (バケット)] リストで、S3 Object Ownership を有効にするバケットの名前を選択します。

  3. [Permissions] タブを選択します。

  4. [Object Ownership] で [Edit (編集)] を選択します

  5. [優先されるバケット所有者] を選択し、[保存] を選択します。

上記の手順では、Object Ownership は、bucket-owner-full-control 既定 ACL を持つ他のアカウントによって書き込まれた新しいオブジェクトの所有権を取得します。オブジェクトの所有権の強制的な適用については、「新しいオブジェクトの所有権を取得するにはどうすればよいですか?」を参照してください。