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

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

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

S3 オブジェクトの所有権は、アクセスコントロールリスト (ACL) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。デフォルトでは、オブジェクト所有者はバケット所有者の強制設定に設定され、新しいバケットの ACL が無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、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 のアクセス許可が必要です。オブジェクトライター設定が適用されたバケットを作成する場合、追加の権限は必要ありません。詳細については、「サービス認可リファレンス」の「Actions, resources, and condition keys for Amazon S3」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。

重要

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

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

  2. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。

    注記

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

  3. 左側のナビゲーションペインで、[バケット] を選択します。

  4. [Create bucket (バケットの作成)] を選択します。

    [バケットの作成] ページが開きます。

  5. [全般設定] で、バケットが作成される AWS リージョン を確認します。

  6. [バケットタイプ] で、[汎用] を選択します。

  7. [バケット名] にバケットの名前を入力します。

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

    • パーティション内で一意にする必要があります。パーティションは、リージョンのグループです。AWS には、現在、aws (標準リージョン)、aws-cn (中国リージョン)、および aws-us-gov (AWS GovCloud (US) Regions) の 3 つのパーティションがあります。

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

    • 小文字、数字、ドット (.)、およびハイフン (-) のみで構成できます。互換性を最も高くするには、静的ウェブサイトホスティング専用のバケットを除き、バケット名にドット (.) を使用しないことをお勧めします。

    • 文字や数字で始まり、文字や数字で終わります。

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

    重要

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

  8. AWS Management Console では、既存のバケットの設定を新しいバケットにコピーできます。既存のバケットの設定をコピーしない場合は、次のステップにスキップします。

    注記

    このオプションの特徴:

    • AWS CLI では使用できません。コンソールでのみ利用できます。

    • ディレクトリバケットには利用できません。

    • バケットポリシーは既存のバケットから新しいバケットにコピーしません。

    既存のバケットの設定をコピーするには、[既存のバケットから設定をコピー][バケットを選択] をクリックします。[バケットを選択] ウィンドウが開きます。コピーする設定を持つバケットを検索して、[バケットを選択] をクリックします。[バケットを選択] ウィンドウが閉じて、[バケットを作成] ウィンドウが再び開きます。

    [既存のバケットから設定をコピー] に、選択したバケットの名前が表示されるようになります。コピーしたバケット設定を削除するための [デフォルトを復元] オプションも表示されます。[バケットを作成] ページで、バケットの残りの設定を確認します。ここで、選択したバケットの設定と一致していることを確認できます。最後のステップにスキップできます。

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

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

      デフォルトでは、ACL は無効になっています。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、ACL は無効にしておくことをお勧めします。詳細については、「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。

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

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

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

    注記

    デフォルト設定は [バケット所有者の強制] です。デフォルト設定を適用して ACL を無効のままにするのに必要なのは、s3:CreateBucket アクセス許可のみです。ACL を有効にするためには、s3:PutBucketOwnershipControls アクセス許可が必要です。

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

    デフォルトでは、4 つすべての [パブリックアクセスをブロック] 設定が有効になっています。特定のユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。ブロックパブリックアクセスの詳細については、Amazon S3 ストレージへのパブリックアクセスのブロック を参照してください。

    注記

    すべての [パブリックアクセスをブロック] 設定を有効にするのに必要なのは、s3:CreateBucket アクセス許可のみです。[パブリックアクセスをブロック] 設定をオフにするには、s3:PutBucketPublicAccessBlock アクセス許可が必要です。

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

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

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

    (オプション) タグを追加するには、[キー] を入力してから、オプションの [値] を入力し、[タグの追加] を選択します。

  13. [デフォルトの暗号化] で、[編集] を選択します。

  14. デフォルトの暗号化を設定するには、[暗号化タイプ] で次のいずれかを選択します。

    • Amazon S3 マネージドキー (SSE-S3)

    • AWS Key Management Service キー (SSE-KMS)

      重要

      デフォルト暗号化設定に SSE-KMS オプションを使用する場合、AWS KMS の 1 秒あたりのリクエスト (RPS) 制限が適用されます。AWS KMS クォータの詳細およびクォータの引き上げをリクエストする方法については、「AWS Key Management Service デベロッパーガイド」の「クォータ」を参照してください。

    バケットと新しいオブジェクトは、暗号化設定の基本レベルとして Amazon S3 マネージドキーを使用したサーバー側の暗号化で暗号化されます。デフォルトの暗号化の詳細については、「Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定」を参照してください。

    Amazon S3 のサーバー側の暗号化を使用してデータを暗号化する方法の詳細については、「Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)」を参照してください。

  15. [AWS Key Management Service キー (SSE-KMS)] を選択した場合は、以下の操作を実行します。

    1. [AWS KMS キー] で、次のいずれかの方法で KMS キーを指定します。

      • 使用可能な KMS キーのリストから選択するには、[AWS KMS keys から選択する] を選択し、使用可能なキーのリストから自分の KMS キーを選択します。

        AWS マネージドキー (aws/s3) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、AWS Key Management Serviceデベロッパーガイドの「カスタマーキーと AWS キー」を参照してください。

      • KMS キー ARN を入力するには、[AWS KMS key ARN を入力] を選択し、表示されるフィールドに KMS キー ARN を入力します。

      • AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、[KMS キーを作成] を選択します。

        AWS KMS key の作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。

      重要

      バケットと同じ AWS リージョン で使用可能な KMS キーのみを使用できます。Amazon S3 コンソールには、バケットと同じリージョンで最初の 100 個の KMS キーしか表示されません。リストに存在しない KMS キーを使用するには、KMS キー ARN を入力する必要があります。別のアカウントが所有している KMS キーを使用する場合は、まずそのキーを使用するアクセス許可が必要であり、次に KMS キー ARN を入力する必要があります。KMS キーのクロスアカウント権限の詳細については、AWS Key Management Service デベロッパーガイドの「他のアカウントで使用できる KMS キーを作成する」を参照してください。SSE-KMS に関する詳細は、「AWS KMS (SSE−KMS) によるサーバー側の暗号化の指定」を参照してください。

      Amazon S3 でサーバー側の暗号化に AWS KMS key を使用する場合は、対称暗号化 KMS キーを選択する必要があります。Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、AWS Key Management Service デベロッパーガイドの「Identifying symmetric and asymmetric KMS keys」(対称および非対称 KMS キーの識別) を参照してください。

      AWS KMS key の作成の詳細については、AWS Key Management Service デベロッパーガイドキーの作成を参照してください。Amazon S3 での AWS KMS の使用に関する詳細は、「AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用」を参照してください。

    2. SSE-KMS でデフォルトの暗号化を使用するようにバケットを設定する場合は、S3 バケットキーを有効にすることもできます。S3 バケットキーは、Amazon S3 から AWS KMS へのリクエストトラフィックを減らし、暗号化のコストを削減します。詳細については、「Amazon S3 バケットキーを使用した SSE−KMS のコストの削減」を参照してください。

      S3 バケットキーを使用するには、[バケットキー][有効化] を選択します。

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

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

      重要

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

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

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

    注記

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

  17. [バケットを作成] を選択します。

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

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

aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1 --object-ownership BucketOwnerEnforced
重要

AWS 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 オブジェクト所有権に [バケット所有者の強制] 設定を適用するには、x-amz-object-ownership リクエストヘッダーを BucketOwnerEnforced に設定して CreateBucket API オペレーションを使用します。詳細と例については、「Amazon Simple Storage Service API リファレンス」の「CreateBucket」を参照してください。

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

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

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