Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kebijakan bucket menggunakan tombol kondisi
Anda dapat menggunakan bahasa kebijakan akses untuk menentukan syarat-syarat saat memberikan izin. Anda dapat menggunakan Condition
elemen opsional, atau Condition
memblokir, untuk menentukan kondisi kapan kebijakan diberlakukan.
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 Otorisasi Layanan.
Untuk informasi selengkapnya tentang izin API operasi S3 menurut jenis sumber daya S3, lihat. Izin yang diperlukan untuk operasi Amazon API S3
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 Otorisasi Layanan.
Untuk informasi selengkapnya tentang izin API operasi S3 menurut jenis sumber daya S3, lihat. Izin yang diperlukan untuk operasi Amazon API S3
Beberapa contoh kebijakan menunjukkan bagaimana Anda dapat menggunakan kunci kondisi dengan operasi PUTObject. PUTOperasi objek memungkinkan daftar kontrol akses (ACL) —header spesifik yang dapat Anda gunakan untuk memberikan izin ACL berbasis. Dengan menggunakan tombol kondisi ini, Anda dapat mengatur kondisi untuk memerlukan izin akses tertentu saat pengguna mengunggah objek. Anda juga dapat memberikan izin ACL berbasis —dengan operasi. PutObjectAcl Untuk informasi selengkapnya, lihat PutObjectAcldi Referensi Layanan API Penyimpanan Sederhana Amazon S3 Amazon. Untuk informasi lebih lanjut tentangACLs, lihatDaftar kontrol akses (ACL) ikhtisar.
Topik
- Contoh 1: Memberikan s3:PutObject izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server
- Contoh 2: Memberikan s3:PutObject izin untuk menyalin objek dengan batasan pada sumber salinan
- Contoh 3: Memberikan akses ke versi tertentu dari suatu objek
- Contoh 4: Memberikan izin berdasarkan tag objek
- Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket
- Contoh 6: Membutuhkan TLS versi minimum
- Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan Deny
Contoh 1: Memberikan s3:PutObject
izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server
Misalkan ketika Akun A memiliki bucket. Administrator akun ingin memberi Jane, pengguna di Akun A, izin untuk mengunggah objek dengan syarat Jane selalu meminta enkripsi sisi server dengan kunci terkelola Amazon S3 (-S3). SSE 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 contoh perintah ini, ganti
dengan informasi Anda sendiri. user input
placeholders
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyHappyFace.jpg
--bodyc:\HappyFace.jpg
--server-side-encryption "AES256
" --profileAccountAadmin
Contoh 2: Memberikan s3:PutObject
izin untuk menyalin objek dengan batasan pada sumber salinan
Dalam permintaan PUT
objek, ketika Anda menentukan objek sumber, permintaan adalah operasi salinan (lihat CopyObject). Dengan demikian, pemilik bucket dapat memberikan izin kepada pengguna untuk menyalin objek dengan batasan pada sumbernya, 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 dengan awalan tertentu, seperti
(misalnya,publik/
).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 permintaan menyertakan Dave
s3: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
{ "Version": "2012-10-17", "Statement": [ { "Sid": "cross-account permission to user in your own account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-source-bucket
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
amzn-s3-demo-source-bucket
/public/*
" } } } ] }
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 Mengembangkan dengan Amazon S3 menggunakan Referensi Amazon API S3 AWS CLI di dalam.
aws s3api copy-object --bucket
--key
amzn-s3-demo-source-bucket
HappyFace.jpg
--copy-source
amzn-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 pada contoh berikut. Untuk menggunakan contoh perintah 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 berkemampuan versi. Bucket tersebut memiliki beberapa versi objek
. Administrator Akun A sekarang ingin memberikan HappyFace.jpg
izin kepada pengguna untuk mendapatkan hanya versi objek tertentu. Administrator akun dapat melakukannya dengan memberikan Dave
s3:GetObjectVersion
izin kepada pengguna
secara kondisional, seperti yang ditunjukkan pada contoh berikut. Pasangan nilai kunci dalam pemblokiran Dave
Condition
menentukan kunci kondisi s3:VersionId
. Dalam hal ini, untuk mengambil objek dari bucket berkemampuan versi tertentu,
perlu mengetahui ID versi objek yang tepat. Untuk menggunakan kebijakan contoh ini, ganti Dave
dengan informasi Anda sendiri.user input
placeholders
Untuk informasi selengkapnya, silakan lihat GetObjectdi APIReferensi Layanan Penyimpanan Sederhana Amazon.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
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
--key
amzn-s3-demo-bucket
HappyFace.jpg
OutputFile.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, lihat. Kebijakan pemberian tag dan kontrol akses
Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket
Anda dapat menggunakan kunci aws:ResourceAccount
atau s3:ResourceAccount
kondisi untuk menulis IAM atau kebijakan titik akhir cloud pribadi virtual (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 di dalam Anda VPC mengakses bucket yang tidak Anda miliki.
Namun, ketahuilah bahwa beberapa AWS layanan bergantung pada akses ke bucket yang AWS dikelola. Oleh karena itu, menggunakan aws:ResourceAccount
atau s3:ResourceAccount
kunci dalam IAM kebijakan 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 ECR digunakan Amazon di Panduan Amazon ECR
-
Menyediakan akses yang diperlukan ke Systems Manager untuk bucket Amazon S3 AWS terkelola dalam Panduan AWS Systems Manager
Untuk informasi selengkapnya tentang kunci s3:ResourceAccount
kondisi aws:ResourceAccount
dan contoh yang menunjukkan cara menggunakannya, lihat Membatasi akses ke bucket Amazon S3 yang dimiliki oleh spesifik Akun AWS di Blog
Contoh 6: Membutuhkan TLS versi minimum
Anda dapat menggunakan kunci s3:TlsVersion
kondisi untuk menulisIAM, virtual private cloud endpoint (VPCE), atau kebijakan bucket yang membatasi akses pengguna atau aplikasi ke bucket Amazon S3 berdasarkan TLS versi yang digunakan oleh klien. Anda dapat menggunakan kunci kondisi ini untuk menulis kebijakan yang memerlukan TLS versi minimum.
Contoh kebijakan bucket berikut menolak PutObject
permintaan klien yang memiliki TLS versi lebih awal dari 1.2, misalnya 1.1 atau 1.0. Untuk menggunakan kebijakan contoh ini, ganti
dengan informasi Anda sendiri.user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }
amzn-s3-demo-bucket1
Contoh kebijakan bucket berikut memungkinkan PutObject
permintaan oleh klien yang memiliki TLS versi lebih lambat dari 1.1, misalnya, 1.2, 1.3, atau yang lebih baru:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }
amzn-s3-demo-bucket1
Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan Deny
Kebijakan bucket berikut menolak s3:GetObject
akses ke
, kecuali ke kepala sekolah dengan nomor rekening amzn-s3-demo-bucket
. Untuk menggunakan contoh kebijakan ini, ganti 123456789012
dengan informasi Anda sendiri.user input
placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "" ] } } } ] }
123456789012
Contoh: Kunci kondisi Amazon S3 untuk operasi bucket
Contoh kebijakan berikut menunjukkan cara Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi bucket.
Topik
Contoh 1: Memberikan s3:GetObject
izin dengan syarat 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 salah satu yang ingin Anda kecualikan (misalnya,192.0.2.*
). Di 192.0.2.188
Condition
blok, IpAddress
dan NotIpAddress
merupakan 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 CIDR notasi, seperti yang dijelaskan dalam RFC 4632. Untuk informasi lebih lanjut, lihat http://www.rfc-editor. org/rfc/rfc
{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "
amzn-s3-demo-bucket
192.0.2.0/24
" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32
" } } } ] }
Anda juga dapat menggunakan kunci kondisi AWS-wide lainnya dalam kebijakan Amazon S3. Misalnya, Anda dapat menentukan kunci aws:SourceVpce
dan aws:SourceVpc
kondisi dalam kebijakan bucket untuk VPC titik akhir. Untuk contoh spesifik, lihatMengontrol akses dari VPC titik akhir 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. Untuk daftar lengkap jenis sumber daya dan kunci kondisi yang didukung untuk Amazon S3, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon S3 di Referensi Otorisasi Layanan.
Untuk informasi selengkapnya tentang izin API operasi S3 menurut jenis sumber daya S3, lihat. Izin yang diperlukan untuk operasi Amazon API S3
Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu
Anda dapat menggunakan tombol s3:prefix
kondisi untuk membatasi respons ListObjectsV2APIoperasi ke nama kunci dengan awalan tertentu. Jika Anda adalah pemilik bucket, Anda dapat menggunakan kunci kondisi ini untuk membatasi pengguna agar mencantumkan konten awalan tertentu di bucket. Kunci s3:prefix
kondisi berguna jika objek dalam bucket diatur oleh awalan nama kunci.
Konsol Amazon S3 menggunakan prefiks nama kunci untuk menampilkan konsep folder. Hanya konsol yang mendukung konsep folder; Amazon S3 hanya API mendukung ember dan objek. Misalnya, jika Anda memiliki dua objek dengan nama kunci
and public/object1.jpg
, konsol menunjukkan objek di bawah public/object2.jpg
folder. Di Amazon S3API, ini adalah objek dengan awalan, bukan objek dalam folder. Untuk informasi lebih lanjut tentang bagaimana menggunakan prefiks dan pembatas untuk memfilter izin akses, lihat Mengontrol akses ke bucket dengan kebijakan pengguna. publik
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 ListObjectsV2
API operasi, lihat ListObjectsV2.
catatan
Jika bucket diaktifkan versi, untuk mencantumkan objek di bucket, Anda harus memberikan s3:ListBucketVersions
izin dalam kebijakan berikut, bukan izin. s3:ListBucket
s3:ListBucketVersions
Izin 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
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
Condition
Pernyataan membatasi pengguna untuk mencantumkan hanya kunci objek yang memiliki
awalan. projects
Deny
Pernyataan eksplisit yang ditambahkan menyangkal pengguna dari mencantumkan kunci dengan awalan lain, apa pun izin lain yang mungkin dimiliki pengguna. Misalnya, pengguna dapat memperoleh izin untuk membuat daftar kunci objek tanpa batasan apa pun, baik melalui pembaruan pada kebijakan pengguna sebelumnya atau melalui kebijakan bucket. Karena Deny
pernyataan eksplisit selalu mengesampingkan Allow
pernyataan, jika pengguna mencoba membuat daftar 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 pada contoh berikut. Untuk menggunakan kebijakan contoh ini, ganti
dengan informasi Anda sendiri.user input
placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
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 pengaturan dan penggunaan AWS CLI, lihat Mengembangkan dengan Amazon S3 menggunakan Referensi Amazon API S3 AWS CLI di dalam.
aws s3api list-objects --bucket
--prefix
amzn-s3-demo-bucket
projects
--profileAccountA
Contoh 3: Mengatur jumlah kunci maksimum
Anda dapat menggunakan tombol s3:max-keys
kondisi untuk mengatur jumlah maksimum kunci yang dapat dikembalikan oleh pemohon ListObjectsV2 atau ListObjectVersionspermintaan. Secara default, API operasi 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 di Panduan Pengguna. IAM