View a markdown version of this page

Prasyarat untuk menonaktifkan ACL - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Prasyarat untuk menonaktifkan ACL

Daftar kontrol akses bucket (ACL) di Amazon S3 adalah mekanisme yang memungkinkan Anda menentukan izin granular untuk objek individual dalam bucket S3, yang menentukan akun atau grup AWS mana yang dapat mengakses dan memodifikasi objek tersebut. Mayoritas kasus penggunaan modern di Amazon S3 tidak lagi memerlukan penggunaan ACL. Kami menyarankan Anda menggunakan AWS Identity and Access Management (IAM) dan kebijakan bucket untuk mengelola akses, dan untuk menjaga ACL dinonaktifkan, kecuali dalam keadaan di mana Anda perlu mengontrol akses untuk setiap objek secara individual.

Jika ACL diaktifkan di bucket, sebelum menonaktifkan ACL, selesaikan prasyarat berikut:

Tinjau ACL bucket dan objek dan migrasi izin ACL

Saat Anda menonaktifkan ACL, izin yang diberikan oleh bucket dan ACL objek tidak lagi memengaruhi akses. Sebelum menonaktifkan ACL, tinjau bucket dan ACL objek Anda.

Setiap bucket dan ACL objek yang ada memiliki kesetaraan dalam kebijakan IAM. Contoh kebijakan bucket berikut menunjukkan cara READ dan izin WRITE untuk bucket dan objek ACL memetakan ke izin IAM. Untuk informasi selengkapnya tentang bagaimana setiap ACL menerjemahkan ke izin IAM, lihat Pemetaan izin ACL dan izin kebijakan akses.

Sebelum Anda menonaktifkan ACL:

  • Jika bucket ACL memberikan akses di luar AWS akun, pertama-tama, Anda harus memigrasikan izin ACL bucket ke kebijakan bucket.

  • Selanjutnya, setel ulang bucket ACL Anda ke ACL pribadi default.

  • Kami juga menyarankan Anda meninjau izin ACL tingkat objek dan memigrasikannya ke kebijakan bucket Anda.

Jika ACL bucket Anda memberikan izin baca atau tulis kepada orang lain di luar akun Anda, sebelum Anda dapat menonaktifkan ACL, Anda harus memigrasikan izin ini ke kebijakan bucket Anda. Setelah memigrasikan izin ini, Anda dapat menyetel Kepemilikan Objek ke setelan yang diberlakukan pemilik Bucket. Jika Anda tidak memigrasikan ACL bucket yang memberikan akses baca atau tulis di luar akun, permintaan Anda untuk menerapkan pengaturan yang diberlakukan pemilik Bucket gagal dan mengembalikan kode kesalahan InvalidBucketAclWithObjectOwnership.

Jika ACL bucket Anda memberikan akses di luar Akun AWS, sebelum menonaktifkan ACL, Anda harus memigrasikan izin ACL bucket ke kebijakan bucket dan mengatur ulang ACL bucket Anda ke ACL pribadi default. Jika Anda tidak melakukan migrasi dan mengatur ulang, permintaan Anda untuk menerapkan pengaturan yang diberlakukan pemilik Bucket untuk menonaktifkan ACL gagal dan mengembalikan kode kesalahan. InvalidBucketAclWithObjectOwnership Kami juga menyarankan Anda meninjau izin ACL objek dan memigrasikannya ke kebijakan bucket Anda.

Untuk meninjau dan memigrasi izin ACL ke kebijakan bucket, lihat topik berikut.

Contoh kebijakan bucket

Contoh kebijakan bucket ini menunjukkan cara memigrasi READ dan WRITE meng-bucket serta objek izin ACL untuk pihak ketiga Akun AWS ke kebijakan bucket. READ_ACPdan WRITE_ACP ACL kurang relevan untuk kebijakan karena mereka memberikan ACL-related izin (s3:GetBucketAcl,, s3:GetObjectAcls3:PutBucketAcl, dans3:PutObjectAcl).

contoh— BACA ACL untuk ember

Jika bucket Anda memiliki READ ACL yang memberikan Akun AWS 111122223333 izin untuk mencantumkan konten bucket, Anda dapat menulis kebijakan bucket yang memberikan s3:ListBucket s3:ListBucketMultipartUploads izin untuk bucket Anda. s3:ListBucketVersions

JSON
{ "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" } ] }
contoh— BACA ACL untuk setiap objek dalam ember

Jika setiap objek di bucket Anda memiliki READ ACL yang memberikan akses ke Akun AWS 111122223333, Anda dapat menulis kebijakan bucket yang memberikan s3:GetObject dan s3:GetObjectVersion izin ke akun ini untuk setiap objek di bucket Anda.

JSON
{ "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/*" } ] }

Contoh elemen sumber daya ini memberikan akses ke objek tertentu.

"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
contoh— TULIS ACL yang memberikan izin untuk menulis objek ke ember

Jika bucket Anda memiliki WRITE ACL yang memberikan Akun AWS 111122223333 izin untuk menulis objek ke bucket, Anda dapat menulis kebijakan bucket yang memberikan s3:PutObject izin untuk bucket Anda.

JSON
{ "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/*" } ] }

Menggunakan konsol S3 untuk meninjau dan memigrasikan izin ACL

Untuk meninjau izin ACL bucket
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di dalam daftar Bucket, pilih nama bucket.

  3. Pilih tab Izin.

  4. Di bagian bawah Daftar kontrol akses (ACL), tinjau izin ACL bucket Anda.

Untuk meninjau izin ACL objek
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di daftar Bucket, pilih nama bucket yang berisi objek Anda.

  3. Di daftar Objek, pilih nama objek Anda.

  4. Pilih tab Izin.

  5. Di bagian bawah Daftar kontrol akses (ACL), tinjau izin ACL objek Anda.

Untuk memigrasi izin ACL dan memperbarui bucket ACL
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di dalam daftar Bucket, pilih nama bucket.

  3. Pada tab Izin, di bawah Kebijakan bucket, pilih Edit.

  4. Di kotak Kebijakan, tambahkan atau perbarui kebijakan bucket Anda.

    Misalnya kebijakan bucket, lihat Contoh kebijakan bucket danContoh kasus penggunaan.

  5. Pilih Simpan perubahan.

  6. Perbarui bucket ACL Anda untuk menghapus pemberian ACL ke grup lain atau. Akun AWS

  7. Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.

Menggunakan AWS CLI untuk meninjau dan memigrasi izin ACL

  1. Untuk mengembalikan bucket ACL untuk bucket Anda, gunakan get-bucket-acl AWS CLI perintah:

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

    Misalnya, bucket ACL ini memberikan WRITE dan READ akses ke akun pihak ketiga. Dalam ACL ini, akun pihak ketiga diidentifikasi oleh ID pengguna kanonik. Untuk menerapkan pengaturan yang diberlakukan pemilik Bucket dan menonaktifkan ACL, Anda harus memigrasikan izin ini untuk akun pihak ketiga ke kebijakan bucket.

    { "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }

    Untuk contoh ACL lainnya, lihat Contoh kasus penggunaan.

  2. Migrasikan izin ACL bucket Anda ke kebijakan bucket:

    Contoh kebijakan bucket ini memberikan izin s3:PutObject dan s3:ListBucket untuk akun pihak ketiga. Dalam kebijakan bucket, akun pihak ketiga diidentifikasi oleh Akun 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/*" } ] }

    Untuk contoh kebijakan bucket lainnya, lihat Contoh kebijakan bucket dan Contoh kasus penggunaan.

  3. Untuk mengembalikan ACL untuk objek tertentu, gunakan get-object-acl AWS CLI perintah.

    aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
  4. Jika diperlukan, migrasi izin ACL objek ke kebijakan bucket Anda.

    Contoh elemen sumber daya ini memberikan akses ke objek tertentu dalam kebijakan bucket.

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
  5. Setel ulang ACL untuk bucket Anda ke ACL default.

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  6. Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.

Identifikasi permintaan yang memerlukan ACL untuk otorisasi

Untuk mengidentifikasi permintaan Amazon S3 yang memerlukan ACL untuk otorisasi, Anda dapat menggunakan nilai aclRequired di log akses server Amazon S3, atau AWS CloudTrail. Jika permintaan memerlukan ACL untuk otorisasi atau jika Anda memiliki permintaan PUT yang menentukan ACL, string adalah Yes. Jika tidak ada ACL yang diperlukan, atau jika Anda menyetel ACL bucket-owner-full-control kalengan, atau jika permintaan diizinkan oleh kebijakan bucket Anda, string aclRequired nilainya adalah "-" di log akses server Amazon S3 dan tidak ada di dalamnya. CloudTrail Untuk informasi selengkapnya tentang nilai aclRequired yang diharapkan, lihat Nilai ACLRequired untuk permintaan Amazon S3 umum.

Jika Anda memiliki PutBucketAcl atau PutObjectAcl meminta dengan header yang memberikan ACL-based izin, dengan pengecualian ACL bucket-owner-full-control kalengan, Anda harus menghapus header tersebut sebelum Anda dapat menonaktifkan ACL. Jika tidak, permintaan Anda akan gagal.

Untuk semua permintaan lain yang memerlukan ACL untuk otorisasi, migrasi izin ACL tersebut ke kebijakan bucket. Kemudian, hapus ACL bucket apa pun sebelum Anda mengaktifkan pengaturan yang diberlakukan pemilik bucket.

catatan

Jangan hapus ACL objek. Jika tidak, aplikasi yang mengandalkan ACL objek untuk izin akan kehilangan akses.

Jika Anda melihat bahwa tidak ada permintaan yang memerlukan ACL untuk otorisasi, Anda dapat melanjutkan untuk menonaktifkan ACL. Untuk informasi selengkapnya tentang mengidentifikasi permintaan, lihat Menggunakan log akses server Amazon S3 untuk mengidentifikasi permintaan danMengidentifikasi permintaan Amazon S3 menggunakan CloudTrail.

Meninjau dan memperbarui kebijakan bucket yang menggunakan kunci ACL-related kondisi

Setelah Anda menerapkan pengaturan diberlakukan pemilik Bucket untuk menonaktifkan ACL, objek baru dapat diunggah ke bucket Anda hanya jika permintaan menggunakan ACL kontrol penuh pemilik bucket atau tidak menentukan ACL. Sebelum menonaktifkan ACL, tinjau kebijakan bucket Anda untuk ACL-related kunci kondisi.

Jika kebijakan bucket menggunakan kunci ACL-related kondisi untuk mewajibkan ACL yang bucket-owner-full-control dikalengkan (misalnya,s3:x-amz-acl), Anda tidak perlu memperbarui kebijakan bucket. Kebijakan bucket berikut menggunakan s3:x-amz-acl untuk mewajibkan ACL yang terekam bucket-owner-full-control untuk permintaan PutObject S3. Kebijakan ini masih mengharuskan penulis objek untuk menentukan ACL terekam bucket-owner-full-control. Namun, bucket dengan ACL dinonaktifkan masih menerima ACL ini, sehingga permintaan terus berhasil tanpa perlu perubahan sisi klien.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl", "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" } } } ] }

Namun, jika kebijakan bucket menggunakan kunci ACL-related kondisi yang memerlukan ACL berbeda, Anda harus menghapus kunci kondisi ini. Contoh kebijakan bucket ini memerlukan public-read ACL untuk permintaan S3 PutObject, dan karenanya harus diperbarui sebelum menonaktifkan ACL.

JSON
{ "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" } } } ] }

Contoh kasus penggunaan

Contoh berikut ini menunjukkan cara memigrasikan izin ACL ke kebijakan bucket untuk kasus penggunaan tertentu.

Berikan akses ke grup pengiriman log S3 untuk pencatatan akses server

Jika Anda ingin menerapkan pengaturan yang diberlakukan pemilik Bucket untuk menonaktifkan ACL untuk bucket tujuan pencatatan akses server (juga dikenal sebagai bucket target), Anda harus memigrasikan izin ACL bucket untuk grup pengiriman log S3 ke layanan logging pengguna utama (logging.s3.amazonaws.com) dalam kebijakan bucket. Untuk informasi lebih lanjut tentang izin pengiriman log, lihat Izin untuk pengiriman log.

ACL bucket ini memberikan akses WRITE dan READ_ACP ke grup pengiriman log S3:

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "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" } ] }
Untuk memigrasikan izin ACL bucket untuk grup pengiriman log S3 ke pengguna utama layanan logging dalam kebijakan bucket
  1. Tambahkan kebijakan bucket berikut ke bucket tujuan Anda, ganti nilai contoh.

    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. Setel ulang ACL untuk bucket tujuan Anda ke ACL default.

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek ke bucket tujuan Anda.

Berikan akses baca publik ke objek dalam bucket

Jika ACL objek Anda memberikan akses baca publik ke semua objek di bucket, Anda dapat memigrasikan izin ACL ini ke kebijakan bucket.

Objek ACL ini memberikan akses baca publik ke objek dalam bucket:

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
Untuk memigrasikan izin ACL baca publik ke kebijakan bucket
  1. Untuk memberikan akses baca publik ke semua objek di bucket Anda, tambahkan kebijakan bucket berikut, ganti nilai contoh.

    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/*" ] } ] }

    Untuk memberikan akses publik ke objek tertentu dalam kebijakan bucket, gunakan format berikut untuk elemen Resource tersebut.

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

    Untuk memberikan akses publik ke semua objek dengan prefiks tertentu, gunakan format berikut untuk elemen Resource tersebut.

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
  2. Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.

Berikan Amazon ElastiCache (Redis OSS) akses ke bucket S3 Anda

Anda dapat mengekspor cadangan ElastiCache (Redis OSS) Anda ke bucket S3, yang memberi Anda akses ke cadangan dari luar. ElastiCache Untuk mengekspor cadangan ke bucket S3, Anda harus memberikan ElastiCache izin untuk menyalin snapshot ke bucket. Jika Anda telah memberikan izin ke ElastiCache ACL bucket, Anda harus memigrasikan izin ini ke kebijakan bucket sebelum menerapkan pengaturan yang diberlakukan pemilik Bucket untuk menonaktifkan ACL. Untuk informasi selengkapnya, lihat Memberikan ElastiCache akses ke bucket Amazon S3 Anda di ElastiCache Panduan Pengguna Amazon.

Contoh berikut menunjukkan izin ACL bucket yang memberikan izin. ElastiCache

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
Untuk memigrasikan izin ACL bucket untuk ElastiCache (Redis OSS) ke kebijakan bucket
  1. Tambahkan kebijakan bucket berikut ke bucket Anda, ganti nilai contoh.

    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. Setel ulang ACL untuk bucket Anda ke ACL default:

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.