Mengontrol akses ke bucket dengan kebijakan pengguna - Amazon Simple Storage Service

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.

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 kunci Development/. Perhatikan jejak garis miring (/) pembatas.

  • Saat Anda mengunggah objek yang diberi nama Projects1.xls dalam folder Development, konsol mengunggah objek dan memberikannya kunci Development/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 folder Development, konsol akan mencantumkan objek yang ada di folder tersebut. Pada contoh berikut, folder Development berisi satu objek.

    Saat konsol mencantumkan folder Development di dalam bucket companybucket, konsol tersebut mengirimkan permintaan ke Amazon S3 yang menyebutkan prefiks dari Development dan pembatas dari / dalam permintaan. Respons konsol terlihat seperti daftar folder di sistem file komputer Anda. Contoh sebelumnya menunjukkan bahwa bucket companybucket memiliki sebuah objek dengan kunci Development/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/. IAMPengguna tidak dapat masuk menggunakan tautan yang sama. IAMPengguna harus menggunakan halaman masuk IAM yang diaktifkan. Sebagai pemilik akun, Anda dapat memberikan tautan ini kepada pengguna Anda.

Untuk informasi selengkapnyaIAM, lihat The AWS Management Console Halaman Masuk di Panduan IAM Pengguna.

Untuk menyediakan tautan masuk bagi pengguna IAM

  1. Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel Navigasi, pilih IAMDasbor.

  3. 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.

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Buat bucket.

    Untuk step-by-step instruksi, lihatBuat bucket.

  3. 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 untuk s3-dg.pdf.

  4. Tambahkan tiga folder yang diberi nama Private, Finance, dan Development 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.

  5. 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 untuk menambahkan dua IAM pengguna, Alice dan Bob, ke Akun AWS. Untuk step-by-step petunjuk, lihat Membuat IAM pengguna di Akun AWS di Panduan Pengguna IAM.

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.

  1. Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console menggunakan salah satu kredensi IAM pengguna.

  2. 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 tindakan s3:ListBucket pada bucket companybucket.

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.

  1. 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.

  2. Buat kebijakan terkelola.

    1. Pada panel navigasi yang ada di sebelah kiri, pilih Kebijakan, lalu pilih Buat Kebijakan.

    2. Pilih JSONtab.

    3. 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 elemen Effect menentukan apakah izin tertentu diperbolehkan atau ditolak.

    4. 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.

  3. Lampirkan kebijakan terkelola AllowGroupToSeeBucketListInTheConsole yang Anda buat ke grup Consultants.

    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.

  4. Uji izin.

    1. Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke konsol menggunakan salah satu kredensi IAM pengguna.

    2. 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 nilai Development/.

  • 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
  1. 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.

  2. Ganti kebijakan terkelola AllowGroupToSeeBucketListInTheConsole yang sudah ada yang terlampir pada grup Consultants dengan kebijakan berikut, yang juga memungkinkan tindakan s3:ListBucket. Ingatlah untuk mengganti companybucket dalam kebijakan 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":["/"] } } } ] }
  3. Uji izin yang diperbarui.

    1. 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/

    2. 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.

  1. 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.

  2. Buat kebijakan selaras untuk memberikan izin kepada pengguna Alice untuk mencantumkan konten folder Development.

    1. Pada panel navigasi di sebelah kiri, pilih Pengguna.

    2. Pilih nama pengguna Alice.

    3. Pada halaman rincian pengguna, pilih tab Izin dan kemudian pilih Tambahkan kebijakan selaras.

    4. Pilih JSONtab.

    5. 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/*"] } } } ] }
    6. Pilih Tinjau Kebijakan. Pada halaman berikutnya, masukkan nama dalam kolom Nama, dan kemudian pilih Buat kebijakan.

  3. Uji perubahan izin Alice:

    1. Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console.

    2. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

    3. 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 permintaan ListObjects ke Amazon S3 dengan prefiks /Development. Karena pengguna diberikan izin untuk melihat daftar objek dengan prefiks Development dan pembatas /, Amazon S3 menampilkan daftar objek dengan key prefiks kunci Development/, 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/*"] }

  1. 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.

  2. Edit kebijakan selaras yang Anda buat pada langkah sebelumnya.

    1. Pada panel navigasi di sebelah kiri, pilih Pengguna.

    2. Pilih nama pengguna Alice.

    3. Pada halaman rincian pengguna, pilih tab Izin dan memperluas bagian Kebijakan Selaras.

    4. Di sebelah nama kebijakan yang Anda buat di langkah sebelumnya, pilih Edit Kebijakan.

    5. 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/*"] } ] }
  3. Uji kebijakan yang diperbarui:

    1. Menggunakan tautan masuk IAM pengguna (lihatUntuk menyediakan tautan masuk bagi pengguna IAM), masuk ke AWS Management Console.

    2. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

    3. 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 parameter prefix.

    Parameter prefix memerlukan akses seperti folder. Jika Anda mengirim permintaan tanpa parameter prefix, Amazon S3 mengembalikan semua kunci objek.

    Jika permintaan menyertakan parameter prefix dengan nilai nol, maka ekspresi dievalusi bernilai benar, dan seluruh Condition dievaluasi bernilai benar. Anda harus mengizinkan string kosong sebagai nilai dari parameter prefix. 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 parameter prefix ditentukan dan bukan Development/*, 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 folder Private, 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.

  1. 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.

  2. Ganti kebijakan terkelola AllowGroupToSeeBucketListInTheConsole yang sudah ada yang terlampir pada grup Consultants dengan kebijakan berikut. Ingatlah untuk mengganti companybucket dalam kebijakan dengan nama ember Anda.

    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 dan hapus pengguna Alice dan Bob. Untuk step-by-step petunjuk, lihat Menghapus IAM pengguna di Panduan IAM Pengguna.

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