

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kebijakan Bucket untuk Amazon S3
<a name="bucket-policies"></a>

Kebijakan bucket adalah kebijakan berbasis sumber daya yang dapat Anda gunakan untuk memberikan izin akses ke bucket Amazon S3 dan objek di dalamnya. Hanya pemilik bucket yang dapat mengaitkan kebijakan dengan bucket. Izin yang dipasang pada bucket berlaku untuk semua objek di bucket yang dimiliki oleh pemilik bucket. Izin ini tidak berlaku untuk objek yang dimiliki oleh orang lain Akun AWS.

S3 Object Ownership adalah setelan tingkat ember Amazon S3 yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket Anda dan untuk menonaktifkan atau mengaktifkan daftar kontrol akses (). ACLs Secara default, Kepemilikan Objek disetel ke setelan diberlakukan pemilik Bucket dan semuanya ACLs dinonaktifkan. Pemilik bucket memiliki semua objek di bucket dan mengelola akses ke data secara eksklusif menggunakan kebijakan.

Kebijakan bucket menggunakan bahasa kebijakan berbasis JSON AWS Identity and Access Management (IAM). Anda dapat menggunakan kebijakan bucket untuk menambah atau menolak izin objek dalam bucket. Kebijakan bucket dapat mengizinkan atau menolak permintaan berdasarkan elemen dalam kebijakan. Elemen-elemen ini termasuk pemohon, tindakan S3, sumber daya, dan aspek atau kondisi permintaan (seperti alamat IP yang digunakan untuk membuat permintaan). 

Misalnya, Anda dapat membuat kebijakan bucket yang melakukan langkah berikut: 
+ Berikan izin lintas akun lainnya untuk mengunggah objek ke bucket S3 Anda
+ Memastikan bahwa Anda, pemilik bucket, memiliki kendali penuh atas objek yang diunggah

Untuk informasi selengkapnya, lihat [Contoh kebijakan bucket Amazon S3](example-bucket-policies.md).

**penting**  
Anda tidak dapat menggunakan kebijakan bucket untuk mencegah penghapusan atau transisi oleh aturan Siklus Hidup [S3](object-lifecycle-mgmt.md). Misalnya, meskipun kebijakan bucket Anda menolak semua tindakan untuk semua prinsipal, konfigurasi Siklus Hidup S3 Anda tetap berfungsi seperti biasa.

Topik di bagian ini memberikan contoh dan menunjukkan cara menambahkan kebijakan bucket di konsol S3. Untuk informasi tentang kebijakan berbasis identitas, lihat. [Kebijakan berbasis identitas untuk Amazon S3](security_iam_id-based-policy-examples.md) Untuk informasi tentang bahasa kebijakan bucket, lihat [Kebijakan dan izin di Amazon S3](access-policy-language-overview.md).

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

**Topics**
+ [Menambahkan kebijakan bucket dengan menggunakan konsol Amazon S3](add-bucket-policy.md)
+ [Megendalikan akses dari titik akhir VPC dengan kebijakan bucket](example-bucket-policies-vpc-endpoint.md)
+ [Contoh kebijakan bucket Amazon S3](example-bucket-policies.md)
+ [Contoh kebijakan bucket menggunakan tombol kondisi](amazon-s3-policy-keys.md)

# Menambahkan kebijakan bucket dengan menggunakan konsol Amazon S3
<a name="add-bucket-policy"></a>

Anda dapat menggunakan [Pembuat Kebijakan AWS](https://aws.amazon.com/blogs/aws/aws-policy-generator/) dan konsol Amazon S3 untuk menambahkan kebijakan bucket baru, atau mengedit kebijakan bucket yang sudah ada. Kebijakan bucket adalah kebijakan berbasis sumber daya AWS Identity and Access Management (IAM). Anda menambahkan kebijakan bucket ke bucket untuk memberikan izin akses kepada pengguna lain Akun AWS atau IAM untuk bucket dan objek di dalamnya. Izin objek hanya berlaku untuk objek yang dibuat oleh pemilik bucket. Untuk informasi lebih lanjut tentang kebijakan bucket, lihat [Identity and Access Management untuk Amazon S3](security-iam.md).

Pastikan Anda menyelesaikan peringatan keamanan, kesalahan, peringatan umum, dan saran dari AWS Identity and Access Management Access Analyzer sebelum Anda menyimpan kebijakan Anda. Penganalisis Akses IAM menjalankan pemeriksaan kebijakan untuk memvalidasi kebijakan Anda terhadap [tata bahasa kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) IAM dan [praktik terbaik](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Pemeriksaan ini menghasilkan temuan dan memberikan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang fungsional dan sesuai dengan praktik terbaik keamanan. Untuk mempelajari validasi kebijakan menggunakan Penganalisis Akses IAM lebih lanjut, lihat [Memvalidasi kebijakan Penganalisis Akses IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) di *Panduan Pengguna IAM*. Untuk melihat daftar peringatan, kesalahan, dan saran yang ditampilkan oleh Penganalisis Akses IAM, lihat referensi pemeriksaan kebijakan [Penganalisis Akses IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Untuk panduan tentang pemecahan masalah kesalahan dengan kebijakan, lihat. [Memecahkan masalah kesalahan akses ditolak (403 Forbidden) di Amazon S3](troubleshoot-403-errors.md)

**Untuk membuat atau mengedit kebijakan bucket**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih Bucket **tujuan umum atau ember** **Direktori**.

1. Dalam daftar bucket, pilih nama bucket yang ingin Anda buat kebijakan bucket atau kebijakan bucket yang ingin Anda edit.

1. Pilih tab **Izin**.

1. Di Bawah **Kebijakan bucket**, pilih **Edit**. Halaman **Edit kebijakan bucket** akan muncul.

1. Di halaman **Edit kebijakan bucket**, lakukan salah satu hal berikut: 
   + Untuk melihat contoh kebijakan bucket, pilih **Contoh kebijakan**. Atau lihat [Contoh kebijakan bucket Amazon S3](example-bucket-policies.md) di *Panduan Pengguna Amazon S3*.
   + Untuk membuat kebijakan secara otomatis, atau mengedit JSON di bagian **Kebijakan**, pilih **Pembuat kebijakan**.

   Jika Anda memilih **Policy Generator**, AWS Policy Generator akan terbuka di jendela baru.

   1. Pada halaman **AWS Pembuat Kebijakan**, untuk **Pilih Jenis Kebijakan**, pilih **Kebijakan Bucket S3**.

   1. Tambahkan pernyataan dengan memasukkan informasi di bidang yang disediakan, lalu pilih **Tambah Pernyataan**. Ulangi langkah ini sebanyak jumlah pernyataan yang ingin Anda tambahkan. Untuk informasi selengkapnya tentang persyaratan kebijakan, lihat [Referensi kebijakan IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) di *Panduan Pengguna IAM*. 
**catatan**  
Untuk kenyamanan Anda, halaman **Edit kebijakan bucket** menampilkan **Bucket ARN** (Nama Sumber Daya Amazon) dari bucket saat ini di atas bidang teks **Kebijakan**. Anda dapat menyalin ARN ini untuk digunakan dalam pernyataan di halaman **Pembuat Kebijakan AWS **. 

   1. Setelah Anda selesai menambahkan pernyataan, pilih **Buat Kebijakan**.

   1. Salin teks kebijakan yang dihasilkan, pilih **Tutup**, dan kembali ke halaman **Edit kebijakan bucket** di konsol Amazon S3.

1. Di kotak **Kebijakan**, edit kebijakan yang ada atau tempel kebijakan bucket dari AWS Policy Generator. Pastikan peringatan keamanan, kesalahan, peringatan umum, dan saran telah ditangani sebelum menyimpan kebijakan.
**catatan**  
Kebijakan bucket dibatasi hingga ukuran 20 KB.

1. (Opsional) Pilih **Pratinjau akses eksternal** di sudut kanan bawah untuk melihat bagaimana kebijakan baru memengaruhi publik dan akses lintas akun ke sumber daya Anda. Sebelum Anda menyimpan kebijakan Anda, Anda dapat memeriksa apakah itu memperkenalkan temuan Penganalisa Akses IAM baru atau menyelesaikan temuan yang ada. Jika Anda tidak melihat penganalisis aktif, pilih **Buka Penganalisis Akses** untuk [membuat penganalisis akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) di Penganalisis Akses IAM. Untuk informasi selengkapnya, lihat [Pratinjau akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html) dalam *Panduan Pengguna IAM*. 

1. Pilih **Simpan perubahan**, yang mengembalikan Anda ke tab **Izin**. 

# Megendalikan akses dari titik akhir VPC dengan kebijakan bucket
<a name="example-bucket-policies-vpc-endpoint"></a>

Anda dapat menggunakan kebijakan bucket Amazon S3 untuk mengontrol akses ke bucket dari titik akhir virtual private cloud (VPC) tertentu atau spesifik. VPCs Bagian ini berisi contoh kebijakan bucket yang dapat Anda gunakan untuk mengontrol akses bucket Amazon S3 dari titik akhir VPC. Untuk mempelajari cara mengatur titik akhir VPC, lihat [Titik Akhir VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) dalam *Panduan Pengguna VPC*. 

VPC memungkinkan Anda meluncurkan AWS sumber daya ke jaringan virtual yang Anda tentukan. Endpoint VPC memungkinkan Anda membuat koneksi pribadi antara VPC Anda dan VPC lainnya. Layanan AWS Koneksi pribadi ini tidak memerlukan akses melalui internet, melalui koneksi jaringan pribadi virtual (VPN), melalui instance NAT, atau melalui Direct Connect. 

Titik akhir VPC untuk Amazon S3 adalah entitas logika dalam VPC yang memungkinkan konektivitas hanya ke Amazon S3. Rute titik akhir VPC mengarahkan permintaan ke Amazon S3 dan mengarahkan respons kembali ke VPC. Titik akhir VPC hanya mengubah bagaimana permintaan diarahkan. Titik akhir publik Amazon S3 dan nama DNS akan terus bekerja dengan titik akhir VPC. *Untuk informasi penting tentang penggunaan titik akhir VPC dengan Amazon S3, lihat Titik akhir Gateway dan [titik akhir Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html) [untuk Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html) di Panduan Pengguna VPC.* 

Titik akhir VPC untuk Amazon S3 menyediakan dua cara untuk mengontrol akses ke data Amazon S3 Anda: 
+ Anda dapat mengontrol permintaan, pengguna, atau grup yang diizinkan melalui titik akhir VPC tertentu. *Untuk informasi tentang jenis kontrol akses ini, lihat [Mengontrol akses ke titik akhir VPC menggunakan kebijakan titik akhir di](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) Panduan Pengguna VPC.*
+ Anda dapat mengontrol titik akhir VPCs atau VPC mana yang memiliki akses ke bucket Anda dengan menggunakan kebijakan bucket Amazon S3. Untuk contoh jenis kontrol akses kebijakan bucket seperti ini, lihat topik-topik yang membahas tentang pembatasan akses.

**Topics**
+ [Membatasi akses ke titik akhir VPC kustom](#example-bucket-policies-restrict-accesss-vpc-endpoint)
+ [Membatasi Akses ke VPC Tertentu](#example-bucket-policies-restrict-access-vpc)
+ [Membatasi akses ke titik akhir IPv6 VPC](#example-bucket-policies-ipv6-vpc-endpoint)

**penting**  
Saat menerapkan kebijakan bucket Amazon S3 untuk titik akhir VPC yang dijelaskan di bagian ini, Anda dapat memblokir akses ke bucket secara tidak sengaja. Izin bucket yang dimaksudkan untuk secara kustom membatasi akses bucket ke koneksi yang berasal dari titik akhir VPC Anda dapat memblokir semua koneksi ke bucket tersebut. Untuk informasi tentang cara memperbaiki masalah ini, lihat [Bagaimana cara memperbaiki kebijakan bucket saya jika memiliki ID titik akhir VPC atau VPC yang salah](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/)? di *pusat AWS Dukungan pengetahuan*.

## Membatasi akses ke titik akhir VPC kustom
<a name="example-bucket-policies-restrict-accesss-vpc-endpoint"></a>

Berikut ini adalah contoh kebijakan bucket Amazon S3 yang membatasi akses ke bucket tertentu, `awsexamplebucket1`, hanya dari titik akhir VPC dengan ID `vpce-1a2b3c4d`. Jika titik akhir yang ditentukan tidak digunakan, kebijakan menolak semua akses ke bucket. `aws:SourceVpce`Kondisi menentukan titik akhir. `aws:SourceVpce`Kondisi ini tidak memerlukan Nama Sumber Daya Amazon (ARN) untuk sumber daya titik akhir VPC, hanya ID titik akhir VPC. Untuk informasi lebih lanjut tentang penggunaan kondisi dalam kebijakan, lihat [Contoh kebijakan bucket menggunakan tombol kondisi](amazon-s3-policy-keys.md).

**penting**  
Sebelum menggunakan kebijakan contoh berikut ini, ganti ID titik akhir VPC dengan nilai yang sesuai untuk kasus penggunaan Anda. Jika tidak, Anda tidak akan dapat mengakses bucket Anda.
Kebijakan ini menonaktifkan akses konsol ke bucket yang ditentukan karena permintaan konsol tidak berasal dari titik akhir VPC yang ditentukan.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpce": "vpce-0abcdef1234567890"
         }
       }
     }
   ]
}
```

------

## Membatasi Akses ke VPC Tertentu
<a name="example-bucket-policies-restrict-access-vpc"></a>

Anda dapat membuat kebijakan bucket yang membatasi akses ke VPC tertentu dengan menggunakan kondisi `aws:SourceVpc` tersebut. Hal ini berguna jika Anda memiliki beberapa titik akhir VPC yang dikonfigurasi dalam VPC yang sama, dan Anda ingin mengelola akses ke bucket Amazon S3 Anda untuk semua titik akhir Anda. Berikut ini adalah contoh kebijakan yang menolak akses ke `awsexamplebucket1` dan objeknya dari siapa pun di luar VPC`vpc-111bbb22`. Jika VPC yang ditentukan tidak digunakan, kebijakan menolak semua akses ke bucket. Pernyataan ini tidak memberikan akses ke bucket. Untuk memberikan akses, Anda harus menambahkan `Allow` pernyataan terpisah. Kunci `vpc-111bbb22` kondisi tidak memerlukan ARN untuk sumber daya VPC, hanya ID VPC.

**penting**  
Sebelum menggunakan kebijakan contoh berikut, ganti ID VPC dengan nilai yang sesuai untuk kasus penggunaan Anda. Jika tidak, Anda tidak akan dapat mengakses bucket Anda.
Kebijakan ini menonaktifkan akses konsol ke bucket yang ditentukan karena permintaan konsol tidak berasal dari VPC yang ditentukan.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-1a2b3c4d"
         }
       }
     }
   ]
}
```

------

## Membatasi akses ke titik akhir IPv6 VPC
<a name="example-bucket-policies-ipv6-vpc-endpoint"></a>

Contoh kebijakan berikut menolak semua tindakan Amazon S3 `s3:` () pada *amzn-s3-demo-bucket* bucket dan objeknya, kecuali permintaan tersebut berasal dari titik akhir `vpce-0a1b2c3d4e5f6g` () VPC yang ditentukan dan alamat IP sumber cocok dengan blok CIDR yang disediakan. IPv6 

```
{
   "Version": "2012-10-17", 		 	 	 
   "Id": "Policy1415115909154",
   "Statement": [
     {
       "Sid": "AccessSpecificIPv6VPCEOnly",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-0a1b2c3d4e5f6g4h2"
         },
        "NotIpAddress": {
          "aws:VpcSourceIp": "2001:db8::/32"
        }
       }
     }
   ]
}
```

Untuk informasi tentang cara membatasi akses ke bucket Anda berdasarkan spesifik IPs atau VPCs, lihat [Bagaimana cara mengizinkan hanya titik akhir atau alamat IP VPC tertentu untuk mengakses bucket Amazon S3 saya](https://repost.aws/knowledge-center/block-s3-traffic-vpc-ip)? di pusat AWS re:Post pengetahuan.

# Contoh kebijakan bucket Amazon S3
<a name="example-bucket-policies"></a>

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](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) umum atau diakhiri dengan ekstensi tertentu, seperti`.html`. 

Untuk informasi selengkapnya tentang bahasa kebijakan AWS Identity and Access Management (IAM), lihat[Kebijakan dan izin di Amazon S3](access-policy-language-overview.md).

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

**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](walkthrough1.md)

Sumber daya tambahan untuk membuat kebijakan bucket meliputi:
+ Untuk daftar tindakan kebijakan IAM, sumber daya, dan kunci kondisi yang dapat Anda gunakan saat membuat kebijakan bucket, lihat [Kunci tindakan, sumber daya, dan kondisi untuk Amazon](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) S3 di Referensi Otorisasi *Layanan*.
+ Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)
+ Untuk panduan tentang membuat kebijakan S3 Anda, lihat [Menambahkan kebijakan bucket dengan menggunakan konsol Amazon S3](add-bucket-policy.md).
+ Untuk memecahkan masalah kesalahan dengan kebijakan, lihat [Memecahkan masalah kesalahan akses ditolak (403 Forbidden) di Amazon S3](troubleshoot-403-errors.md).

Jika Anda mengalami masalah saat menambahkan atau memperbarui kebijakan, lihat [Mengapa saya mendapatkan kesalahan “Prinsipal tidak valid dalam kebijakan” saat saya mencoba memperbarui kebijakan bucket Amazon S3 saya](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error)? di pusat AWS re:Post pengetahuan.

**Topics**
+ [Memberikan izin baca-saja kepada pengguna anonim publik](#example-bucket-policies-anonymous-user)
+ [Membutuhkan enkripsi](#example-bucket-policies-encryption)
+ [Mengelola ember menggunakan kaleng ACLs](#example-bucket-policies-public-access)
+ [Mengelola akses objek dengan penandaan objek](#example-bucket-policies-object-tags)
+ [Mengelola akses objek dengan menggunakan kunci kondisi global](#example-bucket-policies-global-condition-keys)
+ [Mengelola akses sesuai permintaan HTTP atau HTTPS](#example-bucket-policies-HTTP-HTTPS)
+ [Mengelola akses pengguna ke folder tertentu](#example-bucket-policies-folders)
+ [Mengelola akses log akses](#example-bucket-policies-access-logs)
+ [Mengelola akses ke Amazon CloudFront OAI](#example-bucket-policies-cloudfront)
+ [Mengelola akses untuk Lensa Penyimpanan Amazon S3](#example-bucket-policies-lens)
+ [Mengelola izin untuk laporan Inventaris S3, S3 analytics, dan Inventaris S3](#example-bucket-policies-s3-inventory)
+ [Membutuhkan MFA](#example-bucket-policies-MFA)
+ [Mencegah pengguna menghapus objek](#using-with-s3-actions-related-to-bucket-subresources)

## Memberikan izin baca-saja kepada pengguna anonim publik
<a name="example-bucket-policies-anonymous-user"></a>

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, lihat[Mengatur izin untuk akses situs web](WebsiteAccessPermissionsReqd.md). 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](https://repost.aws/knowledge-center/read-access-objects-s3-bucket)? 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](access-control-block-public-access.md) 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/](https://console.aws.amazon.com/s3/)

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

1. Pilih **Izin**.

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

1. Kosongkan **Blokir *semua* akses publik**, lalu pilih **Simpan perubahan**.  
![\[Konsol Amazon S3, menampilkan pengaturan bucket akses publik blok.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html) 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
<a name="example-bucket-policies-encryption"></a>

Anda dapat memerlukan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) kunci (SSE-KMS), seperti yang ditunjukkan pada contoh berikut.

### Membutuhkan SSE-KMS untuk semua objek yang ditulis ke bucket
<a name="example-bucket-policies-encryption-1"></a>

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.

------
#### [ JSON ]

****  

```
{
"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
<a name="example-bucket-policies-encryption-2"></a>

Contoh kebijakan berikut menyangkal objek apa pun ditulis ke bucket jika tidak dienkripsi dengan SSE-KMS dengan menggunakan ID kunci KMS tertentu. 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 KMS yang ditentukan. Pastikan untuk mengganti ARN kunci KMS yang digunakan dalam contoh ini dengan ARN kunci KMS Anda sendiri.

------
#### [ JSON ]

****  

```
{
"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-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
    }
  }
}]
}
```

------

## Mengelola ember menggunakan kaleng ACLs
<a name="example-bucket-policies-public-access"></a>

### Memberikan izin ke beberapa akun untuk mengunggah objek atau mengatur objek ACLs untuk akses publik
<a name="example-bucket-policies-acl-1"></a>

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 `public-read` kaleng (ACL)](acl-overview.md#canned-acl). Untuk informasi selengkapnya, lihat [Tindakan kebijakan untuk Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) dan [Kunci kondisi kebijakan untuk Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys).

**Awas**  
ACL `public-read` terekam memungkinkan siapa pun di dunia untuk melihat objek di bucket 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](WebsiteHosting.md). Jika Anda ingin mengaktifkan blokir pengaturan akses publik untuk hosting situs web statis, lihat [Tutorial: Mengonfigurasi situs web statis di Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html) S3.

------
#### [ JSON ]

****  

```
{
    "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
<a name="example-bucket-policies-acl-2"></a>

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 kemampuan spesifik Akun AWS (*`111122223333`*) untuk mengunggah objek hanya jika akun tersebut menyertakan ACL yang `bucket-owner-full-control` dikalengkan saat diunggah. `StringEquals`Kondisi dalam kebijakan tersebut menyebutkan kunci `s3:x-amz-acl` kondisi untuk mengekspresikan persyaratan ACL terekam. Untuk informasi selengkapnya, lihat [Kunci kondisi kebijakan untuk Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). 

------
#### [ JSON ]

****  

```
{
   "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
<a name="example-bucket-policies-object-tags"></a>

### Mengizinkan pengguna untuk membaca objek yang memiliki kunci dan nilai tag spesifik
<a name="example-bucket-policies-tagging-1"></a>

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.

------
#### [ JSON ]

****  

```
{
   "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
<a name="example-bucket-policies-tagging-2"></a>

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](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) dalam *Panduan Pengguna IAM*.

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.

------
#### [ JSON ]

****  

```
{
   "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
<a name="example-bucket-policies-tagging-3"></a>

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

------
#### [ JSON ]

****  

```
{
   "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
<a name="example-bucket-policies-tagging-4"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="example-bucket-policies-global-condition-keys"></a>

[Kunci kondisi global](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) 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 kebijakan JSON untuk membandingkan kunci dalam permintaan dengan nilai kunci yang Anda tentukan dalam kebijakan Anda.

### Batasi akses hanya ke pengiriman log akses server Amazon S3
<a name="example-bucket-policies-global-condition-keys-1"></a>

Dalam contoh kebijakan bucket berikut, kunci kondisi [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)global digunakan untuk membandingkan [Amazon Resource Name (ARN)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) 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](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) 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`). 

------
#### [ JSON ]

****  

```
{
    "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": "111122223333"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket1"
                }
            }
        },
        {
            "Sid": "RestrictToS3ServerAccessLogs",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### Izinkan akses hanya ke organisasi Anda
<a name="example-bucket-policies-global-condition-keys-2"></a>

Jika Anda ingin meminta semua [kepala sekolah IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) 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](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) 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 pengguna utama IAM tertentu di organisasi Anda akses langsung 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, [kunci kondisi aws:PrincipalOrgID global](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) 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.

------
#### [ JSON ]

****  

```
{
    "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 sesuai permintaan HTTP atau HTTPS
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### Batasi Akses Hanya ke Permintaan HTTPS
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

Jika Anda ingin mencegah penyerang potensial memanipulasi lalu lintas jaringan, Anda dapat menggunakan HTTPS (TLS) untuk hanya mengizinkan koneksi terenkripsi sambil membatasi permintaan HTTP mengakses bucket Anda. Untuk menentukan apakah permintaan tersebut HTTP atau HTTPS, gunakan kunci kondisi [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport)global dalam kebijakan bucket S3 Anda. Kunci `aws:SecureTransport` kondisi memeriksa apakah permintaan dikirim dengan menggunakan HTTP.

Jika permintaan kembali`true`, maka permintaan dikirim melalui HTTPS. Jika permintaan kembali`false`, maka permintaan dikirim melalui HTTP. Anda kemudian dapat mengizinkan atau menolak akses ke bucket Anda berdasarkan skema permintaan yang diinginkan.

Dalam contoh berikut, kebijakan bucket secara eksplisit menolak permintaan HTTP. 

------
#### [ JSON ]

****  

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

------

### Membatasi akses ke suatu Wilayah tertentu
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

Misalkan Anda memiliki situs web dengan nama domain *`www.example.com`* atau *`example.com`* dengan tautan ke foto dan video yang disimpan di bucket Anda bernama `amzn-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.

Pastikan browser yang Anda gunakan menyertakan `referer` header HTTP dalam permintaan.

**Awas**  
Sebaiknya Anda berhati-hati saat menggunakan tombol `aws:Referer` kondisi. Menyertakan nilai header perujuk HTTP yang diketahui publik sangat berbahaya. 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 lebih lanjut, lihat [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer) dalam *Panduan Pengguna IAM*.

## Mengelola akses pengguna ke folder tertentu
<a name="example-bucket-policies-folders"></a>

### memberikan pengguna akses ke folder tertentu
<a name="example-bucket-policies-folders-1"></a>

Misalkan Anda mencoba memberikan pengguna akses ke folder tertentu. Jika pengguna IAM dan bucket S3 milik yang sama Akun AWS, maka Anda dapat menggunakan kebijakan IAM untuk memberikan akses pengguna ke folder bucket tertentu. Dengan pendekatan ini, Anda tidak perlu memperbarui kebijakan bucket untuk memberikan akses. Anda dapat menambahkan kebijakan IAM ke peran IAM yang dapat dialihkan oleh beberapa pengguna. 

Jika identitas IAM dan bucket S3 milik yang berbeda Akun AWS, maka Anda harus memberikan akses lintas akun baik dalam kebijakan IAM maupun kebijakan bucket. Untuk informasi selengkapnya tentang pemberian akses lintas akun, lihat [Pemilik bucket yang memberikan izin bucket lintas](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) 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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="example-bucket-policies-access-logs"></a>

### Berikan akses ke Penyeimbang Beban Aplikasi untuk mengaktifkan log akses
<a name="example-bucket-policies-access-logs-1"></a>

[Saat Anda mengaktifkan pencatatan akses untuk Penyeimbang Beban Aplikasi, Anda harus menentukan nama bucket S3 tempat penyeimbang beban akan menyimpan log.](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket) Bucket harus memiliki [kebijakan terlampir](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy) 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:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333: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](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy) 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.

------
#### [ JSON ]

****  

```
{
  "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](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs) Anda dengan mengaktifkannya. Anda dapat [memverifikasi izin bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions) dengan membuat file pengujian.

## Mengelola akses ke Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront"></a>

### Berikan izin ke Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront-1"></a>

Contoh kebijakan bucket berikut memberikan izin identitas akses CloudFront asal (OAI) untuk mendapatkan (membaca) semua objek di bucket S3 Anda. Anda dapat menggunakan 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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) di Panduan Pengembang * CloudFront Amazon*.

Kebijakan berikut menggunakan ID OAI sebagai `Principal`. *Untuk informasi selengkapnya tentang menggunakan kebijakan bucket S3 guna memberikan akses ke CloudFront OAI, lihat [Memigrasi dari identitas akses asal (OAI) ke kontrol akses asal (OAC) di Panduan Pengembang Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac). CloudFront *

Untuk menggunakan contoh ini:
+ Ganti `EH1HDMB1FH2TC` dengan ID OAI. Untuk menemukan ID OAI, lihat [halaman Origin Access Identity](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:) di CloudFront konsol, atau gunakan [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html)di CloudFront API.
+ Ganti `amzn-s3-demo-bucket` dengan nama bucket Anda.

------
#### [ JSON ]

****  

```
{
    "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
<a name="example-bucket-policies-lens"></a>

### Berikan Izin untuk Lensa Penyimpanan Amazon S3
<a name="example-bucket-policies-lens-1"></a>

Lensa Penyimpanan S3 menggabungkan metrik Anda dan menampilkan informasi di bagian **Snapshot akun** di halaman **Bucket** konsol Amazon S3. S3 Storage Lens juga menyediakan dasbor interaktif yang dapat Anda gunakan untuk memvisualisasikan wawasan dan tren, menandai outlier, dan menerima rekomendasi untuk mengoptimalkan biaya penyimpanan dan menerapkan praktik terbaik perlindungan data. Dasbor Anda memiliki opsi penelusuran untuk menghasilkan dan memvisualisasikan wawasan di tingkat grup organisasi, akun, kelas penyimpanan, bucket Wilayah AWS, awalan, atau Storage Lens. Anda juga dapat mengirim laporan metrik harian dalam CSV atau Parquet format ke bucket S3 tujuan umum atau mengekspor metrik langsung ke bucket tabel S3 yang AWS dikelola.

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 [Memantau aktivitas penyimpanan dan penggunaan Anda dengan Amazon S3 Storage Lens](storage_lens.md).

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.

------
#### [ JSON ]

****  

```
{
    "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.

```
1. "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
<a name="example-bucket-policies-s3-inventory"></a>

### Berikan izin untuk Inventaris S3 dan analitik S3
<a name="example-bucket-policies-s3-inventory-1"></a>

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, lihat [Membuat katalog dan menganalisis data Anda dengan S3 Inventory](storage-inventory.md) dan [Analitik Amazon S3–Analisis Kelas Penyimpanan](analytics-storage-class.md).

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.

------
#### [ JSON ]

****  

```
{  
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
            "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ],
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

### Kontrol pembuatan konfigurasi laporan Inventaris S3
<a name="example-bucket-policies-s3-inventory-2"></a>

[Membuat katalog dan menganalisis data Anda dengan S3 Inventory](storage-inventory.md)membuat 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](storage-inventory.md#storage-inventory-contents)

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 mereka 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 S3 Inventory, lihat [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody)di Referensi API *Amazon Simple Storage Service*.

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:StringEquals`Kondisi 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` 

------
#### [ JSON ]

****  

```
{
	"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 `amzn-s3-demo-source-bucket` yang menyertakan bidang opsional `ObjectAccessControlList` atau `ObjectOwner` metadata. Pengguna masih `Ana` dapat membuat konfigurasi inventaris dengan bidang metadata opsional lainnya.

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::amzn-s3-demo-source-bucket",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::amzn-s3-demo-source-bucket",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys) di Panduan Pengguna *IAM*.

## Membutuhkan MFA
<a name="example-bucket-policies-MFA"></a>

Amazon S3 mendukung akses API yang dilindungi MFA, sebuah fitur yang dapat memberlakukan autentikasi multi-faktor (MFA) untuk mengakses sumber daya Amazon S3. Otentikasi multi-faktor memberikan tingkat keamanan ekstra yang dapat Anda terapkan ke lingkungan Anda AWS . MFA adalah fitur keamanan yang mengharuskan pengguna membuktikan kepemilikan fisik perangkat MFA dengan menyediakan kode MFA yang valid. Untuk informasi selengkapnya, lihat [Autentikasi Multi-Faktor AWS](https://aws.amazon.com/mfa/). Anda dapat mewajibkan MFA untuk setiap permintaan akses sumber daya Amazon S3. 

Untuk memberlakukan persyaratan MFA, gunakan kunci kondisi `aws:MultiFactorAuthAge` dalam kebijakan bucket. Pengguna IAM dapat mengakses sumber daya Amazon S3 dengan menggunakan kredensyal sementara yang dikeluarkan oleh (). AWS Security Token Service AWS STS Anda memberikan kode MFA pada saat permintaan AWS STS . 

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 kredensial sementara yang diberikan dalam permintaan tidak dibuat menggunakan perangkat MFA, maka nilai kunci ini akan kosong (tidak ada). Dalam kebijakan bucket, Anda dapat menambahkan sebuah kondisi untuk memeriksa nilai ini, seperti yang ditunjukkan dalam contoh berikut. 

Contoh kebijakan ini menolak operasi Amazon S3 pada *`/taxdocuments`*folder dalam bucket jika permintaan tidak `amzn-s3-demo-bucket` diautentikasi dengan menggunakan MFA. Untuk pelajari selengkapnya tentang otentikasi multifaktor (MFA), lihat [Menggunakan Autentikasi Multi-Faktor (MFA) di AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) dalam *Panduan Pengguna IAM*.

------
#### [ JSON ]

****  

```
{
    "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` apakah nilai kunci `aws:MultiFactorAuthAge` kondisi adalah nol, yang mana hal ini menunjukkan bahwa kredensial 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 membatasi lebih lanjut akses ke folder `amzn-s3-demo-bucket/taxdocuments` yang ada dalam bucket dengan mewajibkan MFA. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "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. 

Sebagai contoh, kebijakan bucket berikut, selain mewajibkan autentikasi MFA, juga memeriksa berapa lama lagi 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). 

------
#### [ JSON ]

****  

```
{
    "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
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

Secara bawaan, pengguna tidak memiliki izin. Namun saat 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 operasi `DELETE Object` API secara eksplisit atau dengan mengonfigurasi siklus hidupnya (lihat) [Mengelola siklus hidup objek](object-lifecycle-mgmt.md) 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.

------
#### [ JSON ]

****  

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

------

# Contoh kebijakan bucket menggunakan tombol kondisi
<a name="amazon-s3-policy-keys"></a>

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](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). *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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

## Contoh: Kunci kondisi Amazon S3 untuk operasi objek
<a name="object-keys-in-amazon-s3-policies"></a>

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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*

Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

Beberapa contoh kebijakan menunjukkan bagaimana Anda dapat menggunakan kunci kondisi operasi [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). Operasi PUT Objek memungkinkan header spesifik daftar kontrol akses (ACL) yang dapat Anda gunakan untuk memberikan izin berbasis ACL. Dengan menggunakan tombol kondisi ini, Anda dapat mengatur kondisi untuk memerlukan izin akses tertentu saat pengguna mengunggah objek. Anda juga dapat memberikan izin berbasis ACL dengan operasi tersebut. PutObjectAcl Untuk informasi lebih lanjut, lihat [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) dalam *Referensi API Layanan Penyimpanan Sederhana Amazon S3 Amazon*. Untuk informasi lebih lanjut tentang ACLs, lihat[Gambaran umum daftar kontrol akses (ACL)](acl-overview.md).

**Topics**
+ [Contoh 1: Memberikan `s3:PutObject` izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server](#putobject-require-sse-2)
+ [Contoh 2: Memberikan `s3:PutObject` izin untuk menyalin objek dengan batasan pada sumber salinan](#putobject-limit-copy-source-3)
+ [Contoh 3: Memberikan akses ke versi objek tertentu](#getobjectversion-limit-access-to-specific-version-3)
+ [Contoh 4: Memberikan izin berdasarkan tag objek](#example-object-tagging-access-control)
+ [Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket](#example-object-resource-account)
+ [Contoh 6: Membutuhkan versi TLS minimum](#example-object-tls-version)
+ [Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan `Deny`](#example-exclude-principal-from-deny-statement)
+ [Contoh 8: Menegakkan klien untuk mengunggah objek secara kondisional berdasarkan nama kunci objek atau ETags](#example-conditional-writes-enforce)

### Contoh 1: Memberikan `s3:PutObject` izin yang mengharuskan objek disimpan menggunakan enkripsi sisi server
<a name="putobject-require-sse-2"></a>

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 (SSE-S3). Administrator Akun A dapat menentukan persyaratan ini dengan menggunakan kunci `s3:x-amz-server-side-encryption` kondisi seperti yang ditunjukkan. Pasangan kunci-nilai di `Condition` blok berikut menentukan kunci `s3:x-amz-server-side-encryption` kondisi dan SSE-S3 () `AES256` sebagai jenis enkripsi:

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Saat menguji izin ini dengan menggunakan AWS CLI, Anda harus menambahkan enkripsi yang diperlukan dengan menggunakan `--server-side-encryption` parameter, seperti yang ditunjukkan pada contoh berikut. Untuk menggunakan perintah contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri. 

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### Contoh 2: Memberikan `s3:PutObject` izin untuk menyalin objek dengan batasan pada sumber salinan
<a name="putobject-limit-copy-source-3"></a>

Dalam permintaan `PUT` objek, ketika Anda menentukan objek sumber, permintaan adalah operasi salinan (lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). Oleh karena itu, pemilik bucket dapat memberikan izin kepada pengguna untuk menyalin objek dengan pembatasan pada sumber, misalnya:
+ Izinkan menyalin objek hanya dari bucket sumber yang ditentukan (misalnya,`amzn-s3-demo-source-bucket`).
+ Izinkan menyalin objek dari bucket sumber yang ditentukan dan hanya objek yang awalan nama kuncinya dimulai dengan awalan tertentu, seperti *`public/`* (misalnya,). `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 (`Dave`). Kebijakan ini memungkinkan dia untuk menyalin objek hanya dengan syarat permintaan menyertakan `s3:x-amz-copy-source` header dan bahwa nilai header menentukan awalan nama `/amzn-s3-demo-source-bucket/public/*` kunci. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
    "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:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "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 AWS CLI di Referensi API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Amazon S3.*

```
aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**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 perintah contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### Contoh 3: Memberikan akses ke versi objek tertentu
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Misalkan Akun A memiliki bucket berkemampuan versi. Bucket tersebut memiliki beberapa versi objek `HappyFace.jpg`. Administrator Akun A sekarang ingin memberikan `Dave` izin kepada pengguna untuk mendapatkan hanya versi objek tertentu. Administrator akun dapat melakukannya dengan memberikan `s3:GetObjectVersion` izin kepada pengguna `Dave` secara kondisional, seperti yang ditunjukkan pada contoh berikut. Pasangan nilai kunci dalam pemblokiran `Condition` menentukan kunci kondisi `s3:VersionId`. Dalam hal ini, untuk mengambil objek dari bucket berkemampuan versi tertentu, `Dave` perlu mengetahui ID versi objek yang tepat. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) dalam *Referensi API Amazon Simple Storage Service*. 

------
#### [ JSON ]

****  

```
{
    "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 `OutputFile.jpg` file.

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### Contoh 4: Memberikan izin berdasarkan tag objek
<a name="example-object-tagging-access-control"></a>

Untuk contoh cara menggunakan kunci kondisi penandaan objek dengan operasi Amazon S3, lihat. [Kebijakan pemberian tag dan kontrol akses](tagging-and-policies.md)

### Contoh 5: Membatasi akses oleh Akun AWS ID pemilik bucket
<a name="example-object-resource-account"></a>

Anda dapat menggunakan kunci `aws:ResourceAccount` atau `s3:ResourceAccount` kondisi untuk menulis kebijakan titik akhir IAM atau virtual private cloud (VPC) yang membatasi akses pengguna, peran, atau aplikasi ke bucket Amazon S3 yang dimiliki oleh ID tertentu. Akun AWS Anda dapat menggunakan kunci kondisi ini untuk membatasi klien dalam VPC Anda agar tidak mengakses bucket yang tidak Anda miliki.

Namun, ketahuilah bahwa beberapa AWS layanan bergantung pada akses ke bucket yang AWS dikelola. Oleh karena itu, menggunakan kunci `aws:ResourceAccount` atau `s3:ResourceAccount` dalam kebijakan IAM Anda juga dapat memengaruhi akses ke sumber daya ini. Untuk informasi selengkapnya, lihat sumber daya berikut:
+ [Batasi akses ke bucket dalam Akun AWS yang ditentukan](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) dalam *Panduan AWS PrivateLink *
+ [Batasi akses ke bucket yang digunakan Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms) dalam *Panduan Amazon ECR*
+ [Menyediakan akses yang diperlukan ke Systems Manager untuk bucket Amazon S3 AWS terkelola](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) *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](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/) Penyimpanan.AWS *

### Contoh 6: Membutuhkan versi TLS minimum
<a name="example-object-tls-version"></a>

Anda dapat menggunakan tombol `s3:TlsVersion` kondisi untuk menulis IAM, virtual private cloud endpoint (VPCE), atau kebijakan bucket yang membatasi akses pengguna atau aplikasi ke bucket Amazon S3 berdasarkan versi TLS yang digunakan oleh klien. Anda dapat menggunakan kunci syarat ini untuk tulis kebijakan yang memerlukan versi TLS minimum. 

**catatan**  
Ketika AWS layanan melakukan panggilan ke AWS layanan lain atas nama Anda (service-to-service panggilan), konteks otorisasi khusus jaringan tertentu dihapus, termasuk`s3:TlsVersion`,,, dan. `aws:SecureTransport` `aws:SourceIp` `aws:VpcSourceIp` Jika kebijakan Anda menggunakan kunci kondisi ini dengan `Deny` pernyataan, prinsip AWS layanan mungkin diblokir secara tidak sengaja. Untuk memungkinkan AWS layanan berfungsi dengan baik sambil mempertahankan persyaratan keamanan Anda, kecualikan prinsip layanan dari `Deny` pernyataan Anda dengan menambahkan kunci `aws:PrincipalIsAWSService` kondisi dengan nilai. `false` Contoh:  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Kebijakan ini menolak akses ke operasi S3 ketika HTTPS tidak `aws:SecureTransport` digunakan (salah), tetapi hanya untuk prinsipal AWS non-layanan. Ini memastikan pembatasan bersyarat Anda berlaku untuk semua kepala sekolah kecuali kepala sekolah layanan. AWS 

**Example**  
Contoh kebijakan bucket berikut *menolak `PutObject` permintaan* klien yang memiliki versi TLS lebih awal dari 1.2, misalnya 1.1 atau 1.0. Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
Contoh kebijakan bucket berikut *memungkinkan* `PutObject` permintaan oleh klien yang memiliki versi TLS lebih lambat 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:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Contoh 7: Mengecualikan prinsipal tertentu dari pernyataan `Deny`
<a name="example-exclude-principal-from-deny-statement"></a>

Kebijakan bucket berikut menolak `s3:GetObject` akses ke`amzn-s3-demo-bucket`, kecuali ke kepala sekolah dengan nomor rekening. *`123456789012`* Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
  "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 8: Menegakkan klien untuk mengunggah objek secara kondisional berdasarkan nama kunci objek atau ETags
<a name="example-conditional-writes-enforce"></a>

Dengan penulisan bersyarat, Anda dapat menambahkan header tambahan ke `WRITE` permintaan Anda untuk menentukan prasyarat untuk operasi S3 Anda. Header ini menentukan kondisi yang, jika tidak terpenuhi, akan mengakibatkan operasi S3 gagal. Misalnya, Anda dapat mencegah penimpaan data yang ada dengan memvalidasi tidak ada objek dengan nama kunci yang sama yang sudah ada di bucket Anda selama pengunggahan objek. Anda juga dapat memeriksa tag entitas objek (ETag) di Amazon S3 sebelum menulis objek.

Untuk contoh kebijakan bucket yang menggunakan kondisi dalam kebijakan bucket guna menerapkan penulisan bersyarat, lihat. [Menegakkan penulisan bersyarat di ember Amazon S3](conditional-writes-enforce.md)

## Contoh: Kunci kondisi Amazon S3 untuk operasi bucket
<a name="bucket-keys-in-amazon-s3-policies"></a>

Contoh kebijakan berikut menunjukkan cara Anda dapat menggunakan kunci kondisi khusus Amazon S3 untuk operasi bucket.

**Topics**
+ [Contoh 1: Memberikan `s3:GetObject` izin dengan syarat pada alamat IP](#AvailableKeys-iamV2)
+ [Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu](#condition-key-bucket-ops-2)
+ [Contoh 3: Mengatur jumlah kunci maksimum](#example-numeric-condition-operators)

### Contoh 1: Memberikan `s3:GetObject` izin dengan syarat pada alamat IP
<a name="AvailableKeys-iamV2"></a>

Anda dapat memberikan izin kepada pengguna yang diautentikasi untuk menggunakan `s3:GetObject` tindakan jika permintaan berasal dari rentang alamat IP tertentu (misalnya,`192.0.2.*`), kecuali alamat IP adalah salah satu yang ingin Anda kecualikan (misalnya,`192.0.2.188`). Di `Condition` blok, `IpAddress` dan `NotIpAddress` 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 `user input placeholders` dengan informasi Anda sendiri.

**catatan**  
Nilai `IPAddress` dan `NotIpAddress` kunci yang ditentukan dalam `Condition` blok menggunakan notasi CIDR, seperti yang dijelaskan dalam RFC 4632. Untuk informasi lebih lanjut, lihat [http://www.rfc-editor. org/rfc/rfc](http://www.rfc-editor.org/rfc/rfc4632.txt)4632.txt.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "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 kondisi `aws:SourceVpce` dan `aws:SourceVpc` dalam kebijakan bucket untuk titik akhir VPC. Untuk contoh spesifik, lihat[Megendalikan akses dari titik akhir VPC dengan kebijakan bucket](example-bucket-policies-vpc-endpoint.md).

**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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) di Referensi Otorisasi Layanan.*  
Untuk informasi selengkapnya tentang izin operasi S3 API menurut jenis sumber daya S3, lihat. [Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md)

### Contoh 2: Mendapatkan daftar objek di bucket dengan prefiks tertentu
<a name="condition-key-bucket-ops-2"></a>

Anda dapat menggunakan kunci `s3:prefix` kondisi untuk membatasi respons operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)API 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 tersebut yang mendukung konsep folder; Amazon S3 API hanya mendukung bucket dan objek. Misalnya, jika Anda memiliki dua objek dengan nama kunci *`public/object1.jpg`* dan*`public/object2.jpg`*, konsol menunjukkan objek di bawah *`public`* folder. Pada Amazon S3 API, objek-objek ini adalah objek dengan prefiks, bukan objek yang ada dalam folder. Untuk informasi lebih lanjut tentang bagaimana menggunakan prefiks dan pembatas untuk memfilter izin akses, lihat [Mengontrol akses ke bucket dengan kebijakan pengguna](walkthrough1.md). 

Dalam skenario berikut, pemilik bucket dan akun induk yang dimiliki pengguna adalah sama. Jadi pemilik bucket dapat menggunakan kebijakan bucket atau kebijakan pengguna untuk memberikan akses. Untuk informasi selengkapnya tentang kunci kondisi lain yang dapat Anda gunakan dengan operasi `ListObjectsV2` API, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) dengan `Condition` pernyataan yang mengharuskan pengguna untuk menentukan awalan dalam permintaan dengan nilai. `projects` Untuk menggunakan kebijakan contoh ini, ganti `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

`Condition`Pernyataan membatasi pengguna untuk mencantumkan hanya kunci objek yang memiliki `projects` awalan. `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 `projects` awalan, permintaan ditolak. 

**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 `user input placeholders` dengan informasi Anda sendiri.

------
#### [ JSON ]

****  

```
{
   "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:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "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 AWS CLI di Referensi API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Amazon S3.*

```
aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### Contoh 3: Mengatur jumlah kunci maksimum
<a name="example-numeric-condition-operators"></a>

Anda dapat menggunakan tombol `s3:max-keys` kondisi untuk mengatur jumlah maksimum kunci yang dapat dikembalikan oleh pemohon dalam [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html)permintaan [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)atau permintaan. Secara default, operasi API ini mengembalikan hingga 1.000 kunci. Untuk daftar operator kondisi numerik yang dapat Anda gunakan dengan `s3:max-keys` dan contoh yang menyertainya, lihat [Operator kondisi Numerik](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) dalam *Panduan Pengguna IAM*.