Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kebijakan bucket Amazon S3
Dengan kebijakan bucket Amazon S3, Anda dapat mengamankan akses ke objek di bucket, sehingga hanya pengguna dengan izin yang sesuai yang dapat mengaksesnya. Anda bahkan dapat mencegah pengguna yang diautentikasi tanpa izin yang sesuai untuk mengakses sumber daya Amazon S3 Anda.
Bagian ini menyajikan contoh kasus penggunaan umum untuk kebijakan bucket. Kebijakan sampel ini digunakan
sebagai nilai sumber daya. Untuk menguji kebijakan ini, ganti amzn-s3-demo-bucket
dengan informasi Anda sendiri (seperti nama bucket Anda). user input placeholders
Untuk memberikan atau menolak izin ke sekumpulan objek, Anda dapat menggunakan karakter wildcard (*
) di Amazon Resource Names (ARNs) dan nilai lainnya. Misalnya, Anda dapat mengontrol akses ke grup objek yang dimulai dengan awalan umum atau diakhiri dengan ekstensi tertentu, seperti.html
.
Untuk informasi selengkapnya tentang AWS Identity and Access Management (IAM) bahasa kebijakan, lihatKebijakan dan izin di Amazon S3.
Untuk informasi selengkapnya tentang izin API operasi S3 menurut jenis sumber daya S3, lihat. Izin yang diperlukan untuk operasi Amazon API S3
catatan
Saat menguji izin dengan menggunakan konsol Amazon S3, Anda harus memberikan izin tambahan yang diperlukan konsol—s3:ListAllMyBuckets
, s3:GetBucketLocation
, dan. s3:ListBucket
. Untuk panduan contoh yang memberikan izin kepada pengguna dan menguji izin tersebut dengan menggunakan konsol, lihat. Mengontrol akses ke bucket dengan kebijakan pengguna
Sumber daya tambahan untuk membuat kebijakan bucket meliputi:
-
Untuk daftar tindakan IAM kebijakan, sumber daya, dan kunci kondisi yang dapat Anda gunakan saat membuat kebijakan bucket, lihat Kunci tindakan, sumber daya, dan 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
-
Untuk panduan tentang membuat kebijakan S3 Anda, lihat Menambahkan kebijakan bucket dengan menggunakan konsol Amazon S3.
-
Untuk memecahkan masalah kesalahan dengan kebijakan, lihat Memecahkan masalah akses ditolak (403 Forbidden) kesalahan di Amazon S3.
Topik
- Memberikan izin baca-saja kepada pengguna anonim publik
- Membutuhkan enkripsi
- Mengelola ember menggunakan kaleng ACLs
- Mengelola akses objek dengan penandaan objek
- Mengelola akses objek dengan menggunakan kunci kondisi global
- Mengelola akses berdasarkan HTTP atau HTTPS permintaan
- Mengelola akses pengguna ke folder tertentu
- Mengelola akses log akses
- Mengelola akses ke Amazon CloudFront OAI
- Mengelola akses untuk Lensa Penyimpanan Amazon S3
- Mengelola izin untuk laporan Inventaris S3, S3 analytics, dan Inventaris S3
- Membutuhkan MFA
- Mencegah pengguna menghapus objek
Memberikan izin baca-saja kepada pengguna anonim publik
Anda dapat menggunakan setelan kebijakan untuk memberikan akses ke pengguna anonim publik, yang berguna jika Anda mengonfigurasi bucket sebagai situs web statis. Memberikan akses ke pengguna anonim publik mengharuskan Anda menonaktifkan pengaturan Blokir Akses Publik untuk bucket Anda. Untuk informasi selengkapnya tentang cara melakukannya, dan kebijakan yang diperlukan, lihatMengatur izin untuk akses situs web. Untuk mempelajari cara menyiapkan kebijakan yang lebih ketat untuk tujuan yang sama, lihat Bagaimana cara memberikan akses baca publik ke beberapa objek di bucket Amazon S3 saya
Secara default, Amazon S3 memblokir akses publik ke akun dan bucket Anda. Jika Anda ingin menggunakan bucket untuk menghosting situs web statis, Anda dapat menggunakan langkah-langkah ini untuk mengedit pengaturan blokir akses publik Anda.
Awas
Sebelum Anda menyelesaikan langkah-langkah ini, tinjau Melakukan blok akses publik ke penyimpanan Amazon S3 Anda untuk memastikan bahwa Anda memahami dan menerima risiko yang terkait dengan mengizinkan akses publik. Saat Anda mematikan pengaturan blokir akses publik untuk membuat bucket Anda menjadi publik, siapa pun di internet dapat mengakses bucket Anda. Kami sarankan agar Anda memblokir semua akses publik ke bucket Anda.
-
Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pilih nama bucket yang telah Anda konfigurasikan sebagai situs web statis.
-
Pilih Izin.
-
Di bagian bawah Blokir akses publik (pengaturan bucket), pilih Edit.
-
Kosongkan Blokir semua akses publik, lalu pilih Simpan perubahan.
Amazon S3 mematikan pengaturan Blokir Akses Publik untuk bucket Anda. Untuk membuat situs web statis publik, Anda mungkin juga harus mengedit pengaturan Blokir Akses Publik untuk akun Anda sebelum menambahkan kebijakan bucket. Jika pengaturan Blokir Akses Publik untuk akun Anda saat ini diaktifkan, Anda akan melihat catatan di bawah Blokir akses publik (pengaturan bucket).
Membutuhkan enkripsi
Anda dapat memerlukan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) keys (SSE-KMS), seperti yang ditunjukkan pada contoh berikut.
Memerlukan SSE - KMS untuk semua benda yang ditulis ke ember
Contoh kebijakan berikut mengharuskan setiap objek yang ditulis ke bucket dienkripsi dengan enkripsi sisi server menggunakan AWS Key Management Service (AWS KMS) keys (-). SSE KMS Jika objek tidak dienkripsi dengan SSE -KMS, permintaan ditolak.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMS
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }
amzn-s3-demo-bucket
Memerlukan SSE - KMS dengan spesifik AWS KMS key untuk semua objek yang ditulis ke ember
Contoh kebijakan berikut menyangkal objek apa pun agar tidak ditulis ke bucket jika tidak dienkripsi SSE - KMS dengan menggunakan ID kunci tertentuKMS. Bahkan jika objek dienkripsi dengan SSE - KMS dengan menggunakan header per permintaan atau enkripsi default bucket, objek tidak dapat ditulis ke bucket jika belum dienkripsi dengan kunci yang ditentukan. KMS Pastikan untuk mengganti KMS kunci ARN yang digunakan dalam contoh ini dengan KMS kunci Anda sendiriARN.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMSWithSpecificKey
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:
amzn-s3-demo-bucket
us-east-2
:111122223333
:key/01234567-89ab-cdef-0123-456789abcdef
" } } }] }
Mengelola ember menggunakan kaleng ACLs
Memberikan izin ke beberapa akun untuk mengunggah objek atau mengatur objek ACLs untuk akses publik
Contoh kebijakan berikut memberikan s3:PutObjectAcl
izin s3:PutObject
dan ke beberapa. Akun AWS Selain itu, kebijakan contoh mengharuskan setiap permintaan untuk operasi ini harus menyertakan daftar kontrol akses yang public-read dikalengkan (ACL). Untuk informasi selengkapnya, silakan lihat Tindakan kebijakan untuk Amazon S3 dan Kunci kondisi kebijakan untuk Amazon S3.
Awas
public-read
Kalengan ACL memungkinkan siapa pun di dunia untuk melihat benda-benda di ember Anda. Berhati-hatilah saat memberikan akses anonim ke bucket Amazon S3 Anda atau menonaktifkan pengaturan blokir akses publik. Saat Anda memberikan akses anonim, siapa pun di dunia dapat mengakses bucket Anda. Kami menyarankan Anda untuk tidak pernah memberikan akses anonim ke bucket Amazon S3 Anda kecuali jika Anda secara kustom memerlukannya, seperti hosting situs web statis. Jika Anda ingin mengaktifkan blokir pengaturan akses publik untuk hosting situs web statis, lihat Tutorial: Mengonfigurasi situs web statis di Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPublicReadCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root", "arn:aws:iam::444455556666
:root" ] }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }
amzn-s3-demo-bucket
Berikan izin lintas akun untuk unggah objek sekaligus memastikan bahwa pemilik bucket memiliki kendali penuh
Contoh berikut menunjukkan cara mengizinkan orang lain Akun AWS mengunggah objek ke bucket sambil memastikan bahwa Anda memiliki kendali penuh atas objek yang diunggah. Kebijakan ini memberikan yang spesifik Akun AWS (
) kemampuan untuk mengunggah objek hanya jika akun itu menyertakan 111122223333
bucket-owner-full-control
kalengan saat ACL diunggah. StringEquals
Kondisi dalam kebijakan menentukan kunci s3:x-amz-acl
kondisi untuk menyatakan ACL persyaratan kalengan. Untuk informasi selengkapnya, lihat Kunci kondisi kebijakan untuk Amazon S3.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"
111122223333
"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }
amzn-s3-demo-bucket
Mengelola akses objek dengan penandaan objek
Mengizinkan pengguna untuk membaca objek yang memiliki kunci dan nilai tag spesifik
Kebijakan izin berikut membatasi pengguna agar hanya membaca objek yang memiliki kunci dan nilai tag environment: production
. Kebijakan ini menggunakan kunci kondisi s3:ExistingObjectTag
untuk menentukan kunci tag dan nilai.
{ "Version":"2012-10-17", "Statement":[ { "Principal":{ "AWS":"arn:aws:iam::
111122223333
:role/JohnDoe
" }, "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Resource":"arn:aws:s3:::amzn-s3-demo-bucket
/*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/environment":"production" } } } ] }
Batasi kunci tag objek mana yang dapat ditambahkan pengguna
Kebijakan contoh berikut memberikan izin pengguna untuk melakukan s3:PutObjectTagging
tindakan, yang memungkinkan pengguna menambahkan tag ke objek yang sudah ada. Kondisi ini menggunakan kunci kondisi s3:RequestObjectTagKeys
untuk menentukan kunci tag yang diizinkan, seperti Owner
atau CreationDate
. Untuk informasi selengkapnya, lihat Membuat kondisi yang menguji beberapa nilai kunci dalam Panduan IAM Pengguna.
Kebijakan ini memastikan agar setiap kunci tag yang ditentukan dalam permintaan adalah kunci tag yang diotorisasi. Kualifikasi ForAnyValue
dalam kondisi tersebut memastikan bahwa setidaknya ada satu kunci yang ditentukan dalam permintaan.
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:role/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
amzn-s3-demo-bucket
Memerlukan kunci dan nilai tag spesifik saat mengizinkan pengguna untuk menambahkan tag objek
Kebijakan contoh berikut memberikan izin pengguna untuk melakukan s3:PutObjectTagging
tindakan, yang memungkinkan pengguna menambahkan tag ke objek yang sudah ada. Kondisi ini mengharuskan pengguna untuk menyertakan kunci tag tertentu (seperti
) dengan set nilai ke Project
.X
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/
amzn-s3-demo-bucket
Project
": "X
" } } } ] }
Mengizinkan pengguna untuk hanya menambahkan objek dengan kunci dan nilai tag objek tertentu
Kebijakan contoh berikut memberikan izin pengguna untuk melakukan s3:PutObject
tindakan, sehingga pengguna dapat menambahkan tag ke objek yang sudah ada. Namun, Condition
pernyataan membatasi kunci tag dan nilai yang diizinkan pada objek yang diunggah. Dalam contoh ini, pengguna hanya dapat menambahkan objek yang memiliki kunci tag tertentu (
) dengan nilai yang disetel Department
ke bucket.Finance
{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/
amzn-s3-demo-bucket
Department
": "Finance
" } } }] }
Mengelola akses objek dengan menggunakan kunci kondisi global
Kunci kondisi global adalah kunci konteks kondisi dengan aws
awalan. Layanan AWS dapat mendukung kunci kondisi global atau kunci khusus layanan yang menyertakan awalan layanan. Anda dapat menggunakan Condition
elemen JSON kebijakan untuk membandingkan kunci dalam permintaan dengan nilai kunci yang Anda tentukan dalam kebijakan Anda.
Batasi akses hanya ke pengiriman log akses server Amazon S3
Dalam contoh kebijakan bucket berikut, aws:SourceArnkunci kondisi global digunakan untuk membandingkan Amazon Resource Name (ARN) sumber daya, membuat service-to-service permintaan dengan ARN yang ditentukan dalam kebijakan. Kunci kondisi aws:SourceArn
global digunakan untuk mencegah layanan Amazon S3 digunakan sebagai wakil yang bingung selama transaksi antar layanan. Hanya layanan Amazon S3 yang diizinkan untuk menambahkan objek ke bucket Amazon S3.
Contoh kebijakan bucket ini hanya memberikan s3:PutObject
izin kepada pengguna utama layanan logging (logging.s3.amazonaws.com
).
catatan
Sebuah NotPrincipalelemen tidak dapat digunakan dengan Layanan AWS
prinsipal dalam kebijakan berbasis sumber daya Amazon S3, seperti kebijakan bucket. Sebagai gantinya, sebaiknya gunakan kunci aws:PrincipalServiceName
kondisi, seperti yang ditunjukkan dalam kebijakan berikut.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowPutObjectS3ServerAccessLogsPolicy
", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringEquals": { "aws:SourceAccount": "
amzn-s3-demo-bucket
-logs111111111111
" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
" } } }, { "Sid": "RestrictToS3ServerAccessLogs
", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }
amzn-s3-demo-bucket
-logs
Izinkan akses hanya ke organisasi Anda
Jika Anda ingin meminta semua IAMkepala sekolah yang mengakses sumber daya berasal dari organisasi Anda (termasuk akun AWS Organizations manajemen), Anda dapat menggunakan kunci kondisi global. Akun AWS aws:PrincipalOrgID
Untuk memberikan atau membatasi jenis akses ini, tentukan aws:PrincipalOrgID
kondisi dan tetapkan nilainya ke ID organisasi Anda dalam kebijakan bucket. ID organisasi digunakan untuk mengontrol akses ke bucket. Saat Anda menggunakan aws:PrincipalOrgID
kondisi ini, izin dari kebijakan bucket juga diterapkan ke semua akun baru yang ditambahkan ke organisasi.
Berikut adalah contoh kebijakan bucket berbasis sumber daya yang dapat Anda gunakan untuk memberikan akses langsung kepada IAM prinsipal tertentu di organisasi Anda ke bucket Anda. Dengan menambahkan kunci kondisi aws:PrincipalOrgID
global ke kebijakan bucket Anda, pengguna utama sekarang harus berada di organisasi Anda untuk mendapatkan akses ke sumber daya. Bahkan jika Anda secara tidak sengaja menentukan akun yang salah saat memberikan akses, aws:PrincipalOrgID kunci kondisi global bertindak sebagai perlindungan tambahan. Ketika kunci global ini digunakan dalam kebijakan, ini mencegah semua pengguna utama dari luar organisasi tertentu mengakses bucket S3. Hanya pengguna utama dari akun di organisasi yang terdaftar yang dapat memperoleh akses ke sumber daya.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGetObject", "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["
amzn-s3-demo-bucket
o-aa111bb222
"] } } }] }
Mengelola akses berdasarkan HTTP atau HTTPS permintaan
Batasi akses hanya ke permintaan HTTPS
Jika Anda ingin mencegah penyerang potensial memanipulasi lalu lintas jaringan, Anda dapat menggunakan HTTPS (TLS) untuk hanya mengizinkan koneksi terenkripsi sambil membatasi HTTP permintaan mengakses bucket Anda. Untuk menentukan apakah permintaan tersebut HTTP atauHTTPS, gunakan aws:SecureTransportkunci kondisi global dalam kebijakan bucket S3 Anda. Kunci aws:SecureTransport
kondisi memeriksa apakah permintaan dikirim dengan menggunakanHTTP.
Jika permintaan kembalitrue
, maka permintaan dikirim melaluiHTTPS. Jika permintaan kembalifalse
, maka permintaan dikirim melaluiHTTP. Anda kemudian dapat mengizinkan atau menolak akses ke bucket Anda berdasarkan skema permintaan yang diinginkan.
Dalam contoh berikut, kebijakan bucket secara eksplisit menolak HTTP permintaan.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket
amzn-s3-demo-bucket
/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }
Batasi akses ke perujuk tertentu HTTP
Misalkan Anda memiliki situs web dengan nama domain
atau www.example.com
dengan tautan ke foto dan video yang disimpan di ember Anda bernamacontoh.com
. Secara default, semua sumber daya Amazon S3 bersifat pribadi, jadi hanya Akun AWS yang membuat sumber daya yang dapat mengaksesnya. amzn-s3-demo-bucket
Untuk mengizinkan akses baca ke objek ini dari situs web Anda, Anda dapat menambahkan kebijakan bucket yang mengizinkan s3:GetObject
izin dengan syarat GET
permintaan harus berasal dari halaman web tertentu. Kebijakan berikut membatasi permintaan dengan menggunakan StringLike
kondisi dengan kunci aws:Referer
kondisi.
{ "Version":"2012-10-17", "Id":"HTTP referer policy example", "Statement":[ { "Sid":"Allow only GET requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::
amzn-s3-demo-bucket
/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*
","http://example.com/*
"]} } } ] }
Pastikan browser yang Anda gunakan menyertakan HTTP referer
header dalam permintaan.
Awas
Sebaiknya Anda berhati-hati saat menggunakan tombol aws:Referer
kondisi. Berbahaya untuk memasukkan nilai header HTTP referer yang diketahui publik. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:Referer
yang mereka pilih. Oleh karena itu, jangan gunakan aws:Referer
untuk mencegah pihak yang tidak berwenang membuat AWS permintaan langsung.
Kunci aws:Referer
kondisi ditawarkan hanya untuk memungkinkan pelanggan melindungi konten digital mereka, seperti konten yang disimpan di Amazon S3, agar tidak dirujuk di situs pihak ketiga yang tidak sah. Untuk informasi selengkapnya, silakan lihat aws:Referer di Panduan Pengguna IAM.
Mengelola akses pengguna ke folder tertentu
memberikan pengguna akses ke folder tertentu
Misalkan Anda mencoba memberikan pengguna akses ke folder tertentu. Jika IAM pengguna dan bucket S3 milik yang sama Akun AWS, Anda dapat menggunakan IAM kebijakan untuk memberi pengguna akses ke folder bucket tertentu. Dengan pendekatan ini, Anda tidak perlu memperbarui kebijakan bucket untuk memberikan akses. Anda dapat menambahkan IAM kebijakan ke IAM peran yang dapat dialihkan oleh beberapa pengguna.
Jika IAM identitas dan bucket S3 berbeda Akun AWS, Anda harus memberikan akses lintas akun baik dalam IAM kebijakan maupun kebijakan bucket. Untuk informasi selengkapnya tentang pemberian akses lintas akun, lihat Pemilik bucket yang memberikan izin bucket lintas akun.
Contoh kebijakan bucket berikut memberikan akses konsol
penuh hanya ke foldernya (JohnDoe
home/
). Dengan membuat JohnDoe
/home
folder dan memberikan izin yang sesuai kepada pengguna, Anda dapat meminta beberapa pengguna berbagi satu bucket. Kebijakan ini terdiri dari tiga Allow
pernyataan:
-
: Memungkinkan user (AllowRootAndHomeListingOfCompanyBucket
) untuk daftar objek di tingkat rootJohnDoe
bucket dan diamzn-s3-demo-bucket
home
folder. Pernyataan ini juga memungkinkan pengguna untuk mencari pada prefikshome/
dengan menggunakan konsol. -
: Memungkinkan user (AllowListingOfUserFolder
) untuk daftar semua objek dalamJohnDoe
home/
folder dan subfolder apapun.JohnDoe
/ -
: Memungkinkan pengguna untuk melakukan semua tindakan Amazon S3 dengan memberikanAllowAllS3ActionsInUserFolder
Read
,Write
, dan izinDelete
. Izin terbatas pada folder beranda pemilik bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowRootAndHomeListingOfCompanyBucket
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/
amzn-s3-demo-bucket
JohnDoe
"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::"], "Condition": { "StringLike": { "s3:prefix": ["home/
amzn-s3-demo-bucket
JohnDoe
/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::/home/
amzn-s3-demo-bucket
JohnDoe
/*"] } ] }
Mengelola akses log akses
Berikan akses ke Penyeimbang Beban Aplikasi untuk mengaktifkan log akses
Saat Anda mengaktifkan pencatatan akses untuk Penyeimbang Beban Aplikasi, Anda harus menentukan nama bucket S3 tempat penyeimbang beban akan menyimpan log. Bucket harus memiliki kebijakan terlampir yang memberikan izin Elastic Load Balancing untuk menulis ke bucket.
Pada contoh berikut, kebijakan bucket memberikan izin Elastic Load Balancing ELB () untuk menulis log akses ke bucket:
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::
elb-account-id
:root" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*" } ] }
catatan
Pastikan untuk mengganti
dengan Akun AWS ID untuk Elastic Load Balancing untuk Anda. Wilayah AWS Untuk daftar Wilayah Elastic Load Balancing, lihat Melampirkan kebijakan ke bucket Amazon S3 Anda di Panduan Pengguna Elastic Load Balancing.elb-account-id
Jika Anda Wilayah AWS tidak muncul di daftar Wilayah Elastic Load Balancing yang didukung, gunakan kebijakan berikut, yang memberikan izin ke layanan pengiriman log yang ditentukan.
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*" } ] }
Kemudian, pastikan untuk mengonfigurasi log akses Elastic Load Balancing Anda dengan mengaktifkannya. Anda dapat memverifikasi izin bucket dengan membuat file pengujian.
Mengelola akses ke Amazon CloudFront OAI
Berikan izin ke Amazon CloudFront OAI
Contoh kebijakan bucket berikut memberikan izin CloudFront origin access identity (OAI) untuk mendapatkan (baca) semua objek di bucket S3 Anda. Anda dapat menggunakan a CloudFront OAI untuk memungkinkan pengguna mengakses objek di bucket Anda CloudFront tetapi tidak secara langsung melalui Amazon S3. Untuk informasi selengkapnya, lihat Membatasi akses ke konten Amazon S3 menggunakan Identitas Akses Asal di Panduan Pengembang CloudFront Amazon.
Kebijakan berikut OAI menggunakan ID sebagai kebijakanPrincipal
. Untuk informasi selengkapnya tentang menggunakan kebijakan bucket S3 untuk memberikan akses ke CloudFront OAI, lihat Memigrasi dari identitas akses asal (OAI) ke kontrol akses asal (OAC) di Panduan CloudFront Pengembang Amazon.
Untuk menggunakan contoh ini:
-
Ganti
dengan OAI ID. Untuk menemukan ID, lihat halaman Origin Access IdentityEH1HDMB1FH2TC
di CloudFront konsol, atau gunakan OAI ListCloudFrontOriginAccessIdentitiesdi CloudFront API. -
Ganti
dengan nama bucket Anda.amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
EH1HDMB1FH2TC
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Mengelola akses untuk Lensa Penyimpanan Amazon S3
Berikan Izin untuk Lensa Penyimpanan Amazon S3
Lensa Penyimpanan S3 menggabungkan metrik Anda dan menampilkan informasi di bagian Snapshot akun di halaman Bucket konsol Amazon S3. Lensa Penyimpanan S3 juga menyediakan dasbor interaktif yang dapat Anda gunakan untuk memvisualisasikan wawasan dan tren, menandai outlier, serta menerima rekomendasi untuk mengoptimalkan biaya penyimpanan dan menerapkan praktik terbaik perlindungan data. Dasbor Anda memiliki opsi perincian untuk menghasilkan dan memvisualisasikan wawasan di tingkat organisasi, akun, Wilayah AWS, kelas penyimpanan, bucket, prefiks, atau grup Lensa Penyimpanan. Anda juga dapat mengirim ekspor metrik harian di CSV atau Parquet format ke ember S3.
Lensa Penyimpanan S3 dapat mengekspor metrik penggunaan penyimpanan gabungan Anda ke bucket Amazon S3 untuk analisis lebih lanjut. Bucket tempat Lensa Penyimpanan S3 menempatkan ekspor metrik nya dikenal sebagai bucket tujuan. Saat mengatur ekspor metrik Lensa Penyimpanan S3, Anda harus memiliki kebijakan bucket untuk bucket tujuan. Untuk informasi selengkapnya, lihat Menilai aktivitas penyimpanan dan penggunaan dengan Lensa Penyimpanan Amazon S3.
Contoh kebijakan bucket berikut memberikan kepada Amazon S3 izin untuk tulis objek PUT
(permintaan) ke bucket tujuan. Anda menggunakan kebijakan bucket seperti ini pada bucket tujuan saat membuat pengaturan ekspor metrik Lensa Penyimpanan S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storage-lens.s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/111122223333
/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111122223333
", "aws:SourceArn": "arn:aws:s3:region-code
:111122223333
:storage-lens/storage-lens-dashboard-configuration-id
" } } } ] }
Saat Anda menyiapkan ekspor metrik tingkat organisasi Lensa Penyimpanan S3, gunakan modifikasi berikut pada pernyataan Resource
kebijakan bucket sebelumnya.
"Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/your-organization-id
/*",
Mengelola izin untuk laporan Inventaris S3, S3 analytics, dan Inventaris S3
Berikan izin untuk Inventaris S3 dan analitik S3
S3 Inventaris membuat daftar objek dalam bucket, dan ekspor Analisis Kelas Penyimpanan analitik S3 membuat file output dari data yang digunakan dalam analisis. Bucket tempat inventaris mencantumkan objek disebut bucket sumber. Bucket tempat file inventaris atau file ekspor analitik ditulis disebut bucket tujuan. Saat membuat inventaris atau ekspor analitik, Anda harus membuat kebijakan bucket untuk bucket tujuan. Untuk informasi selengkapnya, silakan lihat Katalogisasi dan analisis data Anda dengan S3 Inventory dan Analitik Amazon S3–Analisis Kelas Penyimpanan.
Contoh kebijakan bucket berikut memberikan kepada Amazon S3 izin untuk menulis objek PUT
(permintaan) dari akun untuk bucket sumber ke bucket tujuan. Anda menggunakan kebijakan bucket seperti ini pada bucket tujuan saat menyiapkan S3 Inventory, dan ekspor analitik S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InventoryAndAnalyticsExamplePolicy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-DESTINATION-BUCKET
/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
" }, "StringEquals": { "aws:SourceAccount": "111122223333
", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
Kontrol pembuatan konfigurasi laporan Inventaris S3
Katalogisasi dan analisis data Anda dengan S3 Inventorymembuat daftar objek dalam bucket S3 dan metadata untuk setiap objek. s3:PutInventoryConfiguration
Izin ini memungkinkan pengguna untuk membuat konfigurasi inventaris yang mencakup semua bidang metadata objek yang tersedia secara default dan menentukan bucket tujuan untuk menyimpan inventaris. Pengguna dengan akses baca ke objek di bucket tujuan dapat mengakses semua bidang metadata objek yang tersedia dalam laporan inventaris. Untuk informasi selengkapnya tentang bidang metadata yang tersedia di Inventaris S3, lihat. Daftar Inventaris Amazon S3
Untuk membatasi pengguna mengonfigurasi laporan Inventaris S3, hapus s3:PutInventoryConfiguration
izin dari pengguna.
Beberapa bidang metadata objek dalam konfigurasi laporan Inventaris S3 bersifat opsional, artinya tersedia secara default tetapi dapat dibatasi saat Anda memberikan izin kepada pengguna. s3:PutInventoryConfiguration
Anda dapat mengontrol apakah pengguna dapat menyertakan bidang metadata opsional ini dalam laporan mereka dengan menggunakan kunci s3:InventoryAccessibleOptionalFields
kondisi. Untuk daftar bidang metadata opsional yang tersedia di Inventaris S3, lihat OptionalFieldsdi APIReferensi Layanan Penyimpanan Sederhana Amazon.
Untuk memberikan izin kepada pengguna untuk membuat konfigurasi inventaris dengan bidang metadata opsional tertentu, gunakan kunci s3:InventoryAccessibleOptionalFields
kondisi untuk menyempurnakan kondisi dalam kebijakan bucket Anda.
Contoh kebijakan berikut memberikan izin kepada pengguna (
) untuk membuat konfigurasi inventaris secara kondisional. Ana
ForAllValues:StringEquals
Kondisi dalam kebijakan menggunakan kunci s3:InventoryAccessibleOptionalFields
kondisi untuk menentukan dua bidang metadata opsional yang diizinkan, yaitu Size
dan. StorageClass
Jadi, saat
membuat konfigurasi inventaris, satu-satunya bidang metadata opsional yang dapat dia sertakan adalah Ana
Size
dan. StorageClass
{ "Id": "InventoryConfigPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreationConditionally", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAllValues:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "Size", "StorageClass" ] } } } ] }
Untuk membatasi pengguna mengonfigurasi laporan Inventaris S3 yang menyertakan bidang metadata opsional tertentu, tambahkan Deny
pernyataan eksplisit ke kebijakan bucket untuk bucket sumber. Contoh kebijakan bucket berikut menyangkal pengguna
membuat konfigurasi inventaris di bucket sumber Ana
yang menyertakan bidang opsional DOC-EXAMPLE-SOURCE-BUCKET
ObjectAccessControlList
atau ObjectOwner
metadata. Pengguna masih
dapat membuat konfigurasi inventaris dengan bidang metadata opsional lainnya.Ana
{ "Id": "InventoryConfigSomeFields", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", }, { "Sid": "DenyCertainInventoryFieldCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAnyValue:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "ObjectOwner", "ObjectAccessControlList" ] } } } ] }
catatan
Penggunaan kunci s3:InventoryAccessibleOptionalFields
kondisi dalam kebijakan bucket tidak memengaruhi pengiriman laporan inventaris berdasarkan konfigurasi inventaris yang ada.
penting
Kami menyarankan Anda menggunakan ForAllValues
dengan Allow
efek atau ForAnyValue
dengan Deny
efek, seperti yang ditunjukkan pada contoh sebelumnya.
Jangan gunakan ForAllValues
dengan Deny
efek atau ForAnyValue
Allow
efek, karena kombinasi ini bisa terlalu membatasi dan memblokir penghapusan konfigurasi inventaris.
Untuk mempelajari selengkapnya tentang operator set ForAllValues
dan ForAnyValue
kondisi, lihat Kunci konteks Multivalued di IAMPanduan Pengguna.
Membutuhkan MFA
Amazon S3 mendukung API akses MFA yang dilindungi, fitur yang dapat menerapkan otentikasi multi-faktor (MFA) untuk akses ke sumber daya Amazon S3 Anda. Otentikasi multi-faktor memberikan tingkat keamanan ekstra yang dapat Anda terapkan ke lingkungan Anda AWS . MFAadalah fitur keamanan yang mengharuskan pengguna untuk membuktikan kepemilikan fisik MFA perangkat dengan memberikan MFA kode yang valid. Untuk informasi selengkapnya, lihat Autentikasi Multi-Faktor AWS
Untuk menegakkan MFA persyaratan, gunakan kunci aws:MultiFactorAuthAge
kondisi dalam kebijakan bucket. IAMpengguna dapat mengakses sumber daya Amazon S3 dengan menggunakan kredenal sementara yang dikeluarkan oleh (). AWS Security Token Service AWS STS Anda memberikan MFA kode pada saat AWS STS
permintaan.
Saat Amazon S3 menerima permintaan dengan autentikasi multi-faktor, kunci aws:MultiFactorAuthAge
kondisi memberikan nilai numerik yang menunjukkan berapa lama (dalam detik) kredensial sementara dibuat. Jika kredensi sementara yang diberikan dalam permintaan tidak dibuat dengan menggunakan MFA perangkat, nilai kunci ini adalah null (absen). Dalam kebijakan bucket, Anda dapat menambahkan sebuah kondisi untuk memeriksa nilai ini, seperti yang ditunjukkan dalam contoh berikut.
Kebijakan contoh ini menyangkal operasi Amazon S3 apa pun di
folder di /dokumen pajak
bucket jika permintaan tidak diautentikasi dengan menggunakanMFA. Untuk mempelajari selengkapnyaMFA, lihat Menggunakan Autentikasi Multi-Faktor (MFA) AWS di IAM Panduan Pengguna.amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }
Null
Kondisi di Condition
blok mengevaluasi true
jika nilai kunci aws:MultiFactorAuthAge
kondisi adalah null, yang menunjukkan bahwa kredenal keamanan sementara dalam permintaan dibuat tanpa perangkat. MFA
Kebijakan bucket berikut merupakan perpanjangan dari kebijakan bucket sebelumnya. Kebijakan berikut mencakup dua pernyataan kebijakan. Satu pernyataan memberikan izin s3:GetObject
pada bucket (
) kepada semua orang. Pernyataan lain selanjutnya membatasi akses ke amzn-s3-demo-bucket
folder di bucket dengan mewajibkanMFA. amzn-s3-demo-bucket
/taxdocuments
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Anda dapat menggunakan kondisi numerik secara opsional untuk membatasi durasi berlakunya aws:MultiFactorAuthAge
kunci. Durasi yang Anda tentukan dengan aws:MultiFactorAuthAge
kunci tidak bergantung pada usia pakai kredensial keamanan sementara yang digunakan untuk mengautentikasi permintaan.
Misalnya, kebijakan bucket berikut, selain memerlukan MFA autentikasi, juga memeriksa berapa lama sesi sementara dibuat. Kebijakan tersebut menolak setiap operasi jika nilai kunci aws:MultiFactorAuthAge
menunjukkan bahwa sesi sementara dibuat lebih dari satu jam yang lalu (3.600 detik).
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Mencegah pengguna menghapus objek
Secara bawaan, pengguna tidak memiliki izin. Namun saat Anda membuat kebijakan, Anda mungkin memberikan izin kepada pengguna yang tidak ingin Anda berikan. Untuk menghindari celah izin tersebut, Anda dapat menulis kebijakan akses yang lebih ketat dengan menambahkan penolakan eksplisit.
Untuk secara eksplisit memblokir pengguna atau akun agar tidak menghapus objek, Anda harus menambahkan tindakan berikut ke kebijakan bucket:s3:DeleteObject
,s3:DeleteObjectVersion
, dan izin. s3:PutLifecycleConfiguration
Ketiga tindakan tersebut diperlukan karena Anda dapat menghapus objek baik dengan memanggil DELETE Object
API operasi secara eksplisit atau dengan mengonfigurasi siklus hidupnya (lihat) Mengelola siklus hidup objek sehingga Amazon S3 dapat menghapus objek saat masa pakainya berakhir.
Dalam contoh kebijakan berikut, Anda secara eksplisit menolak DELETE Object
izin kepada pengguna. MaryMajor
Deny
Pernyataan eksplisit selalu menggantikan izin lain yang diberikan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-bucket1
/*123456789012
:user/" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] } ] }
amzn-s3-demo-bucket1
/*