Memverifikasi kepemilikan bucket dengan syarat pemilik bucket - Amazon Simple Storage Service

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

Memverifikasi kepemilikan bucket dengan syarat pemilik bucket

Kondisi pemilik bucket Amazon S3 memastikan bahwa bucket yang Anda gunakan dalam operasi S3 adalah milik yang Anda harapkan. Akun AWS

Sebagian besar operasi S3 membaca atau menulis ke bucket S3 tertentu. Operasi ini meliputi pengunggahan, penyalinan, dan pengunduhan objek, pengambilan atau modifikasi konfigurasi bucket, dan pengambilan atau modifikasi konfigurasi objek. Saat Anda melakukan operasi ini, Anda menentukan bucket yang ingin Anda gunakan dengan menyertakan nama dengan permintaan. Misalnya, untuk mengambil objek dari S3, Anda membuat permintaan yang menentukan nama bucket dan kunci objek untuk diambil dari bucket tersebut.

Karena Amazon S3 mengidentifikasi bucket berdasarkan namanya, aplikasi yang menggunakan nama bucket yang salah dalam permintaan dapat secara tidak sengaja melakukan operasi terhadap bucket yang berbeda dari yang diharapkan. Untuk membantu menghindari interaksi bucket yang tidak disengaja dalam situasi seperti ini, Anda dapat menggunakan ketentuan pemilik bucket. Syarat pemilik bucket mengaktifkan Anda memverifikasi bahwa bucket target dimiliki oleh Akun AWS yang diharapkan, sehingga memberikan lapisan jaminan tambahan bahwa operasi S3 Anda memiliki efek yang Anda inginkan.

Kapan harus menggunakan ketentuan pemilik bucket

Kami merekomendasikan penggunaan ketentuan pemilik bucket setiap kali Anda melakukan operasi S3 yang didukung dan mengetahui ID akun pemilik bucket yang diharapkan. Ketentuan pemilik bucket tersedia untuk semua operasi S3 Object dan sebagian besar operasi bucket S3. Untuk daftar operasi S3 yang tidak mendukung ketentuan pemilik bucket, lihat Pembatasan dan batasan.

Untuk melihat manfaat menggunakan kondisi pemilik bucket, pertimbangkan skenario berikut yang melibatkan AWS pelanggan Bea:

  1. Bea mengembangkan aplikasi yang menggunakan Amazon S3. Selama pengembangan, Bea menggunakan pengujiannya hanya Akun AWS untuk membuat bucket bernamabea-data-test, dan mengonfigurasi aplikasinya untuk membuat permintaan. bea-data-test

  2. Bea men-deploy aplikasinya, tetapi lupa mengonfigurasi ulang aplikasi untuk menggunakan bucket dalam Akun AWS produksinya.

  3. Dalam produksi, aplikasi Bea membuat permintaan ke bea-data-test, yang berhasil. Hal ini menyebabkan data produksi ditulis ke bucket dalam akun pengujian Bea.

Bea dapat membantu melindungi dari situasi seperti ini dengan menggunakan ketentuan pemilik bucket. Dengan kondisi pemilik bucket, Bea dapat menyertakan Akun AWS ID pemilik bucket yang diharapkan dalam permintaannya. Amazon S3 kemudian memeriksa ID akun pemilik bucket sebelum memproses setiap permintaan. Apabila pemilik bucket yang sesungguhnya tidak sesuai dengan pemilik bucket yang diharapkan, permintaan gagal.

Jika Bea menggunakan ketentuan pemilik bucket, skenario yang dijelaskan sebelumnya tidak akan mengakibatkan aplikasi Bea secara tidak sengaja menulis ke bucket pengujian. Sebagai gantinya, permintaan yang dibuat aplikasinya pada langkah 3 akan gagal dengan pesan kesalahan Access Denied. Dengan menggunakan syarat pemilik bucket, Bea membantu menghilangkan risiko interaksi yang tidak disengaja dengan bucket dalam Akun AWS yang salah.

Memverifikasi pemilik bucket

Untuk menggunakan ketentuan pemilik bucket, Anda menyertakan parameter dengan permintaan Anda yang menentukan pemilik bucket yang diharapkan. Sebagian besar operasi S3 hanya melibatkan satu bucket, dan hanya memerlukan satu parameter ini untuk menggunakan ketentuan pemilik bucket. Untuk operasi CopyObject, parameter pertama ini menentukan pemilik bucket tujuan yang diharapkan, dan Anda menyertakan parameter kedua untuk menentukan pemilik bucket sumber yang diharapkan.

Saat Anda membuat permintaan yang menyertakan parameter ketentuan pemilik bucket, S3 memeriksa ID akun pemilik bucket terhadap parameter yang ditentukan sebelum memproses permintaan. Jika parameter cocok dengan ID akun pemilik bucket, S3 akan memproses permintaan. Jika parameter tidak cocok dengan ID akun pemilik bucket, permintaan akan gagal dengan pesan kesalahan Access Denied.

Anda dapat menggunakan kondisi pemilik bucket dengan AWS Command Line Interface (AWS CLI), AWS SDK, dan Amazon S3 REST API. Saat menggunakan kondisi pemilik bucket dengan API REST Amazon S3 AWS CLI dan Amazon S3, gunakan nama parameter berikut.

Metode akses Parameter untuk operasi non penyalinan Parameter sumber operasi penyalinan Parameter tujuan operasi penyalinan
AWS CLI --expected-bucket-owner --expected-source-bucket-owner --expected-bucket-owner
API REST Amazon S3 Header x-amz-expected-bucket-owner Header x-amz-source-expected-bucket-owner Header x-amz-expected-bucket-owner

Nama parameter yang diperlukan untuk menggunakan syarat pemilik bucket dengan SDK AWS akan berbeda-beda tergantung bahasanya. Untuk menentukan parameter yang diperlukan, lihat dokumentasi SDK untuk bahasa yang Anda inginkan. Anda dapat menemukan dokumentasi SDK di Alat untuk Membangun di AWS.

Contoh

Contoh berikut menunjukkan bagaimana Anda dapat menerapkan kondisi pemilik bucket di Amazon S3 menggunakan AWS CLI atau. AWS SDK for Java 2.x

Contoh: Mengunggah sebuah objek

Contoh berikut menunjukkan cara unggah sebuah objek ke bucket S3 example-s3-bucket1, menggunakan syarat pemilik bucket untuk memastikan bahwa example-s3-bucket1 dimiliki oleh Akun AWS 111122223333.

AWS CLI
aws s3api put-object \ --bucket example-s3-bucket1 --key exampleobject --body example_file.txt \ --expected-bucket-owner 111122223333
AWS SDK for Java 2.x
public void putObjectExample() { S3Client s3Client = S3Client.create();; PutObjectRequest request = PutObjectRequest.builder() .bucket("example-s3-bucket1") .key("exampleobject") .expectedBucketOwner("111122223333") .build(); Path path = Paths.get("example_file.txt"); s3Client.putObject(request, path); }

Contoh: Menyalin sebuah objek

Contoh berikut menyalin objek object1 dari bucket S3 example-s3-bucket1 ke bucket S3 example-s3-bucket2. Itu menggunakan syarat pemilik bucket untuk memastikan bahwa bucket dimiliki oleh akun yang diharapkan sesuai dengan tabel berikut.

Bucket Pemilik yang diharapkan
example-s3-bucket1 111122223333
example-s3-bucket2 444455556666
AWS CLI
aws s3api copy-object --copy-source example-s3-bucket1/object1 \ --bucket example-s3-bucket2 --key object1copy \ --expected-source-bucket-owner 111122223333 --expected-bucket-owner 444455556666
AWS SDK for Java 2.x
public void copyObjectExample() { S3Client s3Client = S3Client.create(); CopyObjectRequest request = CopyObjectRequest.builder() .copySource("example-s3-bucket1/object1") .destinationBucket("example-s3-bucket2") .destinationKey("object1copy") .expectedSourceBucketOwner("111122223333") .expectedBucketOwner("444455556666") .build(); s3Client.copyObject(request); }

Contoh: Mengambil kebijakan bucket

Contoh berikut ini mengambil kebijakan akses untuk bucket S3 example-s3-bucket1, menggunakan syarat pemilik bucket untuk memastikan bahwa example-s3-bucket1 dimiliki oleh Akun AWS 111122223333.

AWS CLI
aws s3api get-bucket-policy --bucket example-s3-bucket1 --expected-bucket-owner 111122223333
AWS SDK for Java 2.x
public void getBucketPolicyExample() { S3Client s3Client = S3Client.create(); GetBucketPolicyRequest request = GetBucketPolicyRequest.builder() .bucket("example-s3-bucket1") .expectedBucketOwner("111122223333") .build(); try { GetBucketPolicyResponse response = s3Client.getBucketPolicy(request); } catch (S3Exception e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } }

Pembatasan dan batasan

Ketentuan pemilik bucket Amazon S3 memiliki pembatasan dan batasan berikut:

  • Nilai parameter kondisi pemilik bucket harus berupa Akun AWS ID (nilai numerik 12 digit). Pengguna utama layanan tidak didukung.

  • Kondisi pemilik bucket tidak tersedia untuk CreateBucket, ListBuckets, atau operasi apa pun yang termasuk dalam Kontrol AWS S3. Amazon S3 mengabaikan parameter ketentuan pemilik bucket yang disertakan dengan permintaan ke operasi ini.

  • Ketentuan pemilik bucket hanya memverifikasi bahwa akun yang ditentukan dalam parameter verifikasi memiliki bucket. Ketentuan pemilik bucket tidak memeriksa konfigurasi bucket. Ini juga tidak menjamin bahwa konfigurasi bucket memenuhi ketentuan tertentu atau sesuai untuk status sebelumnya.