Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengontrol akses ke bucket dengan kebijakan pengguna
Panduan ini menjelaskan cara kerja izin pengguna dengan Amazon S3. Dalam contoh ini, Anda membuat bucket dengan folder. Anda kemudian membuat AWS Identity and Access Management IAMpengguna di Akun AWS dan berikan izin tambahan kepada pengguna tersebut di bucket Amazon S3 Anda dan folder di dalamnya.
Topik
- Basic bucket dan folder
- Ringkasan panduan
- Bersiap untuk panduan
- Langkah 1: Buat bucket
- Langkah 2: Buat IAM pengguna dan grup
- Langkah 3: Verifikasi bahwa IAM pengguna tidak memiliki izin
- Langkah 4: Berikan izin tingkat grup
- Langkah 5: Berikan izin khusus kepada IAM pengguna Alice
- Langkah 6: Berikan izin khusus Bob IAM pengguna
- Langkah 7: Amankan folder privat
- Langkah 8: Membersihkan
- Sumber daya terkait
Basic bucket dan folder
Model data Amazon S3 bersifat struktur yang datar: Anda membuat bucket, dan bucket menyimpan objek tersebut. Tidak ada hierarki sub-bucket atau sub-folder, tetapi Anda dapat berusaha menyamai hierarki folder. Alat-alat seperti konsol Amazon S3 dapat menyajikan tampilan folder dan sub-folder logika ini di dalam bucket.
Konsol tersebut menunjukkan bahwa bucket bernama companybucket
memiliki tiga folder, Private
, Development
, dan Finance
, dan sebuah objek, s3-dg.pdf
. Konsol tersebut menggunakan nama objek (kunci) untuk membuat hierarki logis dengan folder dan subfolder. Pertimbangkan contoh berikut:
-
Saat Anda membuat folder
Development
, konsol tersebut membuat objek dengan kunciDevelopment/
. Perhatikan jejak garis miring (/
) pembatas. -
Saat Anda mengunggah objek yang diberi nama
Projects1.xls
dalam folderDevelopment
, konsol mengunggah objek dan memberikannya kunciDevelopment/Projects1.xls
.Dalam kunci tersebut,
Development
adalah prefiks dan/
adalah pembatas. Amazon S3 API mendukung awalan dan pembatas dalam operasinya. Sebagai contoh, Anda dapat memperoleh daftar semua objek dari bucket dengan prefiks dan pembatas tertentu. Pada konsol, saat Anda membuka folderDevelopment
, konsol akan mencantumkan objek yang ada di folder tersebut. Pada contoh berikut, folderDevelopment
berisi satu objek.Saat konsol mencantumkan folder
Development
di dalam bucketcompanybucket
, konsol tersebut mengirimkan permintaan ke Amazon S3 yang menyebutkan prefiks dariDevelopment
dan pembatas dari/
dalam permintaan. Respons konsol terlihat seperti daftar folder di sistem file komputer Anda. Contoh sebelumnya menunjukkan bahwa bucketcompanybucket
memiliki sebuah objek dengan kunciDevelopment/Projects1.xls
.
Konsol menggunakan kunci objek untuk membuat hierarki logika. Amazon S3 tidak memiliki hierarki fisik. Amazon S3 hanya memiliki bucket yang berisi objek dalam struktur file datar. Saat membuat objek menggunakan Amazon S3API, Anda dapat menggunakan kunci objek yang menyiratkan hierarki logis. Saat Anda membuat hierarki logika dari objek-objek tersebut, Anda dapat mengelola akses ke setiap folder, seperti yang ditunjukkan oleh panduan ini.
Sebelum memulai, pastikan bahwa Anda sudah terbiasa dengan konsep konten bucket tingkat root. Misalkan bucket companybucket
memiliki objek-objek berikut:
-
Private/privDoc1.txt
-
Private/privDoc2.zip
-
Development/project1.xls
-
Development/project2.xls
-
Finance/Tax2011/document1.pdf
-
Finance/Tax2011/document2.pdf
-
s3-dg.pdf
Kunci-kunci objek ini membuat hierarki logika dengan Private
, Development
, dan sebagai folder tingkat root Finance
dan sebagai objek tingkat root s3-dg.pdf
. Saat Anda memilih nama bucket di konsol Amazon S3, item tingkat root muncul. Konsol menunjukkan prefiks tingkat atas (Private/
, Development/
, dan Finance/
) sebagai folder tingkat root. Kunci objek s3-dg.pdf
tidak memiliki prefiks, sehingga muncul sebagai item tingkat root.
Ringkasan panduan
Dalam panduan ini, Anda membuat sebuah bucket dengan tiga folder (Private
, Development
, dan Finance
) di dalamnya.
Anda memiliki dua pengguna, Alice dan Bob. Anda ingin Alice hanya mengakses folder Development
, dan Anda ingin Bob hanya mengakses folder Finance
. Anda ingin membuat konten folder Private
tetap privat. Dalam panduan, Anda mengelola akses dengan membuat IAM pengguna (contoh menggunakan nama pengguna Alice dan Bob) dan memberi mereka izin yang diperlukan.
IAMjuga mendukung pembuatan grup pengguna dan memberikan izin tingkat grup yang berlaku untuk semua pengguna dalam grup. Hal ini membantu Anda untuk mengelola izin dengan lebih baik. Untuk latihan ini, baik Alice maupun Bob memerlukan beberapa izin yang sama. Jadi, Anda juga membuat kelompok bernama Consultants
, lalu menambahkan Alice dan Bob ke dalam grup tersebut. Anda terlebih dahulu harus memberikan izin dengan melampirkan kebijakan grup ke grup tersebut. Kemudian Anda menambahkan izin kustom pengguna dengan melampirkan kebijakan kepada pengguna tertentu.
catatan
Walkthrough menggunakan companybucket
nama bucket, Alice dan Bob sebagai IAM pengguna, dan Consultants
sebagai nama grup. Karena Amazon S3 mewajibkan bahwa nama bucket harus bersifat unik secara global, maka Anda harus mengganti nama bucket dengan nama yang Anda buat.
Bersiap untuk panduan
Dalam contoh ini, Anda menggunakan Akun AWS kredensi untuk membuat IAM pengguna. Pada awalnya, pengguna ini tidak memiliki izin. Anda kemudian memberikan pengguna tersebut izin tambahan untuk melakukan tindakan Amazon S3 tertentu. Untuk menguji izin ini, Anda masuk ke konsol dengan menggunakan kredensial masing-masing pengguna. Saat Anda secara bertahap memberikan izin sebagai Akun AWS pemilik dan izin uji sebagai IAM pengguna, Anda harus masuk dan keluar, setiap kali menggunakan kredensil yang berbeda. Anda dapat melakukan pengujian ini dengan satu browser, tetapi prosesnya akan berjalan lebih cepat jika Anda dapat menggunakan dua browser yang berbeda. Gunakan satu browser untuk terhubung ke AWS Management Console dengan Anda Akun AWS kredensyal dan browser lain untuk terhubung dengan kredensyal IAM pengguna.
Untuk masuk ke AWS Management Console dengan Anda Akun AWS
kredensil, pergi kehttps://console.aws.amazon.com/.
Untuk informasi selengkapnyaIAM, lihat The AWS Management Console Halaman Masuk di Panduan IAM Pengguna.
Untuk menyediakan tautan masuk bagi pengguna IAM
-
Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/
. -
Di panel Navigasi, pilih IAMDasbor.
-
Perhatikan tautan masuk IAM pengguna di URL bawah:. Anda akan memberikan tautan ini kepada IAM pengguna untuk masuk ke konsol dengan nama IAM pengguna dan kata sandi mereka.
Langkah 1: Buat bucket
Pada langkah ini, Anda masuk ke konsol Amazon S3 dengan Akun AWS kredensialnya, buat bucket, tambahkan folder ke bucket, dan unggah satu atau dua contoh dokumen di setiap folder.
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Buat bucket.
Untuk step-by-step instruksi, lihatBuat bucket.
-
Unggah satu dokumen ke bucket.
Latihan ini mengasumsikan bahwa Anda memiliki dokumen
s3-dg.pdf
pada tingkat root bucket ini. Jika Anda mengunggah dokumen lain, ganti nama file untuks3-dg.pdf
. -
Tambahkan tiga folder yang diberi nama
Private
,Finance
, danDevelopment
ke dalam bucket.Untuk step-by-step petunjuk cara membuat folder, lihat Mengatur objek di konsol Amazon S3 dengan menggunakan folder > di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Unggah satu atau dua dokumen ke setiap folder.
Untuk latihan ini, asumsikan bahwa Anda telah mengunggah beberapa dokumen di setiap folder, sehingga bucket tersebut memiliki objek dengan kunci-kunci berikut:
-
Private/privDoc1.txt
-
Private/privDoc2.zip
-
Development/project1.xls
-
Development/project2.xls
-
Finance/Tax2011/document1.pdf
-
Finance/Tax2011/document2.pdf
-
s3-dg.pdf
Untuk step-by-step instruksi, lihatMengunggah Objek.
-
Langkah 2: Buat IAM pengguna dan grup
Sekarang gunakan IAMKonsol
Juga buat grup administratif bernamaConsultants
. Kemudian tambahkan kedua pengguna ke grup. Untuk step-by-step petunjuk, lihat Membuat grup IAM pengguna.
Awas
Saat Anda menambahkan pengguna dan grup, jangan melampirkan kebijakan apa pun yang memberikan izin kepada pengguna-pengguna ini. Awalnya, para pengguna ini tidak memiliki izin. Dalam bagian berikut ini, Anda memberikan izin sebagai tambahan. Pertama, Anda harus memastikan bahwa Anda telah menetapkan kata sandi untuk IAM pengguna ini. Anda menggunakan kredensial para pengguna ini untuk menguji tindakan Amazon S3 dan memverifikasi bahwa izin berfungsi sesuai harapan.
Untuk step-by-step petunjuk cara membuat IAM pengguna baru, lihat Membuat IAM pengguna di Akun AWS di Panduan Pengguna IAM. Saat Anda membuat pengguna untuk panduan ini, pilih AWS Management Console akses dan akses terprogram yang jelas.
Untuk step-by-step petunjuk cara membuat grup administratif, lihat Membuat Pengguna dan Grup IAM Admin Pertama Anda di Panduan IAM Pengguna.
Langkah 3: Verifikasi bahwa IAM pengguna tidak memiliki izin
Jika Anda menggunakan dua browser, Anda sekarang dapat menggunakan browser kedua untuk masuk ke konsol menggunakan salah satu kredensyal IAM pengguna.
-
Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console menggunakan salah satu kredensi IAM pengguna.
-
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
Verifikasi pesan konsol yang memberi tahu Anda bahwa akses ditolak.
Sekarang, Anda dapat mulai memberikan izin tambahan kepada pengguna. Pertama, Anda harus melampirkan kebijakan grup yang memberikan izin yang harus dimiliki kedua pengguna.
Langkah 4: Berikan izin tingkat grup
Anda ingin pengguna dapat melakukan hal berikut ini:
-
Cantumkan semua bucket yang dimiliki oleh akun induk. Untuk melakukannya, Bob dan Alice harus memiliki izin untuk tindakan
s3:ListAllMyBuckets
. -
Cantumkan item tingkat root, folder, dan objek dalam bucket
companybucket
. Untuk melakukannya, Bob dan Alice harus memiliki izin untuk tindakans3:ListBucket
pada bucketcompanybucket
.
Pertama, Anda harus membuat kebijakan yang memberikan izin-izin tersebut, lalu Anda harus melampirkannya ke grup Consultants
.
Langkah 4.1: Berikan izin untuk mencantumkan semua bucket
Pada langkah ini, Anda membuat kebijakan terkelola yang memberikan izin minimum kepada para pengguna untuk memungkinkan mereka mencantumkan daftar semua bucket yang dimiliki oleh akun induk. Kemudian Anda melampirkan kebijakan tersebut ke grup Consultants
. Saat Anda melampirkan kebijakan terkelola ke pengguna atau grup, Anda memberikan izin kepada pengguna atau grup untuk mendapatkan daftar bucket yang dimiliki oleh orang tua Akun AWS.
-
Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/
. catatan
Karena Anda memberikan izin pengguna, masuk menggunakan Akun AWS kredensialnya, bukan sebagai IAM pengguna.
-
Buat kebijakan terkelola.
-
Pada panel navigasi yang ada di sebelah kiri, pilih Kebijakan, lalu pilih Buat Kebijakan.
-
Pilih JSONtab.
-
Salin kebijakan akses berikut dan tempelkan ke dalam kolom teks kebijakan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": ["s3:ListAllMyBuckets"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] } ] }
Kebijakan adalah JSON dokumen. Dalam dokumen,
Statement
adalah inline objek, yang masing-masing menjelaskan izin dengan menggunakan kumpulan pasangan nilai-nama. Kebijakan sebelumnya menjelaskan satu izin tertentu.Action
menyebutkan jenis akses. Dalam kebijakan,s3:ListAllMyBuckets
adalah tindakan Amazon S3 yang telah ditentukan sebelumnya. Tindakan ini mencakup operasi GET Layanan Amazon S3, yang mengembalikan daftar semua bucket yang dimiliki oleh pengirim yang diautentikasi. Nilai elemenEffect
menentukan apakah izin tertentu diperbolehkan atau ditolak. -
Pilih Tinjau Kebijakan. Pada halaman berikutnya, masukkan
AllowGroupToSeeBucketListInTheConsole
pada kolom Nama, dan kemudian pilih Buat kebijakan.catatan
Entri Ringkasan menampilkan pesan yang menyatakan bahwa kebijakan tidak memberikan izin apa pun. Untuk panduan ini, Anda dapat mengabaikan pesan ini dengan aman.
-
-
Lampirkan kebijakan terkelola
AllowGroupToSeeBucketListInTheConsole
yang Anda buat ke grupConsultants
.Untuk step-by-step petunjuk untuk melampirkan kebijakan terkelola, lihat Menambahkan dan menghapus izin IAM identitas di IAMPanduan Pengguna.
Anda melampirkan dokumen kebijakan ke IAM pengguna dan grup di IAM konsol. Karena Anda ingin kedua pengguna dapat mencantumkan bucket, Anda harus melampirkan kebijakan ke grup.
-
Uji izin.
-
Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke konsol menggunakan salah satu kredensi IAM pengguna.
-
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
Konsol tersebut harus mencantumkan semua bucket tetapi bukan objek yang ada dalam bucket mana pun.
-
Langkah 4.2: Mengaktifkan pengguna untuk mencantumkan konten tingkat root dalam bucket
Selanjutnya, Anda mengizinkan semua pengguna di grup Consultants
untuk mencantumkan item bucket companybucket
tingkat root. Ketika pengguna memilih bucket perusahaan pada konsol Amazon S3, pengguna dapat melihat item tingkat root yang ada dalam bucket.
catatan
Contoh ini menggunakan companybucket
sebagai ilustrasi. Anda harus menggunakan nama bucket yang Anda buat.
Untuk memahami permintaan yang dikirim konsol ke Amazon S3 saat Anda memilih nama bucket, respons yang dikembalikan Amazon S3, dan bagaimana konsol menafsirkan respons, periksa alirannya sedikit lebih dekat.
Saat Anda memilih nama bucket, konsol akan mengirimkan permintaan GETBucket (List Objects) ke Amazon S3. Permintaan ini mencakup parameter-parameter berikut ini:
-
Parameter
prefix
dengan string kosong sebagai nilainya. -
Parameter
delimiter
dengan/
sebagai nilainya.
Berikut ini adalah contoh permintaan.
GET ?prefix=&delimiter=/ HTTP/1.1 Host: companybucket.s3.amazonaws.com Date: Wed, 01 Aug 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
Amazon S3 mengembalikan respons yang menyertakan elemen <ListBucketResult/>
berikut ini.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix></Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>s3-dg.pdf</Key> ... </Contents> <CommonPrefixes> <Prefix>Development/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Finance/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Private/</Prefix> </CommonPrefixes> </ListBucketResult>
Kuncinya s3-dg.pdf
objek tidak berisi pembatas garis miring (/
), dan Amazon S3 mengembalikan kunci dalam elemen <Contents>
. Namun, semua kunci lain dalam contoh bucket berisi pembatas /
. Amazon S3 mengelompokkan kunci-kunci ini dan mengembalikan elemen <CommonPrefixes>
untuk setiap nilai prefiks yang berbeda Development/
, Finance/
, dan Private/
yakni substring dari awal kunci-kunci tersebut hingga peristiwa pertama pembatas /
yang ditentukan.
Konsol menafsirkan hasil ini dan menampilkan item tingkat root sebagai tiga folder dan satu kunci objek.
Jika Bob atau Alice membuka folder Development, konsol akan mengirimkan permintaan GETBucket (List Objects) ke Amazon S3 dengan prefix
parameter dan delimiter
disetel ke nilai berikut:
-
Parameter
prefix
dengan nilaiDevelopment/
. -
Parameter
delimiter
dengan nilai "/
".
Sebagai respons, Amazon S3 mengembalikan kunci-kunci objek yang dimulai dengan prefiks yang ditentukan.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix>Development</Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>Project1.xls</Key> ... </Contents> <Contents> <Key>Project2.xls</Key> ... </Contents> </ListBucketResult>
Konsol menampilkan kunci-kunci objek.
Sekarang, kembali ke pemberian izin pengguna untuk mencantumkan item bucket tingkat root. Untuk mencantumkan konten bucket, pengguna memerlukan izin untuk memanggil tindakan s3:ListBucket
, sebagaimana yang diperlihatkan dalam pernyataan kebijakan berikut. Untuk memastikan bahwa mereka hanya melihat konten tingkat root, Anda harus menambahkan kondisi yang harus ditetapkan pengguna sebagai prefix
kosong dalam permintaan—yaitu, mereka tidak diizinkan melakukan klik dua kali pada folder tingkat root. Terakhir, Anda menambahkan kondisi untuk mengharuskan akses gaya folder dengan mengharuskan permintaan pengguna untuk menyertakan parameter delimiter
dengan nilai "/
".
{ "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } }
Saat Anda memilih bucket di konsol Amazon S3, konsol akan mengirimkan permintaan lokasi GET Bucket terlebih dahulu untuk menemukan Wilayah AWS di mana ember dikerahkan. Kemudian konsol menggunakan titik akhir khusus Wilayah untuk bucket untuk mengirim permintaan GETBucket (List Objects). Akibatnya, jika pengguna akan menggunakan konsol, maka Anda harus memberikan izin untuk tindakan s3:GetBucketLocation
seperti yang ditunjukkan dalam pernyataan kebijakan berikut.
{ "Sid": "RequiredByS3Console", "Action": ["s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }
Untuk memungkinkan pengguna mencantumkan konten bucket tingkat root
-
Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/
. Gunakan Anda Akun AWS kredensil, bukan kredensil IAM pengguna, untuk masuk ke konsol.
-
Ganti kebijakan terkelola
AllowGroupToSeeBucketListInTheConsole
yang sudah ada yang terlampir pada grupConsultants
dengan kebijakan berikut, yang juga memungkinkan tindakans3:ListBucket
. Ingatlah untuk mengganti
dalam kebijakancompanybucket
Resource
dengan nama ember Anda.Untuk step-by-step petunjuk, lihat Mengedit IAM kebijakan di Panduan IAM Pengguna. Saat mengikuti step-by-step instruksi, pastikan untuk mengikuti langkah-langkah untuk menerapkan perubahan Anda ke semua entitas utama yang dilampirkan kebijakan tersebut.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } } ] } -
Uji izin yang diperbarui.
-
Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console.
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pilih bucket yang Anda buat, dan konsol akan menunjukkan item bucket tingkat root. Jika Anda memilih folder apa pun yang ada dalam bucket, maka Anda tidak akan dapat melihat konten folder tersebut karena Anda belum memberikan izin.
-
Pengujian ini berhasil ketika pengguna menggunakan konsol Amazon S3. Saat Anda memilih bucket pada konsol tersebut, implementasi konsol mengirim permintaan yang menyertakan parameter prefix
dengan string kosong sebagai nilainya dan parameter delimiter
dengan "/
" sebagai nilainya.
Langkah 4.3: Ringkasan kebijakan grup
Efek bersih dari kebijakan grup yang Anda tambahkan adalah memberikan izin minimum berikut kepada IAM pengguna Alice dan Bob:
-
Cantumkan semua bucket yang dimiliki oleh akun induk.
-
Lihat item tingkat root di bucket
companybucket
.
Namun, pengguna masih tidak bisa melakukan banyak hal. Selanjutnya, Anda memberikan izin spesifik pengguna, sebagai berikut:
-
Memungkinkan Alice untuk mendapatkan dan meletakkan objek di folder
Development
. -
Memungkinkan Bob untuk mendapatkan dan meletakkan objek di folder
Finance
.
Untuk izin-izin spesifik pengguna, Anda harus melampirkan kebijakan kepada pengguna tertentu, bukan ke grup. Pada bagian berikut, Anda memberikan izin kepada Alice untuk bekerja di folder Development
. Anda dapat mengulangi langkah untuk memberikan izin serupa kepada Bob untuk bekerja di folder Finance
.
Langkah 5: Berikan izin khusus kepada IAM pengguna Alice
Sekarang Anda memberikan izin tambahan kepada Alice sehingga dia dapat melihat konten folder Development
dan mengambil dan meletakkan objek di folder itu.
Langkah 5.1: Berikan izin kepada IAM pengguna Alice untuk membuat daftar konten folder pengembangan
Agar Alice dapat mencantumkan konten Development
folder, Anda harus menerapkan kebijakan kepada pengguna Alice yang memberikan izin untuk s3:ListBucket
tindakan di companybucket
bucket, asalkan permintaan tersebut menyertakan awalan. Development/
Anda ingin kebijakan ini diterapkan hanya untuk pengguna Alice, sehingga Anda menggunakan kebijakan inline. Untuk informasi selengkapnya tentang kebijakan sebaris, lihat Kebijakan terkelola dan kebijakan sebaris di IAMPanduan Pengguna.
-
Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/
. Gunakan Anda Akun AWS kredensil, bukan kredensil IAM pengguna, untuk masuk ke konsol.
-
Buat kebijakan selaras untuk memberikan izin kepada pengguna Alice untuk mencantumkan konten folder
Development
.-
Pada panel navigasi di sebelah kiri, pilih Pengguna.
-
Pilih nama pengguna Alice.
-
Pada halaman rincian pengguna, pilih tab Izin dan kemudian pilih Tambahkan kebijakan selaras.
-
Pilih JSONtab.
-
Salin kebijakan berikut, dan tempelkan ke bidang teks kebijakan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] } -
Pilih Tinjau Kebijakan. Pada halaman berikutnya, masukkan nama dalam kolom Nama, dan kemudian pilih Buat kebijakan.
-
-
Uji perubahan izin Alice:
-
Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console.
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pada konsol Amazon S3, verifikasi bahwa Alice dapat melihat daftar objek di folder
Development/
di dalam bucket.Ketika pengguna memilih folder
/Development
untuk melihat daftar objek di dalamnya, konsol Amazon S3 mengirimkan permintaanListObjects
ke Amazon S3 dengan prefiks/Development
. Karena pengguna diberikan izin untuk melihat daftar objek dengan prefiksDevelopment
dan pembatas/
, Amazon S3 menampilkan daftar objek dengan key prefiks kunciDevelopment/
, dan konsol tersebut menampilkan daftar.
-
Langkah 5.2: Berikan izin Alice IAM pengguna untuk mendapatkan dan meletakkan objek di folder pengembangan
Agar Alice mendapatkan dan meletakkan objek di folder Development
, ia memerlukan izin untuk memanggil tindakan s3:GetObject
dan s3:PutObject
. Pernyataan kebijakan berikut memberikan izin-izin ini, dengan kondisi bahwa permintaan menyertakan parameter prefix
dengan nilai Development/
.
{ "Sid":"AllowUserToReadWriteObjectData", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }
-
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
Gunakan Anda Akun AWS kredensil, bukan kredensil IAM pengguna, untuk masuk ke konsol.
-
Edit kebijakan selaras yang Anda buat pada langkah sebelumnya.
Pada panel navigasi di sebelah kiri, pilih Pengguna.
Pilih nama pengguna Alice.
Pada halaman rincian pengguna, pilih tab Izin dan memperluas bagian Kebijakan Selaras.
Di sebelah nama kebijakan yang Anda buat di langkah sebelumnya, pilih Edit Kebijakan.
Salin kebijakan berikut ini, dan tempelkan ke dalam kolom teks kebijakan, yang akan menggantikan kebijakan yang sudah ada.
{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket
/Development/*"] } ] }
-
Uji kebijakan yang diperbarui:
-
Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console.
-
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pada konsol Amazon S3, verifikasi bahwa Alice kini dapat menambahkan objek dan mengunduh objek di folder
Development
.
-
Langkah 5.3: Secara eksplisit menolak izin IAM pengguna Alice ke folder lain di ember
Pengguna Alice kini dapat mencantumkan konten tingkat root di bucket companybucket
. Dia juga dapat mengambil dan memasukkan objek di folder Development
. Jika Anda benar-benar ingin mengencangkan izin akses, Anda dapat secara jelas menolak akses ke folder lain yang ada dalam bucket. Jika ada kebijakan lain (kebijakan bucket atauACL) yang memberi Alice akses ke folder lain di bucket, penolakan eksplisit ini akan mengesampingkan izin tersebut.
Anda dapat menambahkan pernyataan berikut ke kebijakan pengguna Alice yang mengharuskan semua permintaan yang dikirimkan Alice ke Amazon S3 harus menyertakan parameter prefix
, yang nilainya dapat berupa Development/*
atau string kosong.
{ "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } }
Ada dua ekspresi bersyarat di pemblokiran Condition
. Hasil dari ekspresi kondisional ini dikombinasikan dengan menggunakan logis AND
. Jika kedua syarat betul, hasil dari kondisi gabungan adalah BETUL. Karena Effect
dalam kebijakan ini adalah Deny
, saat Condition
dievaluasi bernilai benar, maka pengguna tidak dapat menjalankan Action
yang ditentukan.
-
Ekspresi bersyarat
Null
memastikan bahwa permintaan dari Alice menyertakan parameterprefix
.Parameter
prefix
memerlukan akses seperti folder. Jika Anda mengirim permintaan tanpa parameterprefix
, Amazon S3 mengembalikan semua kunci objek.Jika permintaan menyertakan parameter
prefix
dengan nilai nol, maka ekspresi dievalusi bernilai benar, dan seluruhCondition
dievaluasi bernilai benar. Anda harus mengizinkan string kosong sebagai nilai dari parameterprefix
. Dari pembahasan sebelumnya, ingatlah bahwa dengan memungkinkan string nol akan memungkinkan Alice mengambil item bucket tingkat root sebagaimana yang konsol lakukan dalam pembahasan sebelumnya. Untuk informasi selengkapnya, lihat Langkah 4.2: Mengaktifkan pengguna untuk mencantumkan konten tingkat root dalam bucket. Ekspresi kondisional
StringNotLike
memastikan bahwa jika nilai parameterprefix
ditentukan dan bukanDevelopment/*
, maka permintaan gagal.
Ikuti langkah-langkah yang diuraikan pada bagian sebelumnya dan sekali lagi perbarui kebijakan selaras yang Anda buat untuk pengguna Alice.
Salin kebijakan berikut ini, dan tempelkan ke dalam kolom teks kebijakan, yang akan menggantikan kebijakan yang sudah ada.
{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket
/Development/*"] }, { "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket
"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } } ] }
Langkah 6: Berikan izin khusus Bob IAM pengguna
Sekarang Anda ingin memberikan Bob izin ke folder Finance
. Ikuti langkah-langkah yang telah Anda gunakan sebelumnya untuk memberikan izin kepada Alice, tetapi ganti folder Development
dengan folder Finance
. Untuk step-by-step instruksi, lihatLangkah 5: Berikan izin khusus kepada IAM pengguna Alice.
Langkah 7: Amankan folder privat
Dalam contoh ini, Anda hanya memiliki dua pengguna. Anda memberikan semua izin minimum yang diperlukan di tingkat grup dan memberikan izin tingkat pengguna hanya ketika Anda benar-benar perlu untuk memberikan izin pada tingkat pengguna individu. Pendekatan ini membantu meminimalkan upaya untuk mengelola izin. Saat jumlah pengguna meningkat, mengelola izin dapat menjadi rumit. Misalnya, Anda tidak ingin siapa pun dari pengguna yang ada dalam contoh ini mengakses konten folder Private
. Bagaimana Anda memastikan bahwa Anda tidak secara tidak sengaja memberikan izin pengguna ke Private
folder? Anda menambahkan kebijakan yang secara jelas menolak akses ke folder. Penolakan secara jelas menolak izin lainnya.
Untuk memastikan bahwa folder Private
tetap privat, Anda dapat menambahkan dua pernyataan penolakan berikut ke kebijakan grup:
-
Tambahkan pernyataan berikut untuk secara jelas menolak tindakan apa pun terhadap sumber daya dalam folder
Private
(companybucket/Private/*
).{ "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }
-
Anda juga menolak izin untuk tindakan cantumkan objek ketika permintaan menyebutkan prefiks
Private/
. Pada konsol, jika Bob atau Alice membuka folderPrivate
, maka kebijakan ini akan menyebabkan Amazon S3 mengembalikan respons kesalahan.{ "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } }
Mengganti kebijakan grup Consultants
dengan kebijakan yang diperbarui yang menyertakan pernyataan penolakan sebelumnya. Setelah kebijakan yang diperbarui diterapkan, tidak ada pengguna dalam grup yang dapat mengakses folder Private
di bucket Anda.
-
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
Gunakan Anda Akun AWS kredensil, bukan kredensil IAM pengguna, untuk masuk ke konsol.
-
Ganti kebijakan terkelola
AllowGroupToSeeBucketListInTheConsole
yang sudah ada yang terlampir pada grupConsultants
dengan kebijakan berikut. Ingatlah untuk mengganti
dalam kebijakan dengan nama ember Anda.companybucket
Untuk petunjuk, lihat Mengedit kebijakan yang dikelola pelanggan di Panduan IAM Pengguna. Ketika mengikuti petunjuk, pastikan untuk mengikuti petunjuk untuk menerapkan perubahan Anda ke semua entitas pengguna utama yang kepadanya kebijakan tersebut dilampirkan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringEquals":{"s3:prefix":[""]} } }, { "Sid": "RequireFolderStyleList", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringNotEquals":{"s3:delimiter":"/"} } }, { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket
/Private/*"] }, { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } } ] }
Langkah 8: Membersihkan
Untuk membersihkan, buka IAMKonsol
Untuk memastikan bahwa Anda tidak lagi dikenakan biaya untuk penyimpanan, Anda juga harus menghapus objek dan bucket yang Anda buat untuk latihan ini.
Sumber daya terkait
Mengelola IAM kebijakan dalam Panduan IAM Pengguna