バケットの作成時のオブジェクトの所有権の設定。 - Amazon Simple Storage Service

バケットの作成時のオブジェクトの所有権の設定。

バケットを作成するときに、S3 オブジェクトの所有権を設定できます。既存のバケットのオブジェクトの所有権を設定するには、既存のバケットでのオブジェクトの所有権の設定。 を参照してください。

S3 オブジェクトの所有権は、アクセスコントロールリスト (ACL) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。個々のオブジェクトレベルでアクセスコントロールする必要がある場合を除き、ACL を無効にすることをお勧めします。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

ACL の無効化
  • バケット所有者の強制(推奨) – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は S3 バケットのデータへの許可に影響を与えなくなりました。バケットは、ポリシーを使用してアクセスコントロールを定義します。

ACL の有効化。
  • バケット所有者優先 – バケット所有者は、他のアカウントが bucket-owner-full-control 既定の ACL を使用してバケットに書き込む新しいオブジェクトを所有し、完全に制御できます。

  • オブジェクトライター(デフォルト) – オブジェクトをアップロードする AWS アカウント は、オブジェクトを所有し、オブジェクトを完全に制御し、ACL を介して他のユーザーにオブジェクトへのアクセスを許可できます。

アクセス許可: [Bucket owner enforced] (バケット所有者の強制) 設定、または [Bucket owner preferred] (バケット所有者の優先) 設定を適用するには、s3:CreateBucket および s3:PutBucketOwnershipControls のアクセス許可が必要です。オブジェクトライター設定が適用されたバケットを作成する場合、追加の権限は必要ありません。Amazon S3 のアクセス許可の詳細については、Amazon S3 のアクション、リソース、条件キー を参照してください。

重要

Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなり、オブジェクトごとに個別にアクセスを制御する必要がある異常な状況を除き、ACL を無効にすることをお勧めします。オブジェクトの所有権を使用すると ACL を無効にして、アクセスコントロールに関するポリシーに依存できます。ACL を無効にすると、別の AWS アカウントによってアップロードされたオブジェクトを含むバケットを簡単に維持できます。バケット所有者は、バケット内のすべてのオブジェクトを所有し、ポリシーを使用してオブジェクトへのアクセスを管理できます。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. バケットの作成 を選択します。

    [バケットの作成] ウィザードが開きます。

  3. [バケット名] に、バケットの DNS に準拠する名前を入力します。

    バケット名には次の条件があります。

    • すべての Amazon S3 で一意にする。

    • 3~63 文字で指定する。

    • 大文字を含めないでください。

    • 先頭の文字には小文字の英文字または数字を使用する。

    バケットを作成したら、その名前を変更することはできません。バケットの命名についてさらに詳しくは、バケットの名前付け を参照してください。

    重要

    バケット名にアカウント番号などの機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。

  4. [Region] (リージョン) で、バケットを格納する AWS リージョン を選択します。

    レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。有効な Amazon S3 AWS リージョン のリストについては、アマゾン ウェブ サービスの全般のリファレンスのAWS サービスエンドポイント を参照してください。

  5. オブジェクト所有者 で、ACL を無効または有効にし、バケットにアップロードされたオブジェクトの所有権を制御するには、次のいずれかの設定を選択します。

    ACL は無効です
    • バケット所有者の強制 - ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全にコントロールできます。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えなくなりました。このバケットはアクセスコントロールを定義するためにポリシーを使用します。

      IAM または AWS Organizations ポリシーを使用し、ACL を無効にしてすべての新しいバケットを作成することを要求するには、すべての新しいバケットの ACL を無効にします (バケット所有者の強制) を参照してください。

    ACL の有効化
    • 希望するバケット所有者 — バケット所有者は、他のアカウントが bucket-owner-full-control 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。

      バケット所有者の優先設定を適用して、すべての Amazon S3 アップロードに bucket-owner-full-control 既定 ACL を含めることを要求する場合は、この ACL を使用するオブジェクトアップロードのみを許可するバケットポリシーを追加できます。

    • オブジェクトライター — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザ ーにそのオブジェクトへのアクセス権を付与できます。

    注記

    バケット所有者の強制 の設定、または バケット所有者の優先 の設定を適用するには、次のアクセス許可が必要です: s3:CreateBucket および s3:PutBucketOwnershipControls

  6. ブロックパブリックアクセスのバケット設定 で、バケットに適用するパブリックアクセスブロック設定を選択します。

    パブリックウェブサイトをホスティングする場合など、ユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。バケットに対して有効にしたパブリックアクセスブロック設定は、バケットに作成するすべてのアクセスポイントに対しても有効になります。パブリックアクセスのブロックの詳細については、Amazon S3 ストレージへのパブリックアクセスのブロック を参照してください。

  7. (オプション) [Bucket Versioning] (バケットのバージョニング) では、オブジェクトのバリアントをバケットに保持するかどうかを選択できます。バージョニングの詳細については、S3 バケットでのバージョニングの使用 を参照してください。

    バケットのバージョニングを無効または有効にするには、[Disable] (無効化) または [Enable] (有効化) を選択します。

  8. (オプション) [Tags] (タグ) では、バケットにタグを追加することを選択できます。タグは、ストレージの分類に使用されるキーと値のペアです。

    バケットタグを追加するには、[Key] (キー) とオプションで [Value] (値) を入力し、[Add Tag] (タグの追加) を入力します。

  9. (オプション) [Default encryption] (デフォルトの暗号化) では、Amazon S3 で管理されたキー (SSE-S3) または AWS Key Management Service (AWS KMS) に保存された AWS KMS keys (SSE-KMS) のいずれかで、サーバー側の暗号化を使用するようにバケットを設定することを選択できます。詳細については、「Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定」を参照してください。

    暗号化を有効または無効にするには、[Enable] (有効化) または [Disable] (無効化) を選択します。

  10. (オプション) S3 オブジェクトロックを有効にする場合は、次の手順に従います。

    1. [詳細設定] を選択します。

      重要

      バケットに対するオブジェクトロックは、バケットの作成時にのみ有効にでき、後で無効にすることはできません。バケットに対してオブジェクトロックを有効にすると、バージョニングも有効になります。有効にした後、オブジェクトロックのデフォルト保持設定およびリーガルホールド設定を指定し、新しいオブジェクトを削除または上書きしないようにする必要があります。

    2. オブジェクトロックを有効にする場合は、[Enable] (有効化) を選択し、表示される警告を読んだうえで承認します。

    詳細については、「S3 オブジェクトロックの使用」を参照してください。

    注記

    オブジェクトロックが有効なバケットを作成するには、s3:CreateBuckets3:PutBucketVersioning および s3:PutBucketObjectLockConfiguration の許可が必要です。

  11. バケットの作成 を選択します。

新しいバケットを作成するときにオブジェクトの所有権を設定するには、create-bucket パラメータを指定して AWS CLI と --object-ownership コマンドを使用します。

この例では、AWS CLI を使用して新しいバケットにバケット所有者の強制設定を適用します。

aws s3api create-bucket --bucket DOC-EXAMPLE-BUCKET --region us-east-1 --object-ownership BucketOwnerEnforced
重要

CLI を使用してバケットを作成するときにオブジェクト所有権を設定しない場合、デフォルト設定は ObjectWriter (ACL 有効) になります。

この例では、AWS SDK for Java を使用して新しいバケットのバケット所有者強制設定を設定します。

// Build the ObjectOwnership for CreateBucket CreateBucketRequest createBucketRequest = CreateBucketRequest.builder() .bucket(bucketName) .objectOwnership(ObjectOwnership.BucketOwnerEnforced) .build() // Send the request to Amazon S3 s3client.createBucket(createBucketRequest);

新しいバケットを作成するときに AWS::S3::Bucket と AWS CloudFormation リソースを使用してオブジェクトの所有権を設定するには、「AWS CloudFormation ユーザーガイド」の「AWS::S3::Bucket の OwnershipControls」を参照してください。

S3 Object Ownership にバケット所有者強制設定を適用するには、CreateBucket リクエストヘッダーを x-amz-object-ownership に設定して BucketOwnerEnforced API オペレーションを使用します。詳細については、Amazon S3 API リファレンスCreateBucket を参照してください。

次のステップ: オブジェクトの所有権にバケット所有者の強制設定またはバケット所有者の優先設定を適用した後、さらに次の手順を実行できます。

  • バケット所有者の強制 - IAM または組織ポリシーを使用して、ACL を無効にしてすべての新しいバケットを作成する必要があります。

  • バケット所有者推奨 - S3 バケットポリシーを追加して、バケットへのすべてのオブジェクトのアップロードに bucket-owner-full-control 規定 ACL を要求します