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 pengguna AWS Identity and Access Management IAM di Anda Akun AWS dan memberikan izin tambahan kepada pengguna tersebut di bucket Amazon S3 Anda dan folder di dalamnya.
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 prefiks 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 Anda membuat objek menggunakan Amazon S3 API, Anda dapat menggunakan kunci objek yang menyiratkan hierarki logika. 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 pengguna IAM (contoh menggunakan nama pengguna Alice dan Bob) dan memberi mereka izin yang diperlukan.
IAM juga mendukung pembuatan grup pengguna dan pemberian izin tingkat grup yang berlaku untuk semua pengguna yang ada 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
Panduan menggunakan companybucket
sebagai nama bucket, Alice dan Bob sebagai pengguna IAM, 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 kredensil Anda untuk membuat pengguna IAM. 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 menguji izin sebagai pengguna IAM, 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 AWS Management Console dengan Akun AWS kredensyal Anda dan browser lain untuk terhubung dengan kredensyal pengguna IAM.
Untuk masuk ke AWS Management Console dengan Akun AWS
kredensi Anda, buka/. https://console.aws.amazon.com
Untuk informasi lebih lanjut tentang IAM, lihat Halaman Masuk AWS Management Console dalam Panduan Pengguna IAM.
Untuk menyediakan tautan masuk bagi pengguna IAM
-
Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Pada jendela Navigasi, pilih Dasbor IAM .
-
Perhatikan URL dalam Tautan masuk pengguna IAM:. Anda akan memberikan tautan ini ke pengguna IAM untuk masuk ke konsol dengan nama pengguna dan kata sandi IAM mereka.
Langkah 1: Buat bucket
Pada langkah ini, Anda masuk ke konsol Amazon S3 dengan Akun AWS kredensialnya, membuat bucket, menambahkan folder ke bucket, dan mengunggah 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, lihatMembuat ember tujuan umum.
-
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 pengguna dan grup IAM
Sekarang gunakan Konsol IAM
Juga buat grup administratif bernamaConsultants
. Kemudian tambahkan kedua pengguna ke grup. Untuk step-by-step petunjuknya, lihat Membuat grup pengguna IAM.
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 para pengguna IAM 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 pengguna IAM baru, lihat Membuat pengguna IAM di Panduan Pengguna IAM Anda Akun AWS. Saat Anda membuat pengguna untuk panduan ini, pilih akses AWS Management Console dan hapus Akses terprogram.
Untuk step-by-step petunjuk cara membuat grup administratif, lihat Membuat Pengguna dan Grup Admin IAM Pertama Anda di Panduan Pengguna IAM.
Langkah 3: Verifikasi bahwa pengguna IAM tidak memiliki izin
Jika Anda menggunakan dua browser, sekarang Anda dapat menggunakan browser kedua untuk masuk ke konsol menggunakan salah satu kredensial pengguna IAM.
-
Menggunakan tautan masuk pengguna IAM (lihat Untuk menyediakan tautan masuk bagi pengguna IAM), masuklah ke AWS Management Console menggunakan salah satu kredensial pengguna IAM.
-
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 Akun AWS induk.
-
Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/
. catatan
Karena Anda memberikan izin kepada pengguna, masuklah dengan menggunakan kredensial Akun AWS Anda, bukan sebagai pengguna IAM.
-
Buat kebijakan terkelola.
-
Pada panel navigasi yang ada di sebelah kiri, pilih Kebijakan, lalu pilih Buat Kebijakan.
-
Pilih tab JSON.
-
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 dokumen JSON. 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 Amazon S3 GET Service, 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 identitas IAM di Panduan Pengguna IAM.
Anda melampirkan dokumen kebijakan ke pengguna dan grup IAM di konsol IAM. Karena Anda ingin kedua pengguna dapat mencantumkan bucket, Anda harus melampirkan kebijakan ke grup.
-
Uji izin.
-
Menggunakan tautan masuk pengguna IAM (lihat Untuk menyediakan tautan masuk bagi pengguna IAM), masuklah ke konsol dengan menggunakan salah satu kredensial pengguna IAM.
-
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 mengirimkan permintaan GET Bucket (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 Pengembangan, konsol akan mengirim permintaan GET Bucket (List Objects) ke Amazon S3 dengan parameter prefix
dan delimiter
yang ditetapkan dengan nilai-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 tempat bucket digunakan. Kemudian konsol tersebut akan menggunakan titik akhir spesifik Wilayah untuk bucket untuk mengirimkan permintaan GET Bucket (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 konsol IAM di https://console.aws.amazon.com/iam/
. Gunakan Akun AWS kredensil Anda, bukan kredensil pengguna IAM, 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 kebijakan IAM di Panduan Pengguna IAM. 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 pengguna IAM (lihat Untuk menyediakan tautan masuk bagi pengguna IAM), masuklah 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
Hasil akhir dari kebijakan grup yang Anda tambahkan adalah memberikan kepada pengguna IAM Alice dan Bob paling tidak izin-izin berikut ini:
-
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 tertentu kepada Alice pengguna IAM
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 Alice pengguna IAM untuk mencantumkan 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 Panduan Pengguna IAM.
-
Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/
. Gunakan Akun AWS kredensil Anda, bukan kredensil pengguna IAM, 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 tab JSON.
-
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 pengguna IAM (lihat Untuk menyediakan tautan masuk bagi pengguna IAM), masuklah 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 kepada Alice pengguna IAM untuk mendapatkan dan menempatkan objek dalam 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 Akun AWS kredensil Anda, bukan kredensil pengguna IAM, 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 pengguna IAM (lihat Untuk menyediakan tautan masuk bagi pengguna IAM), masuklah 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: Tolak secara eksplisit izin Alice pengguna IAM ke folder lain yang ada dalam bucket
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 atau ACL) yang memberikan Alice akses ke folder lain dalam bucket, penolakan secara jelas ini menolak 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 tertentu kepada Bob pengguna IAM
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 tertentu kepada Alice pengguna IAM.
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 Akun AWS kredensil Anda, bukan kredensil pengguna IAM, 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 bucket Anda.companybucket
Untuk petunjuk, lihat Mengedit kebijakan yang dikelola pelanggan di Panduan Pengguna IAM. 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 Konsol IAM
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 kebijakan IAM dalam Panduan Pengguna IAM