Mengkonfigurasi 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.

Mengkonfigurasi ACLs

Bagian ini menjelaskan cara mengelola izin akses untuk bucket dan objek S3 menggunakan daftar kontrol akses (). ACLs Anda dapat menambahkan hibah ke sumber daya Anda ACL menggunakan AWS Management Console, AWS Command Line Interface (CLI), RESTAPI, atau AWS SDKs.

bucket dan izin objek bersifat independen satu sama lain. Objek tidak mewarisi izin dari bucketnya. Misalnya, jika Anda membuat bucket dan memberikan akses tertulis kepada pengguna, Anda tidak dapat mengakses objek pengguna tersebut kecuali jika pengguna memberikan Anda akses secara eksplisit.

Anda dapat memberikan izin kepada Akun AWS pengguna lain atau grup yang telah ditentukan sebelumnya. Pengguna atau grup yang Anda berikan izin disebut penerima pemberian. Secara default, pemilik, Akun AWS yang membuat bucket, memiliki izin penuh.

Setiap izin yang Anda berikan untuk pengguna atau grup menambahkan entri di ACL yang terkait dengan bucket. ACLDaftar hibah, yang mengidentifikasi penerima hibah dan izin yang diberikan.

S3 Object Ownership adalah setelan tingkat ember Amazon S3 yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket dan untuk menonaktifkan atau mengaktifkan. ACLs Secara default, Kepemilikan Objek disetel ke setelan diberlakukan pemilik Bucket, dan semuanya ACLs dinonaktifkan. Ketika ACLs dinonaktifkan, pemilik bucket memiliki semua objek di bucket dan mengelola akses ke mereka secara eksklusif dengan menggunakan kebijakan manajemen akses.

Mayoritas kasus penggunaan modern di Amazon S3 tidak lagi memerlukan penggunaan. ACLs Kami menyarankan agar Anda tetap ACLs dinonaktifkan, kecuali dalam keadaan yang tidak biasa di mana Anda perlu mengontrol akses untuk setiap objek secara individual. Dengan ACLs dinonaktifkan, Anda dapat menggunakan kebijakan untuk mengontrol akses ke semua objek di bucket, terlepas dari siapa yang mengunggah objek ke bucket Anda. Untuk informasi selengkapnya, lihat Mengontrol kepemilikan objek dan menonaktifkan bucket ACLs Anda.

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.

Awas

Kami sangat menyarankan agar Anda menghindari pemberian akses tulis ke grup Semua Orang (akses publik) atau grup Pengguna Terautentikasi (semua pengguna yang AWS diautentikasi). Untuk informasi lebih lanjut tentang efek pemberian akses tulis ke grup ini, lihat Grup Amazon S3 yang sudah ditentukan sebelumnya.

Konsol tersebut menampilkan pemberian akses gabungan untuk penerima pemberian duplikat. Untuk melihat daftar lengkapACLs, gunakan Amazon S3 RESTAPI, AWS CLI, atau. AWS SDKs

Tabel berikut menunjukkan ACL izin yang dapat Anda konfigurasi untuk bucket di konsol Amazon S3.

ACLIzin konsol Amazon S3 untuk bucket
Izin konsol ACLizin Akses
Objek-Daftar READ Memungkinkan penerima untuk mencantumkan objek di dalam bucket.
Objek-Tulis WRITE Mengizinkan penerima untuk membuat objek baru di dalam bucket. Untuk pemilik bucket dan objek dari objek yang ada, juga mengizinkan penghapusan dan penimpaan objek tersebut.
Bucket ACL - Baca READ_ACP Memungkinkan penerima hibah untuk membaca ember. ACL
Bucket ACL - Tulis WRITE_ACP Memungkinkan penerima hibah untuk menulis ACL untuk ember yang berlaku.
Semua orang (akses publik): Objek-Daftar READ Hibah akses baca publik untuk objek dalam bucket. Ketika Anda memberikan akses daftar ke Semua orang (akses publik), siapa pun di dunia ini dapat mengakses objek yang ada dalam bucket.
Semua orang (akses publik): Bucket ACL - Baca READ_ACP Memberikan akses baca publik untuk emberACL. Ketika Anda memberikan akses baca ke Semua Orang (akses publik), siapa pun di dunia dapat mengakses bucketACL.

Untuk informasi selengkapnya tentang ACL izin, lihatDaftar kontrol akses (ACL) ikhtisar.

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.

Untuk menyetel ACL izin untuk bucket
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di Bucket Anda, pilih nama bucket yang ingin Anda tetapkan izinnya.

  3. Pilih Izin.

  4. Di bawah Daftar kontrol akses, memilih Edit.

    Anda dapat mengedit ACL izin berikut untuk bucket:

    Objek
    • Daftar–Mengizinkan penerima untuk mencantumkan objek di dalam bucket.

    • Tulis–Mengizinkan penerima untuk membuat objek baru di dalam bucket. Untuk pemilik bucket dan objek dari objek yang sudah ada, serta mengizinkan penghapusan dan penimpaan objek tersebut.

      Di konsol S3, Anda hanya dapat memberikan akses tulis ke grup pengiriman log S3 dan pemilik bucket (milik Anda Akun AWS). Kami sangat merekomendasikan Anda untuk tidak memberikan akses tulis untuk penerima pemberian lainnya. Namun, jika Anda perlu memberikan akses tulis, Anda dapat menggunakan AWS CLI AWS SDKs,, atau RESTAPI.

    Ember ACL
    • Baca — Memungkinkan penerima hibah untuk membaca ember. ACL

    • Menulis — Memungkinkan penerima hibah untuk menulis ACL untuk ember yang berlaku.

  5. Untuk mengubah izin pemilik bucket, di samping pemilik Bucket (milik Anda Akun AWS), hapus atau pilih dari ACL izin berikut:

    • ObjekDaftar atau Tulis

    • Bucket ACL - Baca atau Tulis

    Pemilik mengacu pada Pengguna root akun AWS, bukan AWS Identity and Access Management IAM pengguna. Untuk informasi selengkapnya tentang pengguna root, lihat The Pengguna root akun AWS in the IAMUser Guide.

  6. Untuk memberikan atau membatalkan izin untuk masyarakat umum (semua orang di internet), di samping Semua Orang (akses publik), hapus atau pilih dari izin berikut: ACL

    • ObjekDaftar

    • Ember ACL - Baca

    Awas

    Berhati-hatilah saat memberikan Semua akses publik kelompok ke bucket S3 Anda. Ketika Anda memberikan akses ke grup ini, siapa pun di dunia dapat mengakses bucket Anda. Kami sangat menyarankan Anda untuk tidak pernah memberikan akses tulis kepada publik ke bucket S3 Anda.

  7. Untuk memberikan atau membatalkan izin bagi siapa pun yang memiliki Akun AWS, di samping grup Pengguna Terautentikasi (siapa pun yang memiliki Akun AWS), hapus atau pilih dari izin berikut: ACL

    • ObjekDaftar

    • Ember ACL - Baca

  8. Untuk memberikan atau membatalkan izin Amazon S3 untuk menulis log akses server ke bucket, di bawah grup pengiriman log S3, hapus atau pilih dari izin berikut: ACL

    • ObjekDaftar atau Tulis

    • Bucket ACL - Baca atau Tulis

      Jika bucket disiapkan sebagai bucket target untuk menerima catatan akses, izin bucket harus mengizinkan Log Pengiriman kelompok menulis akses ke bucket. Saat Anda mengaktifkan log masuk akses server ke dalam bucket, konsol Amazon S3 memberikan akses tertulis ke Log Pengiriman kelompok untuk bucket target yang Anda pilih untuk menerima log. Untuk informasi selengkapnya tentang pencatatan log akses server, lihat Mengaktifkan pencatatan akses server Amazon S3.

  9. Untuk memberikan akses ke yang lain Akun AWS, lakukan hal berikut:

    1. Pilih Tambahkan penerima.

    2. Di kotak Penerima, memasukkan ID kanonik Akun AWS yang lain.

    3. Pilih dari ACL izin berikut:

      • ObjekDaftar atau Tulis

      • Bucket ACL - Baca atau Tulis

    Awas

    Saat Anda memberikan Akun AWS akses lain ke sumber daya Anda, ketahuilah bahwa mereka Akun AWS dapat mendelegasikan izin mereka kepada pengguna di bawah akun mereka. Ini dikenal sebagai akses lintas akun. Untuk informasi tentang penggunaan akses lintas akun, lihat Membuat Peran untuk Mendelegasikan Izin kepada IAM Pengguna di Panduan Pengguna. IAM

  10. Untuk menghapus akses ke yang lain Akun AWS, di bawah Access for other Akun AWS, pilih Hapus.

  11. Untuk menyimpan perubahan Anda, memilih Simpan perubahan.

Konsol tersebut menampilkan pemberian akses gabungan untuk penerima pemberian duplikat. Untuk melihat daftar lengkapACLs, gunakan Amazon S3 RESTAPI, AWS CLI, atau. AWS SDKs Tabel berikut menunjukkan ACL izin yang dapat Anda konfigurasi untuk objek di konsol Amazon S3.

ACLIzin konsol Amazon S3 untuk objek
Izin konsol ACLizin Akses
Objek-Baca READ Memungkinkan penerima untuk membaca data objek dan metadatanya.
Objek ACL - Baca READ_ACP Memungkinkan penerima hibah untuk membaca objek. ACL
Objek ACL - Tulis WRITE_ACP Memungkinkan penerima hibah untuk menulis ACL untuk objek yang berlaku

Untuk informasi selengkapnya tentang ACL izin, lihatDaftar kontrol akses (ACL) ikhtisar.

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.

Untuk mengatur ACL izin untuk objek
  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 yang berisi objek.

  3. Di daftar Objek, memilih nama objek yang ingin Anda atur izinnya.

  4. Pilih Izin.

  5. Di bawah Daftar kontrol akses (ACL), pilih Edit.

    Anda dapat mengedit ACL izin berikut untuk objek:

    Objek
    • Baca–Memungkinkan penerima untuk membaca data objek dan metadatanya.

    Objek ACL
    • Baca — Memungkinkan penerima hibah untuk membaca objek. ACL

    • Menulis - Memungkinkan penerima hibah untuk menulis ACL untuk objek yang berlaku. Di konsol S3, Anda hanya dapat memberikan akses tulis ke pemilik bucket (milik Anda Akun AWS). Kami sangat merekomendasikan Anda untuk tidak memberikan akses tulis untuk penerima pemberian lainnya. Namun, jika Anda perlu memberikan akses tulis, Anda dapat menggunakan AWS CLI AWS SDKs,, atau RESTAPI.

  6. Anda dapat mengelola izin akses objek untuk hal berikut:

    1. Akses untuk pemilik objek

      Pemilik mengacu pada Pengguna root akun AWS, dan bukan AWS Identity and Access Management IAM pengguna. Untuk informasi selengkapnya tentang pengguna root, lihat The Pengguna root akun AWS in the IAMUser Guide.

      Untuk mengubah izin akses objek pemilik, di bawah Akses untuk pemilik objek, pilih AWS Akun Anda (pemilik).

      Pilih kotak periksa untuk izin yang ingin Anda berikan, lalu memilih Simpan.

    2. Akses untuk lainnya Akun AWS

      Untuk memberikan izin kepada AWS pengguna dari yang lain Akun AWS, di bawah Access for other Akun AWS, pilih Tambah akun. Di bidang Masukkan ID, masukkan ID kanonik AWS pengguna yang ingin Anda berikan izin objek. Untuk informasi tentang menemukan ID kanonik, lihat Akun AWS Pengidentifikasi Anda di. Referensi Umum Amazon Web Services Anda dapat menambahkan sebanyak 99 pengguna.

      Pilih kotak periksa untuk izin yang ingin Anda berikan ke pengguna, lalu memilih Simpan. Untuk menampilkan informasi tentang izin, memilih ikon Bantuan.

    3. Akses publik

      Untuk memberikan akses ke objek Anda ke masyarakat umum (semua orang di dunia), di bawah Akses publik, memilih Semua orang. Pemberian izin akses publik berarti siapa pun di dunia dapat mengakses objek tersebut.

      Pilih kotak centang untuk izin yang ingin Anda berikan, lalu pilih Simpan.

      Awas
      • Berhati-hatilah saat memberikan Semua akses grup anonim ke objek Amazon S3. Ketika Anda memberikan akses ke grup ini, siapa pun di dunia ini dapat mengakses objek Anda. Jika Anda perlu memberikan akses ke semua orang, kami sangat menyarankan agar Anda hanya memberikan izin untuk Baca objek.

      • Kami sangat menyarankan Anda untuk tidak memberikan Semua kelompok menulis izin objek. Melakukannya memungkinkan siapa pun untuk menimpa ACL izin untuk objek.

Bagian ini memberikan contoh cara mengonfigurasi hibah daftar kontrol akses (ACL) pada bucket dan objek.

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.

Java

Bagian ini memberikan contoh cara mengonfigurasi hibah daftar kontrol akses (ACL) pada bucket dan objek. Contoh pertama membuat bucket dengan kaleng ACL (lihatKalengan ACL), membuat daftar hibah izin khusus, dan kemudian mengganti kaleng ACL dengan yang ACL berisi hibah khusus. Contoh kedua menunjukkan bagaimana memodifikasi ACL menggunakan AccessControlList.grantPermission() metode.

contoh Buat bucket dan tentukan kaleng ACL yang memberikan izin ke grup pengiriman log S3

Contoh ini membuat bucket. Dalam permintaan, contoh menentukan kaleng ACL yang memberikan izin grup Pengiriman Log untuk menulis log ke bucket.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.ArrayList; public class CreateBucketWithACL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String userEmailForReadPermission = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Create a bucket with a canned ACL. This ACL will be replaced by the // setBucketAcl() // calls below. It is included here for demonstration purposes. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName()) .withCannedAcl(CannedAccessControlList.LogDeliveryWrite); s3Client.createBucket(createBucketRequest); // Create a collection of grants to add to the bucket. ArrayList<Grant> grantCollection = new ArrayList<Grant>(); // Grant the account owner full control. Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl); grantCollection.add(grant1); // Grant the LogDelivery group permission to write to the bucket. Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write); grantCollection.add(grant2); // Save grants by replacing all current ACL grants with the two we just created. AccessControlList bucketAcl = new AccessControlList(); bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0])); s3Client.setBucketAcl(bucketName, bucketAcl); // Retrieve the bucket's ACL, add another grant, and then save the new ACL. AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName); Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read); newBucketAcl.grantAllPermissions(grant3); s3Client.setBucketAcl(bucketName, newBucketAcl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
contoh Update ACL pada objek yang ada

Contoh ini memperbarui ACL pada objek. Contoh tersebut melakukan tugas sebagai berikut:

  • Mengambil objek ACL

  • Membersihkan ACL dengan menghapus semua izin yang ada

  • Menambahkan dua izin: akses penuh ke pemilik, dan WRITE _ ACP (lihatIzin apa yang dapat saya berikan?) ke pengguna yang diidentifikasi oleh alamat email

  • Menyimpan ACL ke objek

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.CanonicalGrantee; import com.amazonaws.services.s3.model.EmailAddressGrantee; import com.amazonaws.services.s3.model.Permission; import java.io.IOException; public class ModifyACLExistingObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; String emailGrantee = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get the existing object ACL that we want to modify. AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName); // Clear the existing list of grants. acl.getGrantsAsList().clear(); // Grant a sample set of permissions, using the existing ACL owner for Full // Control permissions. acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl); acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp); // Save the modified ACL back to the object. s3Client.setObjectAcl(bucketName, keyName, acl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET
contoh Buat bucket dan tentukan kaleng ACL yang memberikan izin ke grup pengiriman log S3

Contoh C# ini membuat bucket. Dalam permintaan, kode juga menentukan kaleng ACL yang memberikan izin grup Pengiriman Log untuk menulis log ke bucket.

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai dengan AWS SDK for. NETdi AWS SDKuntuk. NETPanduan Pengembang.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingBucketACLTest { private const string newBucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateBucketUseCannedACLAsync().Wait(); } private static async Task CreateBucketUseCannedACLAsync() { try { // Add bucket (specify canned ACL). PutBucketRequest putBucketRequest = new PutBucketRequest() { BucketName = newBucketName, BucketRegion = S3Region.EUW1, // S3Region.US, // Add canned ACL. CannedACL = S3CannedACL.LogDeliveryWrite }; PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest); // Retrieve bucket ACL. GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest { BucketName = newBucketName }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }
contoh Update ACL pada objek yang ada

Contoh C# ini memperbarui ACL pada objek yang ada. Contoh tersebut melakukan tugas sebagai berikut:

  • Mengambil objek. ACL

  • Membersihkan ACL dengan menghapus semua izin yang ada.

  • Menambahkan dua izin: akses penuh ke pemilik, dan WRITE _ ACP ke pengguna yang diidentifikasi melalui alamat email.

  • Menyimpan ACL dengan mengirimkan PutAcl permintaan.

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai dengan AWS SDK for. NETdi AWS SDKuntuk. NETPanduan Pengembang.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingObjectACLTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key name ***"; private const string emailAddress = "*** email address ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); TestObjectACLTestAsync().Wait(); } private static async Task TestObjectACLTestAsync() { try { // Retrieve the ACL for the object. GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest { BucketName = bucketName, Key = keyName }); S3AccessControlList acl = aclResponse.AccessControlList; // Retrieve the owner (we use this to re-add permissions after we clear the ACL). Owner owner = acl.Owner; // Clear existing grants. acl.Grants.Clear(); // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions). S3Grant fullControlGrant = new S3Grant { Grantee = new S3Grantee { CanonicalUser = owner.Id }, Permission = S3Permission.FULL_CONTROL }; // Describe the grant for the permission using an email address. S3Grant grantUsingEmail = new S3Grant { Grantee = new S3Grantee { EmailAddress = emailAddress }, Permission = S3Permission.WRITE_ACP }; acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail }); // Set a new ACL. PutACLResponse response = await client.PutACLAsync(new PutACLRequest { BucketName = bucketName, Key = keyName, AccessControlList = acl }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

Amazon S3 APIs memungkinkan Anda menyetel ACL saat Anda membuat bucket atau objek. Amazon S3 juga menyediakan API untuk mengatur bucket atau objek yang ada. ACL Ini APIs menyediakan metode berikut untuk menetapkanACL:

  • Setel ACL menggunakan header permintaan- Saat Anda mengirim permintaan untuk membuat sumber daya (bucket atau objek), Anda menetapkan ACL menggunakan header permintaan. Dengan menggunakan header ini, Anda dapat menentukan kaleng ACL atau menentukan hibah secara eksplisit (mengidentifikasi penerima hibah dan izin secara eksplisit).

  • Setel ACL menggunakan badan permintaan- Saat Anda mengirim permintaan untuk mengatur sumber daya yang ada, Anda dapat mengatur ACL baik di header permintaan atau di badan. ACL

Untuk informasi tentang REST API dukungan pengelolaanACLs, lihat bagian berikut di APIReferensi Layanan Penyimpanan Sederhana Amazon:

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.

Daftar Kontrol Akses (ACL) -Header Permintaan Khusus

Anda dapat menggunakan header untuk memberikan izin berbasis daftar kontrol akses (ACL). Secara bawaan, semua objek bersifat privat. Hanya pemilik yang memiliki kontrol akses penuh. Saat menambahkan objek baru, Anda dapat memberikan izin ke individu Akun AWS atau grup yang telah ditentukan sebelumnya yang ditentukan oleh Amazon S3. Izin ini kemudian ditambahkan ke Access Control List (ACL) pada objek. Untuk informasi selengkapnya, lihat Daftar kontrol akses (ACL) ikhtisar.

Dengan operasi ini, Anda dapat memberikan izin akses dengan menggunakan salah satu dari dua metode berikut:

  • Canned ACL (x-amz-acl) - Amazon S3 mendukung satu set standarACLs, yang dikenal sebagai kaleng. ACLs Setiap kaleng ACL memiliki sekumpulan penerima hibah dan izin yang telah ditentukan sebelumnya. Untuk informasi selengkapnya, lihat Kalengan ACL.

  • Izin Akses — Untuk secara eksplisit memberikan izin akses ke grup Akun AWS atau tertentu, gunakan header berikut. Setiap header memetakan ke izin tertentu yang didukung Amazon S3 dalam file. ACL Untuk informasi selengkapnya, lihat Daftar kontrol akses (ACL) ikhtisar. Pada header tersebut, Anda menentukan daftar penerima yang mendapatkan izin kustom.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-ACP

    • x-amz-grant-write-ACP

    • x-amz-grant-full-kontrol

Untuk informasi selengkapnya tentang mengelola ACLs penggunaan AWS CLI, lihat put-bucket-acldi AWS CLI Command Reference.

penting

Jika bucket Anda menggunakan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket Anda, serta objek di dalamnya. Dengan pengaturan yang diberlakukan pemilik Bucket diaktifkan, permintaan untuk menyetel daftar kontrol akses (ACLs) atau pembaruan ACLs gagal dan mengembalikan kode AccessControlListNotSupported kesalahan. Permintaan untuk membaca ACLs masih didukung.