Mengontrol kepemilikan objek dan menonaktifkan ACL untuk bucket Anda - Amazon Simple Storage Service

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

Mengontrol kepemilikan objek dan menonaktifkan ACL untuk bucket Anda

Kepemilikan Objek S3 adalah pengaturan tingkat bucket Amazon S3 yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket Anda dan untuk menonaktifkan atau mengaktifkan daftar kontrol akses (ACL). Secara default, Kepemilikan Objek disetel ke pengaturan diberlakukan pemilik Bucket dan semua ACL dinonaktifkan. Ketika ACL dinonaktifkan, pemilik bucket memiliki semua objek di bucket dan mengelola akses ke data secara eksklusif menggunakan kebijakan manajemen akses.

Mayoritas kasus penggunaan modern di Amazon S3 tidak lagi memerlukan penggunaan ACL, dan kami menyarankan agar Anda tetap menonaktifkan ACL kecuali dalam keadaan yang tidak biasa di mana Anda harus mengontrol akses untuk setiap objek satu per satu. Dengan ACL dinonaktifkan, Anda dapat menggunakan kebijakan untuk mengontrol akses ke setiap objek di bucket dengan lebih mudah, terlepas dari siapa yang mengunggah objek di bucket Anda.

Kepemilikan Objek memiliki tiga pengaturan yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket Anda, dan untuk menonaktifkan atau mengaktifkan ACL:

ACL dinonaktifkan
  • Pemilik bucket yang diberlakukan (default)–ACL dinonaktifkan, dan pemilik bucket secara otomatis memilikinya, serta mendapatkan kontrol penuh atas setiap objek di dalam bucket. ACL tidak lagi memengaruhi izin terhadap data di bucket S3. Bucket tersebut menggunakan kebijakan untuk menentukan kontrol akses.

ACL diaktifkan
  • Pemilik bucket yang dipilih—Pemilik bucket memiliki dan diberikan kendali penuh atas objek baru yang ditulis akun lain ke bucket dengan ACL bucket-owner-full-control yang dibatasi.

  • Penulis objek– Akun AWS yang mengunggah objek memiliki objek tersebut, mempunyai kontrol penuh atas objek tersebut, dan dapat memberikan akses kepada pengguna lain melalui ACL.

Untuk sebagian besar kasus penggunaan modern di S3, sebaiknya Anda menonaktifkan ACL dengan menerapkan pengaturan yang diberlakukan pemilik Bucket dan menggunakan kebijakan bucket Anda untuk berbagi data dengan pengguna di luar akun Anda sesuai kebutuhan. Pendekatan ini menyederhanakan manajemen izin. Anda dapat menonaktifkan ACL pada bucket yang baru dibuat dan yang sudah ada. Untuk bucket yang baru dibuat, ACL dinonaktifkan secara default. Dalam kasus bucket yang sudah ada yang sudah memiliki objek di dalamnya, setelah Anda menonaktifkan ACL, ACL objek dan bucket tidak lagi menjadi bagian dari evaluasi akses, dan akses diberikan atau ditolak berdasarkan kebijakan. Untuk bucket yang ada, Anda dapat mengaktifkan kembali ACL kapan saja setelah menonaktifkannya, dan bucket dan ACL objek yang sudah ada sebelumnya dipulihkan.

Sebelum menonaktifkan ACL, sebaiknya tinjau kebijakan bucket untuk memastikan kebijakan tersebut mencakup semua cara yang ingin Anda berikan akses ke bucket di luar akun Anda. Setelah menonaktifkan ACL, bucket Anda hanya menerima permintaan PUT yang tidak menentukan ACL atau permintaan PUT dengan ACL kontrol penuh pemilik bucket, seperti ACL bucket-owner-full-control terekam atau bentuk setara ACL ini yang dinyatakan dalam XML. Aplikasi yang ada yang mendukung ACL kontrol penuh pemilik bucket tidak akan berdampak. PUTpermintaan yang berisi ACL lain (misalnya, hibah khusus untuk tertentu Akun AWS) gagal dan mengembalikan 400 kesalahan dengan kode kesalahan. AccessControlListNotSupported

Sebaliknya, bucket dengan pengaturan pilihan pemilik Bucket terus menerima dan menghormati ACL bucket dan objek. Dengan pengaturan ini, objek baru yang ditulis dengan ACL terekam bucket-owner-full-control secara otomatis dimiliki oleh pemilik bucket daripada penulis objek. Semua perilaku ACL lainnya tetap sama. Agar semua operasi PUT Amazon S3 menyertakan ACL bucket-owner-full-control yang terekam, Anda dapat menambahkan kebijakan bucket yang hanya mengizinkan unggahan objek menggunakan ACL ini.

Untuk melihat pengaturan Kepemilikan Objek yang diterapkan ke bucket, Anda dapat menggunakan metrik Lensa Penyimpanan Amazon S3. Lensa Penyimpanan S3 adalah fitur analisis penyimpanan cloud yang dapat Anda gunakan untuk mendapatkan visibilitas seluruh organisasi ke dalam penggunaan dan aktivitas penyimpanan objek. Untuk informasi lebih lanjut, lihat Menggunakan Lensa Penyimpanan S3 untuk menemukan pengaturan Kepemilikan Objek.

catatan

Untuk informasi selengkapnya tentang menggunakan kelas penyimpanan Amazon S3 Express One Zone dengan bucket direktori, lihat Apa itu S3 Express One Zone? dan Ember direktori.

Pengaturan Kepemilikan Objek

Tabel ini menunjukkan dampak yang dimiliki setiap pengaturan Kepemilikan Objek pada ACL, objek, kepemilikan objek, dan unggahan objek.

Pengaturan Berlaku untuk Efek pada kepemilikan objek Efek pada ACL Unggahan diterima
Pemilik bucket diberlakukan (default) Semua objek baru dan yang sudah ada Pemilik bucket memiliki setiap objek.

ACL dinonaktifkan dan tidak lagi memengaruhi izin akses ke bucket Anda. Permintaan untuk mengatur atau memperbarui ACL gagal. Namun, permintaan untuk membaca ACL didukung.

Pemilik bucket memiliki kepemilikan dan kontrol penuh.

Penulis objek tidak lagi memiliki kepemilikan dan kontrol penuh.

Unggahan dengan pemilik bucket mengontrol penuh ACL atau unggahan yang tidak menentukan ACL
bucket lebih disukai pemilik bucket Objek baru Jika unggahan objek menyertakan ACL bucket-owner-full-control terekam, pemilik bucket memiliki objek tersebut.

Objek yang diunggah dengan ACL lain dimiliki oleh akun penulisan.

ACL dapat diperbarui dan dapat memberikan izin.

Jika unggahan objek menyertakan ACL bucket-owner-full-control terekam, pemilik bucket memiliki akses kontrol penuh, dan penulis objek tidak lagi memiliki akses kontrol penuh.

Semua unggahan
Penulis objek Objek baru Penulis objek memiliki objek.

ACL dapat diperbarui, dan dapat memberikan izin.

Penulis objek memiliki akses kontrol penuh.

Semua unggahan

Perubahan diperkenalkan dengan menonaktifkan ACL

Ketika pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek diterapkan, ACL dinonaktifkan dan Anda secara otomatis memiliki dan mengambil kendali penuh atas setiap objek di bucket tanpa mengambil tindakan tambahan apa pun. Pemilik bucket diberlakukan adalah pengaturan default untuk semua bucket yang baru dibuat. Setelah pengaturan diberlakukan pemilik Bucket diterapkan, Anda akan melihat tiga perubahan:

  • Semua ACL bucket dan ACL objek dinonaktifkan, yang memberikan akses penuh kepada Anda, sebagai pemilik bucket. Saat Anda melakukan permintaan ACL baca pada bucket atau objek Anda, Anda akan melihat bahwa akses penuh hanya diberikan kepada pemilik bucket.

  • Anda, sebagai pemilik bucket, secara otomatis memiliki dan memiliki kendali penuh atas setiap objek di bucket Anda.

  • ACL tidak lagi memengaruhi izin akses ke bucket Anda. Akibatnya, kontrol akses untuk data Anda didasarkan pada kebijakan, seperti kebijakan IAM, kebijakan bucket S3, kebijakan titik akhir VPC, dan Organizations SCP.

Diagram yang menunjukkan apa yang terjadi ketika Anda menerapkan pengaturan diberlakukan pemilik Bucket untuk menonaktifkan ACL.

Jika Anda menggunakan Pembuatan Penentuan Versi S3, pemilik bucket memiliki dan memiliki kontrol penuh atas semua versi objek di bucket Anda. Menerapkan pengaturan yang diberlakukan pemilik Bucket tidak akan menambahkan versi baru objek.

Objek baru dapat diunggah ke bucket Anda hanya jika mereka menggunakan ACL kontrol penuh pemilik bucket atau tidak menentukan ACL. Unggahan objek gagal jika mereka menentukan ACL lainnya. Untuk informasi selengkapnya, lihat Pemecahan Masalah.

Karena contoh operasi PutObject berikut menggunakan AWS Command Line Interface (AWS CLI) menyertakan ACL bucket-owner-full-control terekam, objek dapat diunggah ke bucket dengan ACL yang dinonaktifkan.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key key-name --body path-to-file --acl bucket-owner-full-control

Karena operasi PutObject berikut tidak menentukan ACL, operasi ini juga berhasil untuk bucket dengan ACL yang dinonaktifkan.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key key-name --body path-to-file
catatan

Jika orang lain Akun AWS memerlukan akses ke objek setelah mengunggah, Anda harus memberikan izin tambahan ke akun tersebut melalui kebijakan bucket. Untuk informasi selengkapnya, lihat Panduan yang menggunakan kebijakan untuk mengelola akses ke sumber daya Amazon S3.

Mengaktifkan kembali ACL

Anda dapat mengaktifkan kembali ACL dengan mengubah dari pengaturan diberlakukan pemilik Bucket ke pengaturan Kepemilikan Objek lain kapan saja. Jika Anda menggunakan ACL objek untuk manajemen izin sebelum menerapkan pengaturan diberlakukan pemilik Bucket dan Anda tidak memigrasikan izin ACL objek ini ke kebijakan bucket, setelah Anda mengaktifkan kembali ACL, izin ini akan dipulihkan. Selain itu, objek yang ditulis ke bucket saat pengaturan yang diberlakukan pemilik Bucket diterapkan masih dimiliki oleh pemilik bucket.

Misalnya, jika Anda mengubah dari pengaturan yang diberlakukan pemilik Bucket kembali ke pengaturan Object writer, Anda, sebagai pemilik bucket, tidak lagi memiliki dan memiliki kontrol penuh atas objek yang sebelumnya dimiliki oleh orang lain Akun AWS. Sebaliknya, akun pengunggahan kembali memiliki objek-objek ini. Objek yang dimiliki oleh akun lain menggunakan ACL untuk izin, sehingga Anda tidak dapat menggunakan kebijakan untuk memberikan izin ke objek tersebut. Namun, Anda, sebagai pemilik bucket, masih memiliki objek apa pun yang ditulis ke bucket saat pengaturan yang diberlakukan oleh pemilik Bucket diterapkan. Objek ini tidak dimiliki oleh penulis objek, bahkan jika Anda mengaktifkan kembali ACL.

Untuk petunjuk tentang mengaktifkan dan mengelola ACL menggunakan, ( AWS Command Line Interface CLI) AWS Management Console, REST API, atau AWS SDK, lihat. Mengonfigurasi ACL

Prasyarat untuk menonaktifkan ACL

Sebelum Anda menonaktifkan ACL untuk bucket yang ada, 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.

Jika ACL bucket Anda memberikan izin baca atau tulis kepada orang lain di luar akun, Anda harus memigrasikan izin ini ke kebijakan bucket sebelum dapat menerapkan pengaturan 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.

Misalnya, jika Anda ingin menonaktifkan ACL untuk bucket yang menerima log akses server, Anda harus memigrasikan izin ACL bucket untuk grup pengiriman log S3 ke pengguna utama layanan logging dalam kebijakan bucket. Untuk informasi selengkapnya, lihat Berikan akses ke grup pengiriman log S3 untuk pencatatan akses server.

Jika Anda ingin penulis objek mempertahankan kontrol penuh dari objek yang mereka unggah, penulis objek adalah pengaturan Kepemilikan Objek terbaik untuk kasus penggunaan Anda. Jika Anda ingin mengontrol akses pada tingkat objek individual, pemilik bucket lebih disukai adalah pilihan terbaik. Kasus penggunaan ini jarang terjadi.

Untuk meninjau ACL dan memigrasikan izin ACL ke kebijakan bucket, lihat Prasyarat untuk menonaktifkan ACL.

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. CloudTrail Untuk informasi selengkapnya tentang nilai aclRequired yang diharapkan, lihat Nilai aclRequired untuk permintaan Amazon S3 umum.

Jika Anda memiliki permintaan PutBucketAcl atau PutObjectAcl dengan header yang memberikan izin berbasis ACL, kecuali ACL yang bucket-owner-full-control terekam, Anda harus menghapus header tersebut sebelum 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 kondisi terkait ACL

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 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 ACL 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:::DOC-EXAMPLE-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 permintaan S3 PutObject, dan karenanya harus diperbarui sebelum menonaktifkan 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:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

Izin Kepemilikan Objek

Untuk menerapkan, memperbarui, atau menghapus pengaturan Kepemilikan Objek untuk bucket, Anda memerlukan izin s3:PutBucketOwnershipControls tersebut. Untuk mengembalikan pengaturan Kepemilikan Objek untuk bucket, Anda memerlukan izin s3:GetBucketOwnershipControls. Untuk informasi selengkapnya, lihat Mengatur Kepemilikan Objek saat membuat bucket dan Melihat pengaturan Kepemilikan Objek untuk bucket S3.

Menonaktifkan ACL untuk semua bucket baru

Secara default, semua bucket baru dibuat dengan pengaturan diberlakukan pemilik Bucket diterapkan dan ACL dinonaktifkan. Kami merekomendasikan agar ACL dinonaktifkan. Sebagai aturan umum, kami menyarankan penggunaan kebijakan berbasis sumber daya S3 (kebijakan bucket dan kebijakan titik akses) atau kebijakan IAM untuk kontrol akses, bukan ACL. Kebijakan adalah opsi kontrol akses yang disederhanakan dan lebih fleksibel. Dengan kebijakan bucket dan kebijakan titik akses, Anda dapat menentukan aturan yang berlaku secara luas di semua permintaan ke sumber daya Amazon S3 Anda.

Replikasi dan Kepemilikan Object

Bila Anda menggunakan replikasi S3 dan bucket sumber dan tujuan dimiliki oleh berbeda Akun AWS, Anda dapat menonaktifkan ACL (dengan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek) untuk mengubah kepemilikan replika ke bucket yang memiliki tujuan. Akun AWS Pengaturan ini meniru perilaku override pemilik yang ada tanpa memerlukan izin s3:ObjectOwnerOverrideToBucketOwner. Semua objek yang direplikasi ke bucket tujuan dengan pengaturan yang diberlakukan pemilik Bucket dimiliki oleh pemilik bucket tujuan. Untuk informasi selengkapnya tentang opsi penggantian pemilik untuk konfigurasi replikasi, lihat Mengubah pemilik replika.

Mengatur Kepemilikan Objek

Anda dapat menerapkan setelan Kepemilikan Objek dengan menggunakan konsol Amazon S3, AWS SDK AWS CLI, Amazon S3 REST API, atau. AWS CloudFormation API REST dan AWS CLI perintah berikut mendukung Kepemilikan Objek:

API REST AWS CLI Deskripsi
PutBucketOwnershipControls put-bucket-ownership-controls Membuat atau memodifikasi pengaturan Kepemilikan Objek untuk bucket S3 yang ada.
CreateBucket create-bucket Membuat bucket menggunakan header permintaan x-amz-object-ownership untuk menentukan pengaturan Kepemilikan Objek.
GetBucketOwnershipControls get-bucket-ownership-controls Mengambil pengaturan Kepemilikan Objek untuk bucket Amazon S3.
DeleteBucketOwnershipControls delete-bucket-ownership-controls Menghapus pengaturan Kepemilikan Objek untuk bucket Amazon S3.

Untuk informasi tentang menerapkan dan bekerja dengan pengaturan Kepemilikan Objek, lihat topik-topik berikut.