Contoh kebijakan bucket Amazon S3 - Amazon Simple Storage Service

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 amzn-s3-demo-bucket sebagai nilai sumber daya. Untuk menguji kebijakan ini, ganti user input placeholders dengan informasi Anda sendiri (seperti nama bucket Anda).

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:

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? di pusat AWS pengetahuan.

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.

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

  2. Pilih nama bucket yang telah Anda konfigurasikan sebagai situs web statis.

  3. Pilih Izin.

  4. Di bagian bawah Blokir akses publik (pengaturan bucket), pilih Edit.

  5. Kosongkan Blokir semua akses publik, lalu pilih Simpan perubahan.

    Konsol Amazon S3, menampilkan pengaturan bucket akses publik blok.

    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:::amzn-s3-demo-bucket/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }

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:::amzn-s3-demo-bucket/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms: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-readKalengan 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:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }

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 (111122223333) kemampuan untuk mengunggah objek hanya jika akun itu menyertakan bucket-owner-full-control kalengan saat ACL diunggah. StringEqualsKondisi 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:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }

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:::amzn-s3-demo-bucket/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

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 Project) dengan set nilai ke X.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/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 (Department) dengan nilai yang disetel Finance ke bucket.

{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/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:::amzn-s3-demo-bucket-logs/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111111111111" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET" } } }, { "Sid": "RestrictToS3ServerAccessLogs", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }

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:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }

Batasi akses ke perujuk tertentu HTTP

Misalkan Anda memiliki situs web dengan nama domain www.example.com atau contoh.com dengan tautan ke foto dan video yang disimpan di ember Anda bernamaamzn-s3-demo-bucket. Secara default, semua sumber daya Amazon S3 bersifat pribadi, jadi hanya Akun AWS yang membuat sumber daya yang dapat mengaksesnya.

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 JohnDoe penuh hanya ke foldernya (home/JohnDoe/). Dengan membuat home folder dan memberikan izin yang sesuai kepada pengguna, Anda dapat meminta beberapa pengguna berbagi satu bucket. Kebijakan ini terdiri dari tiga Allow pernyataan:

  • AllowRootAndHomeListingOfCompanyBucket: Memungkinkan user (JohnDoe) untuk daftar objek di tingkat root amzn-s3-demo-bucket bucket dan di home folder. Pernyataan ini juga memungkinkan pengguna untuk mencari pada prefiks home/ dengan menggunakan konsol.

  • AllowListingOfUserFolder: Memungkinkan user (JohnDoe) untuk daftar semua objek dalam home/JohnDoe/ folder dan subfolder apapun.

  • AllowAllS3ActionsInUserFolder: Memungkinkan pengguna untuk melakukan semua tindakan Amazon S3 dengan memberikan Read, Write, dan izin Delete. 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:::amzn-s3-demo-bucket"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/JohnDoe"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"], "Condition": { "StringLike": { "s3:prefix": ["home/JohnDoe/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/home/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 elb-account-id 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.

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:

{ "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:PutInventoryConfigurationIzin 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 (Ana) untuk membuat konfigurasi inventaris secara kondisional. ForAllValues:StringEqualsKondisi dalam kebijakan menggunakan kunci s3:InventoryAccessibleOptionalFields kondisi untuk menentukan dua bidang metadata opsional yang diizinkan, yaitu Size dan. StorageClass Jadi, saat Ana membuat konfigurasi inventaris, satu-satunya bidang metadata opsional yang dapat dia sertakan adalah 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 Ana membuat konfigurasi inventaris di bucket sumber DOC-EXAMPLE-SOURCE-BUCKET yang menyertakan bidang opsional ObjectAccessControlList atau ObjectOwner metadata. Pengguna masih Ana dapat membuat konfigurasi inventaris dengan bidang metadata opsional lainnya.

{ "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. Anda dapat meminta permintaan apa pun MFA untuk mengakses sumber daya Amazon S3 Anda.

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 /dokumen pajak folder di amzn-s3-demo-bucket bucket jika permintaan tidak diautentikasi dengan menggunakanMFA. Untuk mempelajari selengkapnyaMFA, lihat Menggunakan Autentikasi Multi-Faktor (MFA) AWS di IAM Panduan Pengguna.

{ "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 }} } ] }

NullKondisi 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 (amzn-s3-demo-bucket) kepada semua orang. Pernyataan lain selanjutnya membatasi akses ke amzn-s3-demo-bucket/taxdocuments folder di bucket dengan mewajibkanMFA.

{ "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/*" } ] }

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 DenyPernyataan eksplisit selalu menggantikan izin lain yang diberikan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/MaryMajor" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/MaryMajor" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }