Prasyarat untuk menonaktifkan ACLs - 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 ACLs

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. ACLs Kami menyarankan Anda menggunakan AWS Identity and Access Management (IAM) dan kebijakan bucket untuk mengelola akses, dan untuk tetap ACLs dinonaktifkan, kecuali dalam keadaan yang tidak biasa di mana Anda perlu mengontrol akses untuk setiap objek secara individual.

Jika Anda telah ACLs mengaktifkan di bucket, sebelum menonaktifkan ACLs, lengkapi prasyarat berikut:

Tinjau bucket dan objek ACLs dan migrasi izin ACL

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

Setiap bucket dan objek Anda yang ada ACLs memiliki ekuivalen dalam kebijakan IAM. Contoh kebijakan bucket berikut menunjukkan cara READ dan WRITE izin untuk bucket dan ACLs peta objek 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 ACLs:

  • 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 bucket Anda ACLs memberikan izin baca atau tulis kepada orang lain di luar akun Anda, sebelum Anda dapat menonaktifkan ACLs, 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 bucket ACLs yang memberikan akses baca atau tulis di luar akun, permintaan Anda untuk menerapkan setelan yang diberlakukan pemilik Bucket gagal dan mengembalikan kode InvalidBucketAclWithObjectOwnershipkesalahan.

Jika bucket ACL memberikan akses di luar Akun AWS, sebelum menonaktifkan ACLs, 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 ACLs gagal dan mengembalikan kode InvalidBucketAclWithObjectOwnershipkesalahan. 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 kurang WRITE_ACP ACLs relevan untuk kebijakan karena mereka memberikan izin terkait ACL (s3:GetBucketAcl,, s3:GetObjectAcls3:PutBucketAcl, dan). s3:PutObjectAcl

contoh – READ ACL untuk bucket

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

{ "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 — READ ACLs untuk setiap benda 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.

{ "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 – ACL WRITE yang memberikan izin untuk menulis objek ke bucket

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.

{ "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 AWS Management Console 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 AWS Management Console 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 AWS Management Console 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 dan menonaktifkan pemilik Bucket ACLs, Anda harus memigrasikan izin ini untuk akun pihak ketiga ke kebijakan bucket.

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

    Untuk contoh lain ACLs, lihatContoh 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 diperlukan ACLs untuk otorisasi, Anda dapat menggunakan aclRequired nilai 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 ACLs diperlukan, atau jika Anda menyetel ACL yang bucket-owner-full-control dikalengkan, 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 izin berbasis ACL, kecuali ACL yang bucket-owner-full-control dikalengkan, Anda harus menghapus header tersebut sebelum dapat menonaktifkannya. ACLs Jika tidak, permintaan Anda akan gagal.

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

catatan

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

Jika Anda melihat bahwa tidak ada permintaan yang memerlukan ACL untuk otorisasi, Anda dapat melanjutkan untuk menonaktifkan. ACLs 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 kondisi terkait ACL

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

Jika kebijakan bucket Anda menggunakan kunci kondisi terkait ACL untuk mewajibkan ACL yang terekam bucket-owner-full-control (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 ACLs dinonaktifkan masih menerima ACL ini, sehingga permintaan terus berhasil tanpa perlu perubahan sisi klien.

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

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

{ "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 ACLs untuk menonaktifkan bucket tujuan pencatatan akses server (juga dikenal sebagai bucket target), Anda harus memigrasikan izin ACL bucket untuk grup pengiriman log S3 ke prinsipal layanan logging (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": { "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" } ] }
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 objek Anda ACLs 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": { "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" } ] }
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. ACLs 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": { "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" } ] }
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.