

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

# Contoh kebijakan bucket Amazon S3
<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/*"
      ]
    }
  ]
}
```

------