Contoh 3: Pemilik bucket yang memberikan izin kepada penggunanya ke objek yang bukan miliknya - Amazon Simple Storage Service

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

Contoh 3: Pemilik bucket yang memberikan izin kepada penggunanya ke objek yang bukan miliknya

penting

Memberikan izin untuk peran IAM adalah praktik yang lebih baik daripada memberikan izin kepada pengguna individu. Untuk mempelajari cara melakukannya, lihat Memahami izin lintas akun dan menggunakan peran IAM.

Skenario untuk contoh ini adalah bahwa pemilik bucket ingin memberikan izin untuk mengakses objek, tetapi pemilik bucket tidak memiliki semua objek di bucket. Untuk contoh ini, pemilik bucket mencoba memberikan izin kepada pengguna yang ada di akunnya sendiri.

Pemilik bucket dapat mengaktifkan orang lain Akun AWS untuk mengunggah objek. Secara default, pemilik bucket tidak memiliki objek yang ditulis ke bucket oleh orang lain Akun AWS. Objek dimiliki oleh akun yang menulisnya ke bucket S3. Jika pemilik bucket tidak memiliki objek di bucket, pemilik objek harus terlebih dahulu memberikan izin kepada pemilik bucket menggunakan daftar kontrol akses objek (ACL). Kemudian, pemilik bucket dapat memberikan izin ke objek yang tidak mereka miliki. Untuk informasi selengkapnya, lihat bucket Amazon S3 dan kepemilikan objek.

Jika pemilik bucket menerapkan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan S3 Object untuk bucket, pemilik bucket akan memiliki semua objek di bucket, termasuk objek yang ditulis oleh yang lain. Akun AWS Pendekatan ini menyelesaikan masalah bahwa objek tidak dimiliki oleh pemilik ember. Kemudian, Anda dapat mendelegasikan izin kepada pengguna di akun Anda sendiri, atau ke orang lain Akun AWS.

catatan

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. Kami menyarankan agar ACL dinonaktifkan, kecuali dalam keadaan yang tidak biasa ketika 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.

Dalam contoh ini, kami menganggap pemilik bucket belum menerapkan pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek. Pemilik bucket mendelegasikan izin kepada pengguna di akunnya sendiri. Berikut ini adalah ringkasan langkah-langkah penelusuran:

Pemilik bucket yang memberikan izin ke objek yang tidak dimilikinya.
  1. Pengguna administrator Akun A melampirkan kebijakan bucket dengan dua pernyataan.

    • Memungkinkan izin lintas akun ke Akun B untuk mengunggah objek.

    • Memungkinkan pengguna dalam akunnya sendiri untuk mengakses objek yang ada dalam bucket.

  2. Pengguna administrator Akun B mengunggah objek ke bucket yang dimiliki oleh Akun A.

  3. Administrator Akun B memperbarui ACL objek yang menambahkan pemberian yang memberikan pemilik bucket izin kontrol penuh pada objek.

  4. Pengguna di Akun A memverifikasi dengan mengakses objek di dalam bucket, terlepas dari siapa pemiliknya.

Untuk contoh ini, Anda memerlukan dua akun. Tabel berikut menunjukkan cara kami merujuk akun-akun ini, dan pengguna administrator yang ada dalam akun-akun tersebut. Dalam panduan ini, Anda tidak menggunakan kredensial pengguna root, menurut pedoman IAM yang direkomendasikan. Untuk informasi selengkapnya, lihat Tentang menggunakan pengguna administrator untuk membuat sumber daya dan memberikan izin. Sebagai gantinya, Anda membuat administrator di setiap akun dan menggunakan kredensial tersebut untuk membuat sumber daya dan memberikan mereka izin.

Akun AWS ID Akun disebut sebagai Administrator pada akun

1111-1111-1111

Akun A

AccountAadmin

2222-2222-2222

Akun B

AccountBadmin

Semua tugas membuat pengguna dan memberikan izin dilakukan di AWS Management Console. Untuk memverifikasi izin, penelusuran menggunakan alat baris perintah, AWS Command Line Interface (AWS CLI) dan AWS Tools for Windows PowerShell, jadi Anda tidak perlu menulis kode apa pun.

Langkah 0: Bersiap-siap untuk panduan

  1. Pastikan Anda memiliki dua Akun AWS dan setiap akun memiliki satu administrator seperti yang ditunjukkan pada tabel di bagian sebelumnya.

    1. Mendaftar untuk Akun AWS, jika diperlukan.

    2. Menggunakan kredensyal Akun A, masuk ke Konsol IAM dan lakukan hal berikut untuk membuat pengguna administrator:

      • Buat pengguna AccountAadmin dan catat kredensil keamanan pengguna. Untuk informasi lebih lanjut tentang penambahan pengguna, lihat Membuat Pengguna IAM dalam Akun AWS Anda dalam Panduan Pengguna IAM.

      • Berikan izin administrator AccountAadmindengan melampirkan kebijakan pengguna yang memberikan akses penuh. Untuk instruksi, lihat Mengelola kebijakan IAM dalam Panduan Pengguna IAM.

      • Di Dasbor Konsol IAM, perhatikan URL Masuk Pengguna IAM. Semua pengguna di akun tersebut harus menggunakan URL ini saat masuk ke AWS Management Console. Untuk informasi lebih lanjut, lihat Cara pengguna masuk ke akun anda dalam Panduan Pengguna IAM.

    3. Ulangi langkah sebelumnya dengan menggunakan kredensial Akun B dan buat pengguna administrator AccountBadmin.

  2. Siapkan salah satu AWS CLI atau Tools untuk Windows PowerShell. Pastikan Anda menyimpan kredensial administrator seperti berikut ini:

    • Jika menggunakan AWS CLI, buat dua profil, AccountAadmin danAccountBadmin, dalam file konfigurasi.

    • Jika menggunakan Tools untuk Windows PowerShell, pastikan bahwa Anda menyimpan kredensyal untuk sesi sebagai AccountAadmin dan. AccountBadmin

    Untuk petunjuk, lihat Menyiapkan alat untuk penelusuran.

Langkah 1: Melakukan tugas Akun A

Lakukan langkah-langkah berikut untuk Akun A:

Langkah 1.1: Masuk ke konsol tersebut

Menggunakan URL login pengguna IAM untuk Akun A, masuk ke pengguna AWS Management Console sebagaiAccountAadmin. Pengguna ini akan membuat bucket dan melampirkan kebijakan pada bucket tersebut.

Langkah 1.2: Buat bucket dan pengguna, dan menambahkan kebijakan bucket yang memberikan izin pengguna

  1. Pada konsol Amazon S3, buat bucket. Latihan ini mengasumsikan bahwa ember dibuat di AS Timur (Virginia N.) Wilayah AWS, dan namanya adalah. example-s3-bucket1

    Untuk petunjuk, lihat Membuat bucket.

  2. Di Konsol IAM, buat penggunaDave.

    Untuk step-by-step petunjuk, lihat Membuat pengguna IAM (konsol) di Panduan Pengguna IAM.

  3. Perhatikan kredensi Dave pengguna.

  4. Pada konsol Amazon S3, lampirkan kebijakan bucket berikut ini ke bucket example-s3-bucket1. Untuk petunjuk, lihat Menambahkan kebijakan bucket dengan menggunakan konsol Amazon S3. Ikuti langkah-langkah untuk menambahkan kebijakan bucket. Untuk informasi tentang cara menemukan ID akun, lihat Menemukan Akun AWS ID Anda.

    Kebijakan tersebut memberikan izin s3:PutObject dan s3:ListBucket kepada Akun B. Kebijakan ini juga memberikan s3:GetObject izin Dave kepada pengguna.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::example-s3-bucket1/*", "arn:aws:s3:::example-s3-bucket1" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::example-s3-bucket1/*" ] } ] }

Langkah 2: Melakukan tugas Akun B

Setelah Akun B memiliki izin untuk melakukan operasi pada bucket Akun A, administrator Akun B melakukan hal berikut:

  • Mengunggah objek ke bucket Akun A

  • Menambahkan hibah di objek ACL untuk mengizinkan Akun A, pemilik bucket, kontrol penuh

Menggunakan AWS CLI
  1. Menggunakan put-object AWS CLI perintah, unggah objek. Parameter --body dalam perintah mengidentifikasi file sumber yang akan diunggah. Misalnya, jika file ada di C: drive Windows mesin, tentukanc:\HappyFace.jpg. Parameter --key menyediakan nama kunci untuk objek.

    aws s3api put-object --bucket example-s3-bucket1 --key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin
  2. Tambahkan pemberian pada ACL objek untuk memungkinkan pemilik bucket mengontrol penuh objek. Untuk informasi tentang cara menemukan ID pengguna kanonik, lihat Menemukan ID pengguna kanonik untuk Anda Akun AWS di Panduan Referensi Manajemen AWS Akun.

    aws s3api put-object-acl --bucket example-s3-bucket1 --key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
Menggunakan Alat untuk Windows PowerShell
  1. Menggunakan Write-S3Object perintah, unggah objek.

    Write-S3Object -BucketName example-s3-bucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin
  2. Tambahkan pemberian pada ACL objek untuk memungkinkan pemilik bucket mengontrol penuh objek.

    Set-S3ACL -BucketName example-s3-bucket1 -Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden

Langkah 3: Menguji izin

Sekarang, verifikasi pengguna Dave di Akun A apakah dapat mengakses objek yang dimiliki oleh Akun B.

Menggunakan AWS CLI
  1. Tambahkan kredensi Dave pengguna ke file AWS CLI konfigurasi dan buat profil baru,. UserDaveAccountA Untuk informasi selengkapnya, lihat Menyiapkan alat untuk penelusuran.

    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. Jalankan perintah get-object CLI untuk mengunduh HappyFace.jpg dan menyimpannya secara lokal. Anda memberikan kredensial pengguna Dave dengan menambahkan parameter --profile.

    aws s3api get-object --bucket example-s3-bucket1 --key HappyFace.jpg Outputfile.jpg --profile UserDaveAccountA
Menggunakan Alat untuk Windows PowerShell
  1. Simpan AWS kredensi Dave pengguna, sepertiUserDaveAccountA, ke toko persisten.

    Set-AWSCredentials -AccessKey UserDave-AccessKey -SecretKey UserDave-SecretAccessKey -storeas UserDaveAccountA
  2. Jalankan perintah Read-S3Object untuk mengunduh objek HappyFace.jpg dan menyimpannya secara lokal. Anda memberikan kredensial ke pengguna Dave dengan menambahkan parameter -StoredCredentials.

    Read-S3Object -BucketName example-s3-bucket1 -Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA

Langkah 4: Membersihkan

  1. Setelah selesai melakukan pengujian, Anda dapat melakukan hal berikut untuk membersihkan:

    1. Masuk ke AWS Management Console menggunakan kredensial Akun A, dan lakukan hal-hal berikut ini:

      • Di konsol Amazon S3, hapus kebijakan bucket yang dilampirkan ke example-s3-bucket1. Dalam bucket Properti, hapus kebijakan yang ada dalam bagian Izin.

      • Jika bucket dibuat untuk latihan ini, pada konsol Amazon S3, hapus objek dan kemudian hapus bucket.

      • Di Konsol IAM, hapus AccountAadminpengguna. Untuk step-by-step petunjuk, lihat Menghapus pengguna IAM di Panduan Pengguna IAM.

  2. Masuklah ke AWS Management Console menggunakan kredensial Akun B. Di Konsol IAM, hapus pengguna AccountBadmin.