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.
Topik
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.](images/access-policy-ex3.png)
-
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.
-
-
Pengguna administrator Akun B mengunggah objek ke bucket yang dimiliki oleh Akun A.
-
Administrator Akun B memperbarui ACL objek yang menambahkan pemberian yang memberikan pemilik bucket izin kontrol penuh pada objek.
-
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 |
---|---|---|
|
Akun A |
AccountAadmin |
|
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
-
Pastikan Anda memiliki dua Akun AWS dan setiap akun memiliki satu administrator seperti yang ditunjukkan pada tabel di bagian sebelumnya.
-
Mendaftar untuk Akun AWS, jika diperlukan.
-
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.
-
-
Ulangi langkah sebelumnya dengan menggunakan kredensial Akun B dan buat pengguna administrator
AccountBadmin
.
-
-
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
-
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.
-
Di Konsol IAM
, buat pengguna Dave
.Untuk step-by-step petunjuk, lihat Membuat pengguna IAM (konsol) di Panduan Pengguna IAM.
-
Perhatikan kredensi Dave pengguna.
-
Pada konsol Amazon S3, lampirkan kebijakan bucket berikut ini ke bucket
. 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.example-s3-bucket1
Kebijakan tersebut memberikan izin
s3:PutObject
dans3:ListBucket
kepada Akun B. Kebijakan ini juga memberikans3:GetObject
izinDave
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
-
Menggunakan
put-object
AWS CLI perintah, unggah objek. Parameter--body
dalam perintah mengidentifikasi file sumber yang akan diunggah. Misalnya, jika file ada diC:
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 -
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
-
Menggunakan
Write-S3Object
perintah, unggah objek.Write-S3Object -BucketName
example-s3-bucket1
-key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin -
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
-
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
-
Jalankan perintah
get-object
CLI untuk mengunduhHappyFace.jpg
dan menyimpannya secara lokal. Anda memberikan kredensial pengguna Dave dengan menambahkan parameter--profile
.aws s3api get-object --bucket
example-s3-bucket1
--key HappyFace.jpgOutputfile.jpg
--profile UserDaveAccountA
Menggunakan Alat untuk Windows PowerShell
-
Simpan AWS kredensi Dave pengguna, seperti
UserDaveAccountA
, ke toko persisten.Set-AWSCredentials -AccessKey
UserDave-AccessKey
-SecretKeyUserDave-SecretAccessKey
-storeas UserDaveAccountA -
Jalankan perintah
Read-S3Object
untuk mengunduh objekHappyFace.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
-
Setelah selesai melakukan pengujian, Anda dapat melakukan hal berikut untuk membersihkan:
-
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.
-
-
-
Masuklah ke AWS Management Console
menggunakan kredensial Akun B. Di Konsol IAM , hapus pengguna AccountBadmin.