Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

ACL を無効にする前提条件。

フォーカスモード
ACL を無効にする前提条件。 - Amazon Simple Storage Service

Amazon S3 のバケットアクセスコントロールリスト (ACL) は、S3 バケット内の個々のオブジェクトに対する詳細なアクセス許可を定義し、それらのオブジェクトにアクセスして変更できる AWS アカウントまたはグループを指定できるメカニズムです。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、アクセスの管理には AWS Identity and Access Management (IAM) とバケットポリシーを使用し、ACL を無効にしておくことをお勧めします。

バケットで ACL が有効になっている場合は、ACL を無効にする前に、次の前提条件を満たしてください。

バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。

ACL を無効にすると、バケットおよびオブジェクト ACL によって付与される許可がアクセスに影響しなくなります。ACL を無効にする前に、バケットとオブジェクト ACL を確認します。

IAM ポリシーでは、既存のバケットとオブジェクト ACL にはそれぞれ同等のものが含まれます。次のバケットポリシー例は、バケットおよびオブジェクト ACL の READWRITE の許可は IAM 許可にマッピングされます。各 ACL が IAM アクセス許可に変換される方法の詳細については、ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング を参照してください。

ACL を無効にする前に:

  • バケット ACL が AWS アカウント外へのアクセスを許可している場合は、まず、バケット ACL のアクセス許可をバケットポリシーに移行する必要があります。

  • 次に、バケット ACL をデフォルトのプライベート ACL にリセットします。

  • オブジェクトレベルの ACL アクセス許可を確認し、バケットポリシーに移行することもお勧めします。

バケット ACL がアカウント外の他のユーザーに読み取りまたは書き込みアクセス許可を付与している場合は、ACL を無効にする前に、これらのアクセス許可をバケットポリシーに移行する必要があります。これらのアクセス許可を移行した後、[オブジェクトの所有権][バケット所有者強制] 設定にすることができます。アカウントの外部で読み取りまたは書き込みアクセスを許可するバケット ACL を移行しないと、[バケット所有者の強制] 設定を適用するリクエストが失敗し、InvalidBucketAclWithObjectOwnership エラーコードを返します。

バケット ACL が AWS アカウント の外部へのアクセスを許可する場合は、ACL を無効にする前にバケット ACL アクセス権限をバケットポリシーに移行し、バケット ACL をデフォルトのプライベート ACL にリセットする必要があります。移行とリセットを行わない場合、ACL を無効にするために [バケット所有者の強制] 設定を適用するリクエストは失敗し、InvalidBucketAclWithObjectOwnership エラーコードが返されます。また、オブジェクト ACL アクセス権限を確認し、バケットポリシーに移行することをお勧めします。

バケットポリシーへの ACL アクセス権限を確認し、移行するには、以下のトピックを参照してください。

バケットポリシーの例

これらのバケットポリシーの例は、READWRITE バケット、サードパーティー AWS アカウントの ACL アクセス権限をバケットポリシーに移行およびバケット化およびオブジェクト化する方法を示しています。READ_ACPWRITE_ACP ACL は、ACL 関連のアクセス許可 (s3:GetBucketAcls3:GetObjectAcls3:PutBucketAcls3:PutObjectAcl) を付与するため、ポリシーとの関連性は低くなります。

例 — バケットの READ ACL

バケットの内容の一覧表示を AWS アカウント 111122223333 に許可する READ ACL がバケットにある場合、バケットに対して s3:ListBuckets3:ListBucketVersionss3:ListBucketMultipartUploads の各アクセス許可を付与するバケットポリシーを記述できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to list the objects in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }
例 — バケット内の各オブジェクトの READ ACL

AWS アカウント 111122223333 にアクセスを許可する READ ACL がバケット内の各オブジェクトにある場合、バケット内の各オブジェクトに対する s3:GetObject アクセス許可と s3:GetObjectVersion アクセス許可をこのアカウントに付与するバケットポリシーを記述できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Read permission for every object in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

この例のリソースエレメントは、特定のオブジェクトへのアクセスを許可します。

"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
例 — バケットにオブジェクトを書き込むアクセス許可を付与する WRITE ACL

バケットへのオブジェクトの書き込み許可を AWS アカウント 111122223333 に付与する WRITE ACL がバケットにある場合は、バケットに s3:PutObject 許可を付与するバケットポリシーを記述できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to write objects to a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

S3 コンソールを使用した、ACL アクセス権限の確認と移行

バケットの ACL アクセス権限を確認する方法
  1. AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/ を開きます。

  2. [バケット] リストで、バケット名を選択します。

  3. [アクセス許可] タブを選択します。

  4. アクセスコントロールリスト (ACL) で、バケット ACL アクセス権限を確認します。

オブジェクトの ACL アクセス権限を確認する方法
  1. AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/ を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。

  3. [オブジェクト] リストで、オブジェクト名を選択します。

  4. [アクセス許可] タブを選択します。

  5. アクセスコントロールリスト (ACL) で、オブジェクト ACL アクセス権限を確認します。

ACL アクセス権限を移行してバケット ACL を更新します
  1. AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/ を開きます。

  2. [バケット] リストで、バケット名を選択します。

  3. アクセス許可タブの バケットポリシー編集をクリックします。

  4. ポリシーボックスで、バケットポリシーを追加または更新します。

    バケットポリシーの例ついては、バケットポリシーの例」 と「ユースケースの例 を参照してください。

  5. [Save changes] (変更の保存) をクリックします。

  6. バケット ACL を更新して、他のグループ、または AWS アカウント への ACL アクセス権限を削除します。

  7. オブジェクト所有権にバケット所有者の強制設定を適用します。

AWS CLI を使用して、ACL アクセス権限を確認して移行します。

  1. バケットのバケット ACL を返すには、get-bucket-acl AWS CLI コマンドを使用します。

    aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket

    例えば、このバケット ACL は WRITEREAD にサードパーティーのアカウントへのアクセスを付与します。この ACL では、サードパーティーアカウントは正規ユーザー ID で識別します。[バケット所有者の強制] 設定を適用して ACL を無効にするには、サードパーティアカウントのこれらの許可をバケットポリシーに移行する必要があります。

    { "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }

    その他の ACL の例については、ユースケースの例 を参照してください。

  2. バケット ACL アクセス権限をバケットポリシーに移行します。

    この例のバケットポリシーは、サードパーティアカウントの s3:PutObjects3:ListBucket アクセス許可を付与します。バケットポリシーでは、サードパーティーアカウントは AWS アカウント ID (111122223333)で識別されます。

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyForCrossAccountAllowUpload", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

    バケットポリシーの例については、バケットポリシーの例ユースケースの例 を参照してください。

  3. 特定のオブジェクトの ACL を返すには、get-object-acl AWS CLI コマンドを使用します。

    aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
  4. 必要に応じて、オブジェクト ACL アクセス権限をバケットポリシーに移行します。

    このリソースエレメントの例では、バケットポリシーの特定のオブジェクトへのアクセスを付与します。

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
  5. バケットの ACL をデフォルトの ACL にリセットします。

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  6. オブジェクト所有者に[バケット所有者の強制] 設定を適用します。

承認に ACL を必要としたリクエストを特定する

承認に ACL を必要とした Amazon S3 リクエストを特定するには、Amazon S3 サーバーアクセスログまたは AWS CloudTrail の aclRequired 値を使用します。リクエストが承認に ACL を必要としたか、ACL を指定する PUT リクエストがある場合、文字列は Yes です。ACL が不要であったか、bucket-owner-full-control の既定 ACL を設定するか、リクエストがバケットポリシーで許可されている場合、aclRequired 値の文字列は Amazon S3 サーバーアクセスログでは「-」となり、CloudTrail では存在しません。期待される aclRequired 値の詳細については、「一般的な Amazon S3 リクエストの aclRequired 値」を参照してください。

PutBucketAcl または PutObjectAcl リクエストに ACL ベースのアクセス許可を付与するヘッダーが含まれている場合は、bucket-owner-full-control 既定 ACL を除き、ACL を無効にする前にこれらのヘッダーを削除する必要があります。待機しないと、リクエストは失敗します。

承認に ACL を必要としたその他すべてのリクエストについては、これらの ACL アクセス許可をバケットポリシーに移行します。次に、バケット所有者の強制設定を有効にする前に、バケットの ACL をすべて削除します。

注記

オブジェクトの ACL は削除しないでください。削除すると、アクセス許可をオブジェクトの ACL に依存しているアプリケーションはアクセスできなくなります。

承認に ACL を必要としたリクエストがない場合は、ACL の無効化に進むことができます。リクエストの識別方法の詳細については、「Amazon S3 アクセスログを使用したリクエストの識別」と「CloudTrail を使用した Amazon S3 リクエストの識別」を参照してください。

ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。

[バケット所有者の強制] 設定を適用して ACL を無効にすると、リクエストでバケット所有者の完全制御 ACL が使用されているか、ACL が指定されていない場合にのみ、新しいオブジェクトをバケットにアップロードできます。ACL を無効にする前に、ACL 関連の条件キーのバケットポリシーを確認します。

バケットポリシーが ACL 関連の条件キーを使用して、bucket-owner-full-control 既定 ACL (例えば、s3:x-amz-acl) では、バケットポリシーを更新する必要はありません。次のバケットポリシーでは、s3:x-amz-acl S3 の規定 ACL bucket-owner-full-control リクエストを必要とする PutObject を使用します。このポリシーでは、引き続きオブジェクトライターが bucket-owner-full-control 既定 ACL を指定する必要があります。ただし、ACL が無効になっているバケットは引き続きこの ACL を受け入れるため、クライアント側の変更は不要で、リクエストは引き続き成功します。

{ "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:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

ただし、バケットポリシーで異なる ACL を必要とする ACL 関連の条件キーを使用する場合は、この条件キーを削除する必要があります。この例のバケットポリシーには、 S3 の public-read ACL を PutObject リクエストして、ACL が無効になる前に更新する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with public read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

ユースケースの例

以下の例では、特定のユースケースでの ACL アクセス権限をバケットポリシーに移行する方法を示します。

サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する

バケット所有者の強制設定を適用してサーバーアクセスログ送信先バケット (別名 ターゲットバケット) の ACL を無効にするには、バケットの S3 ログ配信グループへの ACL アクセス許可をバケットポリシーのログ記録サービスプリンシパル (logging.s3.amazonaws.com) に移行する必要があります。ログ配信許可の詳細については、ログ配信許可 を参照してください。

このバケット ACL は、S3 ログ配信グループへの WRITEREAD_ACP アクセスを許可します。

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "WRITE" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "READ_ACP" } ] }
S3 ログ配信グループのバケット ACL アクセス権限を、バケットポリシーのロギングサービスプリンシパルに移行します。
  1. 次のバケットポリシーをバケットに追加して、例の値を置き換えます。

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-LOGGING-PREFIX*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID" } } } ] }
  2. バケットの ACL をデフォルトの ACL にリセットします。

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. オブジェクト所有権のバケット所有者の強制 を送信先バケットに適用します。

バケット内のオブジェクトへのパブリック読み取りアクセスを付与します

オブジェクト ACL がバケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可する場合、これらの ACL アクセス権限をバケットポリシーに移行できます。

このオブジェクト ACL は、バケット内のオブジェクトへのパブリック読み取りアクセスを許可します。

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
パブリック読み取り ACL アクセス権限をバケットポリシーに移行します。
  1. バケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可するには、例の値を置き換えて、次のバケットポリシーを追加します。

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

    バケットポリシー内の特定のオブジェクトへのパブリックアクセスを許可するには、Resource エレメントに次の形式を使用します。

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"

    特定のプレフィックスを持つすべてのオブジェクトへのパブリックアクセスを許可するには、Resource エレメントに次の形式を使用します。

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
  2. オブジェクト所有者に[バケット所有者の強制] 設定を適用します。

S3 バケットへのアクセス権を Amazon ElastiCache (Redis OSS) に付与する

S3 バケットに ElastiCache (Redis OSS) のバックアップをエクスポートできます。これにより、ElastiCache の外部からバックアップにアクセスできます。バックアップを S3 バケットにエクスポートするには、スナップショットをバケットにコピーするための ElastiCache 許可を付与する必要があります。バケット ACL で ElastiCache にアクセス許可を付与した場合は、[バケット所有者の強制] 設定を適用して ACL を無効にする前に、これらの許可をバケットポリシーに移行する必要があります。詳細については、Amazon ElastiCache ユーザーガイド Amazon S3 バケットへの ElastiCache アクセスの許可 を参照してください。

次の例は、ElastiCache に許可を付与するバケット ACL アクセス許可を示しています。

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
ElastiCache (Redis OSS) のバケット ACL アクセス許可をバケットポリシーに移行するには
  1. 次のバケットポリシーをバケットに追加し、例の値を置き換えます。

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "Region.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
  2. バケットの ACL をデフォルトの ACL にリセットします。

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. オブジェクト所有者に[バケット所有者の強制] 設定を適用します。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.