Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kebijakan bucket menggunakan kunci kondisi
Anda dapat menggunakan bahasa kebijakan akses untuk menentukan syarat-syarat saat memberikan izin. Anda dapat menggunakan Condition elemen opsional, atau Condition blok, untuk menentukan kondisi kapan kebijakan berlaku.
Untuk kebijakan yang menggunakan kunci syarat Amazon S3 untuk operasi objek dan bucket, lihat contoh berikut. Untuk informasi lebih lanjut tentang kunci syarat ini, lihat Kunci kondisi kebijakan untuk Amazon S3. Untuk daftar lengkap tindakan Amazon S3, kunci kondisi, dan sumber daya yang dapat Anda tentukan dalam kebijakan, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3 di Referensi O torisasi Layanan.
Untuk informasi selengkapnya tentang izin untuk operasi API S3 berdasarkan jenis sumber daya S3, lihatIzin yang diperlukan untuk operasi Amazon S3 API.
Contoh: Kunci kondisi Amazon S3 untuk operasi objek
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi objek. Untuk daftar lengkap tindakan Amazon S3, kunci kondisi, dan sumber daya yang dapat Anda tentukan dalam kebijakan, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3 di Referensi O torisasi Layanan.
Untuk informasi selengkapnya tentang izin untuk operasi API S3 berdasarkan jenis sumber daya S3, lihatIzin yang diperlukan untuk operasi Amazon S3 API.
Beberapa contoh kebijakan menunjukkan bagaimana Anda dapat menggunakan kunci kondisi operasi PUT Objek. Operasi PUT Object memungkinkan daftar kontrol akses (ACL) —header khusus yang dapat Anda gunakan untuk memberikan izin. ACL-based Dengan menggunakan kunci kondisi ini, Anda dapat mengatur kondisi untuk memerlukan izin akses tertentu saat pengguna mengunggah objek. Anda juga dapat memberikan izin berbasis ACL dengan operasi. PutObjectAcl Untuk informasi lebih lanjut, lihat PutObjectAcl dalam Referensi API Layanan Penyimpanan Sederhana Amazon S3 Amazon. Untuk informasi selengkapnya tentang ACL, lihat Gambaran umum daftar kontrol akses (ACL).
Topik
Contoh 2: Mem berikan s3: PutObject izin untuk menyalin objek dengan batasan pada sumber salinan
Contoh 3: Memberikan akses ke versi tertentu dari suatu objek
Contoh 7: Mengecualikan prinsip-prinsip tertentu dari pernyataan Den y
Contoh 10: Memerlukan penulisan bersyarat untuk operasi anotasi
Contoh 11: Membatasi ukuran pagination untuk ListObjectAnnotations
Contoh 1: Pember ian s3: PutObject izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server
Misalkan ketika Akun A memiliki bucket. Administrator akun ingin memberikan Jane, pengguna di Akun A, izin untuk mengunggah objek dengan syarat Jane selalu meminta enkripsi sisi server dengan kunci terkelola Amazon S3 ()SSE-S3. Administrator Akun A dapat menentukan persyaratan ini dengan menggunakan kunci s3:x-amz-server-side-encryption kondisi seperti yang ditunjukkan. Pasangan kunci-nilai di Condition blok berikut menentukan kunci s3:x-amz-server-side-encryption kondisi dan SSE-S3 (AES256) sebagai jenis enkripsi:
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Saat menguji izin ini dengan menggunakan AWS CLI, Anda harus menambahkan enkripsi yang diperlukan dengan menggunakan --server-side-encryption parameter, seperti yang ditunjukkan pada contoh berikut. Untuk menggunakan perintah contoh ini, ganti dengan informasi Anda sendiri. user input
placeholders
aws s3api put-object --bucketamzn-s3-demo-bucket--keyHappyFace.jpg--bodyc:\HappyFace.jpg--server-side-encryption "AES256" --profileAccountAadmin
Contoh 2: Mem berikan s3: PutObject izin untuk menyalin objek dengan batasan pada sumber salinan
Dalam permintaan PUT objek, ketika Anda menentukan objek sumber, permintaan adalah operasi penyalinan (lihat CopyObject). Oleh karena itu, pemilik bucket dapat memberikan izin kepada pengguna untuk menyalin objek dengan pembatasan pada sumber, misalnya:
-
Izinkan menyalin objek hanya dari bucket sumber yang ditentukan (misalnya,
).amzn-s3-demo-source-bucket -
Izinkan menyalin objek dari bucket sumber yang ditentukan dan hanya objek yang awalan nama kuncinya dimulai sebagai awalan tertentu, seperti
(misalnya,public/).amzn-s3-demo-source-bucket/public/* -
Izinkan menyalin hanya objek tertentu dari bucket sumber (misalnya,
).amzn-s3-demo-source-bucket/example.jpg
Kebijakan bucket berikut memberikan s3:PutObject izin kepada pengguna (). Kebijakan ini memungkinkan dia untuk menyalin objek hanya dengan syarat bahwa permintaan menyertakan Daves3:x-amz-copy-source header dan bahwa nilai header menentukan awalan nama / kunci. Untuk menggunakan kebijakan contoh ini, ganti amzn-s3-demo-source-bucket/public/* dengan informasi Anda sendiri.user
input placeholders
Uji kebijakan dengan AWS CLI
Anda dapat menguji izin menggunakan AWS CLI copy-object perintah. Anda menentukan sumber dengan menambahkan parameter --copy-source; prefiks nama kunci harus cocok dengan prefiks yang diperbolehkan dalam kebijakan. Anda perlu memberikan kredensial Dave kepada pengguna dengan menggunakan parameter --profile. Untuk informasi selengkapnya tentang pengaturan AWS CLI, lihat Meng embangkan dengan Amazon S3 menggunakan AWS CLI di Refer ensi API Amazon S3.
aws s3api copy-object --bucket--keyamzn-s3-demo-source-bucketHappyFace.jpg--copy-sourceamzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg--profileAccountADave
Berikan izin untuk menyalin objek tertentu
Kebijakan sebelumnya menggunakan kondisi StringNotLike. Untuk memberikan izin untuk menyalin hanya objek tertentu, Anda harus mengubah kondisi dari StringNotLike ke StringNotEquals dan kemudian menentukan kunci objek yang tepat, seperti yang ditunjukkan dalam contoh berikut. Untuk menggunakan perintah contoh ini, ganti dengan informasi Anda sendiri.user input
placeholders
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg" } }
Contoh 3: Memberikan akses ke versi tertentu dari suatu objek
Misalkan Akun A memiliki bucket yang diaktifkan versi. Bucket tersebut memiliki beberapa versi objek . Administrator Akun A sekarang ingin memberikan HappyFace.jpg izin pengguna untuk mendapatkan hanya versi tertentu dari objek. Administrator akun dapat melakukan ini dengan memberikan Daves3:GetObjectVersion izin kepada pengguna secara kondisional, seperti yang ditunjukkan dalam contoh berikut. Pasangan nilai kunci dalam pemblokiran DaveCondition menentukan kunci kondisi s3:VersionId. Dalam hal ini, untuk mengambil objek dari bucket yang diaktifkan versi yang ditentukan, perlu mengetahui ID versi objek yang tepat. Untuk menggunakan kebijakan contoh ini, ganti Dave dengan informasi Anda sendiri.user input
placeholders
Untuk informasi selengkapnya, lihat GetObject dalam Referensi API Amazon Simple Storage Service.
Uji kebijakan dengan AWS CLI
Anda dapat menguji izin dalam kebijakan ini dengan menggunakan AWS CLI get-object perintah dengan --version-id parameter untuk mengidentifikasi versi objek tertentu yang akan diambil. Perintah mengambil versi objek yang ditentukan dan menyimpannya ke file.OutputFile.jpg
aws s3api get-object --bucket--keyamzn-s3-demo-bucketHappyFace.jpgOutputFile.jpg--version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e--profileAccountADave
Contoh 4: Memberikan izin berdasarkan tag objek
Untuk contoh cara menggunakan kunci kondisi penandaan objek dengan operasi Amazon S3, lihatKebijakan pemberian tag dan kontrol akses.
Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket
Anda dapat menggunakan kunci s3:ResourceAccount kondisi aws:ResourceAccount atau untuk menulis kebijakan titik akhir IAM atau virtual private cloud (VPC) yang membatasi akses pengguna, peran, atau aplikasi ke bucket Amazon S3 yang dimiliki oleh ID tertentu Akun AWS . Anda dapat menggunakan kunci kondisi ini untuk membatasi klien dalam VPC Anda mengakses bucket yang tidak Anda miliki.
Namun, perlu diketahui bahwa beberapa AWS layanan bergantung pada akses ke bucket yang AWS dikelola. Oleh karena itu, menggunakan kunci aws:ResourceAccount atau s3:ResourceAccount dalam kebijakan IAM Anda juga dapat memengaruhi akses ke sumber daya ini. Untuk informasi selengkapnya, lihat sumber daya berikut:
-
Batasi akses ke bucket dalam Akun AWS yang ditentukan dalam Panduan AWS PrivateLink
-
Batasi akses ke bucket yang digunakan Amazon ECR dalam Panduan Amazon ECR
-
Menyediakan akses yang diperlukan ke Manajer AWS Sistem untuk bucket Amazon S3 ter kelola di AWS Systems Manager Panduan
Untuk informasi selengkapnya tentang kunci aws:ResourceAccount dan s3:ResourceAccount kondisi serta contoh yang menunjukkan cara menggunakannya, lihat Batasi akses ke bucket Amazon S3 yang dimiliki oleh orang tertentu Akun AWS
Contoh 6: Memerlukan versi TLS minimum
Anda dapat menggunakan kunci s3:TlsVersion kondisi untuk menulis kebijakan IAM, virtual private cloud endpoint (VPCE), atau bucket yang membatasi akses pengguna atau aplikasi ke bucket Amazon S3 berdasarkan versi TLS yang digunakan oleh klien. Anda dapat menggunakan kunci syarat ini untuk tulis kebijakan yang memerlukan versi TLS minimum.
catatan
Ketika AWS layanan melakukan panggilan ke AWS layanan lain atas nama Anda (panggilan layanan-ke-layanan), konteks otorisasi khusus jaringan tertentu akan disunting, termasuk,,, dan. s3:TlsVersion aws:SecureTransport aws:SourceIp aws:VpcSourceIp Jika kebijakan Anda menggunakan kunci kondisi ini dengan Deny pernyataan, prinsipal AWS layanan mungkin secara tidak sengaja diblokir. Untuk memungkinkan AWS layanan berfungsi dengan baik sambil mempertahankan persyaratan keamanan Anda, kecualikan prinsipal layanan dari Deny pernyataan Anda dengan menambahkan kunci aws:PrincipalIsAWSService kondisi dengan nilaifalse. Contoh:
{ "Effect": "Deny", "Action": "s3:*", "Resource": "*", "Condition": { "Bool": { "aws:SecureTransport": "false", "aws:PrincipalIsAWSService": "false" } } }
Kebijakan ini menolak akses ke operasi S3 ketika HTTPS tidak aws:SecureTransport digunakan (salah), tetapi hanya untuk prinsipal non-AWS layanan. Ini memastikan pembatasan bersyarat Anda berlaku untuk semua prinsipal kecuali prinsipal AWS layanan.
contoh
Contoh kebijakan bucket berikut menolak PutObject permintaan oleh klien yang memiliki versi TLS lebih awal dari 1.2, misalnya, 1.1 atau 1.0. Untuk menggunakan kebijakan contoh ini, ganti dengan informasi Anda sendiri.user input placeholders
contoh
Contoh kebijakan bucket berikut mengizinkan PutObject permintaan oleh klien yang memiliki versi TLS lebih baru dari 1.1, misalnya, 1.2, 1.3, atau yang lebih baru:
Contoh 7: Mengecualikan prinsip-prinsip tertentu dari pernyataan Den y
Kebijakan bucket berikut menolak s3:GetObject akses ke, kecuali untuk kepala sekolah dengan nomor amzn-s3-demo-bucket akun. Untuk menggunakan kebijakan contoh ini, ganti 123456789012 dengan informasi Anda sendiri.user input
placeholders
Contoh 8: Memaksa klien untuk mengunggah objek secara kondisional berdasarkan nama kunci objek atau ETag
Dengan penulisan bersyarat, Anda dapat menambahkan header tambahan ke WRITE permintaan Anda untuk menentukan prasyarat untuk operasi S3 Anda. Header ini menentukan kondisi yang, jika tidak terpenuhi, akan mengakibatkan operasi S3 gagal. Misalnya, Anda dapat mencegah penulisan ulang data yang ada dengan memvalidasi tidak ada objek dengan nama kunci yang sama di bucket Anda selama upload objek. Sebagai alternatif, Anda dapat memeriksa tag entitas objek (ETag) di Amazon S3 sebelum menulis objek.
Untuk contoh kebijakan bucket yang menggunakan kondisi dalam kebijakan bucket untuk menerapkan penulisan bersyarat, lihatMenerapkan penulisan bersyarat di bucket Amazon S3.
Contoh 9: Membatasi akses anotasi dengan awalan nama
Kebijakan bucket berikut memberikan izin s3user pengguna untuk membuat, mengambil, dan menghapus anotasi yang memiliki nama dimulai denganml-output.. Ini memungkinkan Anda untuk membatasi akses anotasi dengan awalan nama anotasi.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/s3user" }, "Action": [ "s3:PutObjectAnnotation", "s3:GetObjectAnnotation", "s3:DeleteObjectAnnotation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringLike": { "s3:annotation-prefix": "ml-output.*" } } } ] }
Contoh 10: Memerlukan penulisan bersyarat untuk operasi anotasi
Kebijakan bucket berikut menolak PutObjectAnnotation dan DeleteObjectAnnotation meminta kecuali pemanggil menyertakan header ber x-amz-object-if-match syarat. Ini memberlakukan kontrol konkurensi optimis untuk semua penulisan anotasi pada bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireConditionalWritesForAnnotations", "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutObjectAnnotation", "s3:DeleteObjectAnnotation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "Null": { "s3:x-amz-object-if-match": "true" } } } ] }
Contoh 11: Membatasi ukuran pagination untuk ListObjectAnnotations
Kebijakan bucket berikut membatasi max-annotation-results parameter hingga 100 atau kurang untuk semua ListObjectAnnotations permintaan. Ini mencegah penelepon meminta set hasil yang terlalu besar.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitAnnotationListPageSize", "Effect": "Deny", "Principal": "*", "Action": "s3:ListObjectAnnotation", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "NumericGreaterThan": { "s3:max-annotation-results": "100" } } } ] }
Contoh: Kunci kondisi Amazon S3 untuk operasi bucket
Contoh kebijakan berikut menunjukkan bagaimana Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi bucket.
Topik
Contoh 1: Mem berikan s3: GetObject izin dengan kondisi pada alamat IP
Anda dapat memberikan izin kepada pengguna yang diautentikasi untuk menggunakan s3:GetObject tindakan jika permintaan berasal dari rentang alamat IP tertentu (misalnya,), kecuali alamat IP adalah alamat yang ingin Anda kecualikan (misalnya,192.0.2.*). Di 192.0.2.188Condition blok, IpAddress dan NotIpAddress adalah kondisi, dan setiap kondisi disediakan pasangan kunci-nilai untuk evaluasi. Kedua pasangan kunci-nilai dalam contoh ini menggunakan kunci aws:SourceIp AWS lebar. Untuk menggunakan kebijakan contoh ini, ganti dengan informasi Anda sendiri.user input placeholders
catatan
Nilai IPAddress dan NotIpAddress kunci yang ditentukan dalam Condition blok menggunakan notasi CIDR, seperti yang dijelaskan dalam RFC 4632. Untuk informasi selengkapnya, lihat http://www.rfc-editor.org/rfc/rfc4632.txt
Anda juga dapat menggunakan kunci AWS kondisi luas lainnya di kebijakan Amazon S3. Misalnya, Anda dapat menentukan kunci kondisi aws:SourceVpce dan aws:SourceVpc dalam kebijakan bucket untuk titik akhir VPC. Untuk contoh spesifik, lihatMegendalikan akses dari titik akhir VPC dengan kebijakan bucket.
catatan
Untuk beberapa kunci kondisi AWS global, hanya jenis sumber daya tertentu yang didukung. Oleh karena itu, periksa apakah Amazon S3 mendukung kunci kondisi global dan jenis sumber daya yang ingin Anda gunakan, atau apakah Anda perlu menggunakan kunci kondisi khusus Amazon S3 sebagai gantinya. Untuk daftar lengkap jenis sumber daya yang didukung dan kunci kondisi untuk Amazon S3, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3 di Referensi Otorisasi Layanan.
Untuk informasi selengkapnya tentang izin untuk operasi API S3 berdasarkan jenis sumber daya S3, lihatIzin yang diperlukan untuk operasi Amazon S3 API.
Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu
Anda dapat menggunakan kunci s3:prefix kondisi untuk membatasi respons operasi ListObjectsV2 API ke nama kunci dengan awalan tertentu. Jika Anda adalah pemilik bucket, Anda dapat menggunakan kunci kondisi ini untuk membatasi pengguna untuk mencantumkan konten awalan tertentu di bucket. K s3:prefix unci kondisi berguna jika objek dalam bucket diatur oleh awalan nama kunci.
Konsol Amazon S3 menggunakan prefiks nama kunci untuk menampilkan konsep folder. Hanya konsol tersebut yang mendukung konsep folder; Amazon S3 API hanya mendukung bucket dan objek. Misalnya, jika Anda memiliki dua objek dengan nama kunci danpublic/object1.jpg, konsol menunjukkan objek di bawah public/object2.jpg folder. Pada Amazon S3 API, objek-objek ini adalah objek dengan prefiks, bukan objek yang ada dalam folder. Untuk informasi lebih lanjut tentang bagaimana menggunakan prefiks dan pembatas untuk memfilter izin akses, lihat Mengontrol akses ke bucket dengan kebijakan pengguna. public
Dalam skenario berikut, pemilik bucket dan akun induk yang dimiliki pengguna adalah sama. Jadi pemilik bucket dapat menggunakan kebijakan bucket atau kebijakan pengguna untuk memberikan akses. Untuk informasi selengkapnya tentang kunci kondisi lain yang dapat Anda gunakan dengan operasi ListObjectsV2 API, lihat ListObjectsV2.
catatan
Jika bucket diaktifkan versi, untuk mencantumkan objek dalam bucket, Anda harus memberikan s3:ListBucketVersions izin dalam kebijakan berikut, bukan izin. s3:ListBucket Iz s3:ListBucketVersions in juga mendukung kunci s3:prefix kondisi.
Kebijakan pengguna
Kebijakan pengguna berikut memberikan s3:ListBucket izin (lihat ListObjectsV2) dengan Condition pernyataan yang mengharuskan pengguna untuk menentukan awalan dalam permintaan dengan nilai. Untuk menggunakan kebijakan contoh ini, ganti projects dengan informasi Anda sendiri.user input placeholders
Per Condition nyataan ini membatasi pengguna untuk mencantumkan hanya kunci objek yang memiliki awalan. Per projectsDeny nyataan eksplisit yang ditambahkan menolak pengguna untuk mencantumkan kunci dengan awalan lain, apa pun izin lain yang mungkin dimiliki pengguna. Misalnya, ada kemungkinan bahwa pengguna bisa mendapatkan izin untuk mencantumkan kunci objek tanpa batasan apa pun, baik melalui pembaruan kebijakan pengguna sebelumnya atau melalui kebijakan bucket. Karena Deny pernyataan eksplisit selalu menges Allow ampingkan pernyataan, jika pengguna mencoba mencantumkan kunci selain yang memiliki awalan, permintaan ditolak. projects
Kebijakan bucket
Jika Anda menambahkan Principal elemen ke kebijakan pengguna di atas, mengidentifikasi pengguna, Anda sekarang memiliki kebijakan bucket, seperti yang ditunjukkan dalam contoh berikut. Untuk menggunakan kebijakan contoh ini, ganti dengan informasi Anda sendiri.user input
placeholders
Uji kebijakan dengan AWS CLI
Anda dapat menguji kebijakan menggunakan list-object AWS CLI perintah berikut. Dalam perintah ini, Anda memberikan kredensial pengguna dengan menggunakan parameter --profile. Untuk informasi selengkapnya tentang menyiapkan dan menggunakan AWS CLI, lihat Meng embangkan dengan Amazon S3 menggunakan AWS CLI di Refer ensi API Amazon S3.
aws s3api list-objects --bucket--prefixamzn-s3-demo-bucketprojects--profileAccountA
Contoh 3: Mengatur jumlah kunci maksimum
Anda dapat menggunakan kunci s3:max-keys kondisi untuk mengatur jumlah kunci maksimum yang dapat dikembalikan oleh pemohon dalam ListObjectVersions permintaan ListObjectsV2 atau. Secara default, operasi API ini mengembalikan hingga 1.000 kunci. Untuk daftar operator kondisi numerik yang dapat Anda gunakan dengan s3:max-keys dan contoh yang menyertainya, lihat Operator kondisi Numerik dalam Panduan Pengguna IAM.