View a markdown version of this page

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

Mengonfigurasi ACL

Bagian ini menjelaskan cara mengelola izin akses untuk bucket S3 dan objek menggunakan daftar kontrol akses (ACL). Anda dapat menambahkan hibah ke ACL sumber daya menggunakan Konsol Manajemen AWS, AWS Command Line Interface (CLI), REST API, atau AWS SDK.

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 kelompok menambahkan entri ke dalam ACL yang terkait dengan bucket. ACL mencantumkan daftar pemberian, yang mengidentifikasi penerima pemberian dan izin yang diberikan.

Kepemilikan Objek S3 adalah pengaturan tingkat bucket Amazon S3 yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket Anda, serta menonaktifkan atau mengaktifkan ACL. Secara default, Kepemilikan Objek diatur ke pengaturan yang diberlakukan pemilik Bucket, dan semua ACL dinonaktifkan. Ketika ACL dinonaktifkan, pemilik bucket memiliki semua objek di bucket dan mengelola akses ke objek-objek tersebut secara eksklusif dengan menggunakan kebijakan manajemen akses.

Mayoritas kasus penggunaan modern di Amazon S3 tidak lagi memerlukan penggunaan ACL. Sebaiknya Anda menonaktifkan ACL, kecuali dalam keadaan di mana Anda perlu mengontrol akses untuk setiap objek secara individual. Dengan ACL 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 ACL untuk bucket Anda.

penting

Jika bucket tujuan umum Anda menggunakan setelan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.

Awas

Jangan berikan akses tulis ke grup Semua Orang (akses publik) atau Pengguna Ter otentikasi (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 lengkap ACL, gunakan Amazon S3 REST API, AWS CLI, atau AWS SDK.

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

Izin ACL konsol Amazon S3 untuk bucket
Izin konsol Izin ACL 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 sudah ada, serta mengizinkan penghapusan dan penimpaan objek tersebut.
Bucket ACL-Baca READ_ACP Memungkinkan penerima untuk membaca ACL bucket.
Bucket ACL-Tulis WRITE_ACP Memungkinkan penerima untuk menulis ACL untuk bucket 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 Hibah akses baca publik untuk objek dalam bucket ACL. Ketika Anda memberikan akses baca ke Semua orang (akses publik), siapa pun di dunia ini dapat mengakses objek yang ada dalam bucket ACL.

Untuk informasi lebih lanjut tentang izin ACL, lihat Gambaran umum daftar kontrol akses (ACL).

penting

Jika bucket tujuan umum menggunakan pengaturan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.

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

  2. Di panel navigasi kiri, pilih Buc ket tujuan umum.

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

  4. Pilih Izin.

  5. Di bawah Daftar kontrol akses, memilih Edit.

    Anda dapat mengedit izin ACL 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). Jangan memberikan akses menulis untuk penerima hibah lainnya. Namun, jika Anda perlu memberikan akses tulis, Anda dapat menggunakan AWS CLI, AWS SDK, atau REST API.

    ACL Bucket
    • Baca–Memungkinkan penerima untuk membaca ACL bucket.

    • Tulis–Memungkinkan penerima untuk menulis ACL untuk bucket yang berlaku.

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

    • ObjekDaftar atau Tulis

    • ACL bucketBaca atau Tulis

    Pemilik mengacu pada Pengguna root akun AWS, bukan pengguna AWS Identity and Access Management IAM. Untuk informasi selengkapnya tentang pengguna root, lihat Pengguna root akun AWS dalam Panduan Pengguna IAM.

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

    • ObjekDaftar

    • ACL bucketBaca

    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. Jangan pernah memberikan akses penulisan publik apa pun ke bucket S3 Anda.

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

    • ObjekDaftar

    • ACL bucketBaca

  9. Untuk memberikan atau membatalkan izin bagi Amazon S3 untuk tulis log akses server ke bucket, di bawah Grup pengiriman log S3, hapus atau pilih dari izin ACL berikut:

    • ObjekDaftar atau Tulis

    • ACL bucketBaca atau Tulis

      Jika bucket diatur sebagai target untuk menerima log akses, izin bucket harus mengizinkan akses penulisan grup Log Delivery. Saat Anda mengaktifkan logging akses server pada bucket, konsol Amazon S3 memberikan akses tulis ke grup Pengiriman Log untuk bucket target yang Anda pilih. Untuk informasi selengkapnya tentang pencatatan log akses server, lihat Mengaktifkan pencatatan akses server Amazon S3.

  10. 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 izin ACL berikut:

      • ObjekDaftar atau Tulis

      • ACL bucketBaca 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 menggunakan akses lintas akun, lihat Membuat Peran untuk Mendelegasikan Izin kepada Pengguna IAM dalam Panduan Pengguna IAM.

  11. Untuk menghapus akses ke yang lain Akun AWS, di bawah Akses untuk lainnya Akun AWS, pilih H apus.

  12. Untuk menyimpan perubahan Anda, memilih Simpan perubahan.

Konsol tersebut menampilkan pemberian akses gabungan untuk penerima pemberian duplikat. Untuk melihat daftar lengkap ACL, gunakan Amazon S3 REST API, AWS CLI, atau AWS SDK. Tabel berikut menunjukkan izin ACL yang dapat Anda konfigurasikan untuk bucket di konsol Amazon S3.

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

Untuk informasi selengkapnya tentang izin ACL, lihat Gambaran umum daftar kontrol akses (ACL).

penting

Jika bucket tujuan umum menggunakan pengaturan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.

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

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

  4. Pilih Izin.

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

    Anda dapat mengedit izin ACL berikut untuk objek:

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

    ACL Objek
    • Baca–Mengizinkan penerima untuk baca ACL objek.

    • Tulis–Mengizinkan penerima untuk tulis ACL untuk objek yang dapat diaplikasikan. Di konsol S3, Anda hanya dapat memberikan akses tulis kepada pemilik bucket (milik Anda Akun AWS). Jangan memberikan akses menulis untuk penerima hibah lainnya. Namun, jika Anda perlu memberikan akses tulis, Anda dapat menggunakan AWS CLI, AWS SDK, atau REST API.

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

    1. Akses untuk pemilik objek

      Pemilik mengacu pada Pengguna root akun AWS, dan bukan pengguna AWS Identity and Access Management IAM. Untuk informasi selengkapnya tentang pengguna root, lihat Pengguna root akun AWS dalam Panduan Pengguna IAM.

      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 yang lain Akun AWS

      Untuk memberikan izin kepada AWS pengguna yang berbeda Akun AWS, di bawah Akses untuk yang lain Akun AWS, pilih Tam bah akun. Di bidang Masukkan ID, masukkan ID kanonik AWS pengguna yang ingin Anda berikan izin objek. Untuk informasi tentang menemukan ID kanonik, lihat Pengi Akun AWS dentifikasi 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.

      • Jangan berikan izin objek menulis grup Everyone. Dengan begitu, siapa pun dapat menimpa izin ACL untuk objek tersebut.

Contoh berikut menunjukkan cara mengatur hibah daftar kontrol akses (ACL) pada bucket dan objek.

penting

Jika bucket tujuan umum menggunakan pengaturan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.

Java

Contoh berikut menunjukkan cara mengatur hibah daftar kontrol akses (ACL) pada bucket dan objek. Contoh pertama membuat bucket dengan ACL kalengan (lihatACL Terekam), membuat daftar hibah khusus, dan kemudian mengganti ACL yang sudah dikalengkan dengan hibah khusus. Contoh kedua menunjukkan cara memodifikasi ACL dengan menggunakan metode AccessControlList.grantPermission().

contoh Membuat bucket dan menentukan ACL terekam yang memberikan izin ke grup pengiriman log S3

Contoh ini membuat bucket. Dalam permintaan tersebut, contoh menyebutkan ACL terekam yang memberikan izin kepada 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 Memperbarui ACL pada objek yang sudah ada

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

  • Mengambil ACL objek

  • Menghapus ACL dengan menghapus semua izin yang ada

  • Menambahkan dua izin: akses penuh kepada pemilik, dan WRITE_ACP (lihat Izin apa yang dapat saya berikan?) kepada pengguna yang diidentifikasi melalui 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 Membuat bucket dan menentukan ACL terekam yang memberikan izin ke grup pengiriman log S3

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

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Mem ulai dengan AWS SDK untuk.NET di Panduan Pengembang AWS SDK untuk.NET.

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 Memperbarui ACL pada objek yang sudah ada

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

  • Mengambil ACL objek.

  • Menghapus ACL dengan menghapus semua izin yang ada.

  • Menambahkan dua izin: akses penuh kepada pemilik, dan WRITE_ACP kepada pengguna yang diidentifikasi melalui alamat email.

  • Menyimpan ACL dengan mengirim permintaan PutAcl.

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Mem ulai dengan AWS SDK untuk.NET di Panduan Pengembang AWS SDK untuk.NET.

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 API mengaktifkan Anda untuk mengatur ACL saat Anda membuat bucket atau objek. Amazon S3 juga menyediakan API untuk menetapkan ACL pada bucket atau objek yang ada. API ini memberikan metode-metode berikut untuk mengatur ACL:

  • Tetapkan ACL menggunakan header permintaan— Ketika Anda mengirim permintaan untuk membuat sumber daya (bucket atau objek), Anda mengatur ACL dengan menggunakan header permintaan. Dengan menggunakan header ini, Anda dapat menentukan ACL terekam atau menentukan pemberian secara jelas (mengidentifikasi penerima dan izin secara jelas).

  • Tetapkan ACL menggunakan isi permintaan— Ketika Anda mengirim permintaan untuk menetapkan ACL pada sumber daya yang sudah ada, Anda dapat mengatur ACL baik pada header permintaan atau isinya.

Untuk informasi tentang support API REST untuk mengelola ACL, lihat bagian berikut dalam Referensi API Amazon Simple Storage Service:

penting

Jika bucket tujuan umum menggunakan pengaturan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.

Daftar Kontrol Akses (ACL)-Header Permintaan Spesifik

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 kepada individu Akun AWS atau grup yang telah ditentukan sebelumnya yang didefinisikan Amazon S3. Izin ini kemudian ditambahkan ke ACL pada objek. Untuk informasi selengkapnya, lihat Gambaran umum daftar kontrol akses (ACL).

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

  • ACL Terekam (x-amz-acl)—Amazon S3 mendukung serangkaian pemberian yang telah ditentukan sebelumnya, dikenal sebagai ACLs terekam. Setiap ACL terekam memiliki seperangkat penerima dan izin yang telah ditetapkan. Untuk informasi selengkapnya, lihat ACL Terekam.

  • Izin Akses - Untuk memberikan izin akses secara eksplisit ke Akun AWS atau grup tertentu, gunakan header berikut. Setiap header memetakan ke izin tertentu yang didukung Amazon S3 di ACL. Untuk informasi selengkapnya, lihat Gambaran umum daftar kontrol akses (ACL). 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-control

Untuk informasi selengkapnya tentang mengelola ACL menggunakan AWS CLI, lihat put-bucket-ac l di Referensi Perintah. AWS CLI

penting

Jika bucket tujuan umum menggunakan pengaturan yang dipaksakan pemilik Bucket untuk Kepemilikan Objek S3, Anda harus menggunakan kebijakan untuk memberikan akses ke bucket tujuan umum dan objek di dalamnya. Dengan mengaktifkan pengaturan yang diberlakukan pemilik Bucket, permintaan untuk mengatur daftar kontrol akses (ACL) atau memperbarui ACL akan gagal dan mengembalikan kode kesalahan AccessControlListNotSupported. Permintaan untuk membaca ACL masih didukung.