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:
Topik
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.
Topik
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_ACP
dan kurang WRITE_ACP
ACLs relevan untuk kebijakan karena mereka memberikan izin terkait ACL (s3:GetBucketAcl
,, s3:GetObjectAcl
s3:PutBucketAcl
, dan). s3:PutObjectAcl
contoh – READ
ACL untuk bucket
Jika bucket Anda memiliki READ
ACL yang memberikan Akun AWS
izin untuk mencantumkan konten bucket, Anda dapat menulis kebijakan bucket yang memberikan 111122223333
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
, Anda dapat menulis kebijakan bucket yang memberikan 111122223333
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
izin untuk menulis objek ke bucket, Anda dapat menulis kebijakan bucket yang memberikan 111122223333
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
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Di dalam daftar Bucket, pilih nama bucket.
-
Pilih tab Izin.
-
Di bagian bawah Daftar kontrol akses (ACL), tinjau izin ACL bucket Anda.
Untuk meninjau izin ACL objek
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Di daftar Bucket, pilih nama bucket yang berisi objek Anda.
-
Di daftar Objek, pilih nama objek Anda.
-
Pilih tab Izin.
-
Di bagian bawah Daftar kontrol akses (ACL), tinjau izin ACL objek Anda.
Untuk memigrasi izin ACL dan memperbarui bucket ACL
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Di dalam daftar Bucket, pilih nama bucket.
-
Pada tab Izin, di bawah Kebijakan bucket, pilih Edit.
-
Di kotak Kebijakan, tambahkan atau perbarui kebijakan bucket Anda.
Misalnya kebijakan bucket, lihat Contoh kebijakan bucket danContoh kasus penggunaan.
-
Pilih Simpan perubahan.
-
Perbarui bucket ACL Anda untuk menghapus pemberian ACL ke grup lain atau. Akun AWS
-
Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.
Menggunakan AWS CLI untuk meninjau dan memigrasi izin ACL
-
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
danREAD
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.
-
Migrasikan izin ACL bucket Anda ke kebijakan bucket:
Contoh kebijakan bucket ini memberikan izin
s3:PutObject
dans3:ListBucket
untuk akun pihak ketiga. Dalam kebijakan bucket, akun pihak ketiga diidentifikasi oleh Akun AWS ID (
).111122223333
aws s3api put-bucket-policy --bucket
--policyamzn-s3-demo-bucket
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:::
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }amzn-s3-demo-bucket
Untuk contoh kebijakan bucket lainnya, lihat Contoh kebijakan bucket dan Contoh kasus penggunaan.
-
Untuk mengembalikan ACL untuk objek tertentu, gunakan get-object-acl
AWS CLI perintah. aws s3api get-object-acl --bucket
amzn-s3-demo-bucket
--keyEXAMPLE-OBJECT-KEY
-
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
" -
Setel ulang ACL untuk bucket Anda ke ACL default.
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
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.
Topik
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
-
Tambahkan kebijakan bucket berikut ke bucket tujuan Anda, ganti nilai contoh.
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policyfile://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
" } } } ] } -
Setel ulang ACL untuk bucket tujuan Anda ke ACL default.
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
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
-
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/
*" -
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
-
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
/*" ] } ] } -
Setel ulang ACL untuk bucket Anda ke ACL default:
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
Terapkan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.