

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

# Batasi akses ke asal Amazon S3
<a name="private-content-restricting-access-to-s3"></a>

CloudFront menyediakan dua cara untuk mengirim permintaan yang diautentikasi ke asal Amazon S3*: kontrol akses asal* (OAC) *dan identitas akses asal* (OAI). OAC membantu Anda mengamankan asal Anda, seperti Amazon S3. 

Kami *menyarankan* Anda menggunakan OAC sebagai gantinya karena mendukung fitur-fitur berikut:
+ Semua bucket Amazon S3 secara keseluruhan Wilayah AWS, termasuk Wilayah keikutsertaan diluncurkan setelah Desember 2022
+ Enkripsi [sisi server Amazon S3 dengan (SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)) AWS KMS
+ Permintaan dinamis (`PUT`dan`DELETE`) ke Amazon S3

OAI tidak mendukung fitur-fitur ini atau memerlukan solusi tambahan dalam skenario tersebut. Jika Anda sudah menggunakan OAI dan ingin bermigrasi, lihat. [Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)](#migrate-from-oai-to-oac)

**Catatan**  
Saat menggunakan CloudFront OAC dengan asal bucket Amazon S3, Anda harus menyetel Kepemilikan **Objek Amazon S3** ke **pemilik Bucket yang diberlakukan, default untuk bucket** Amazon S3 baru. Jika perlu ACLs, gunakan setelan **pilihan pemilik Bucket** untuk mempertahankan kontrol atas objek yang diunggah melalui CloudFront.
Jika asal Anda adalah bucket Amazon S3 yang dikonfigurasi sebagai [titik akhir situs web](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html), Anda harus mengaturnya CloudFront sebagai asal khusus. Itu berarti Anda tidak dapat menggunakan OAC (atau OAI). OAC tidak mendukung pengalihan asal dengan menggunakan Lambda @Edge.

Topik berikut menjelaskan cara menggunakan OAC dengan asal Amazon S3. 

**Topik**
+ [Buat kontrol akses asal baru](#create-oac-overview-s3)
+ [Hapus distribusi dengan OAC yang terpasang pada bucket S3](#delete-oac-distribution-s3)
+ [Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)](#migrate-from-oai-to-oac)
+ [Pengaturan lanjutan untuk kontrol akses asal](#oac-advanced-settings-s3)

## Buat kontrol akses asal baru
<a name="create-oac-overview-s3"></a>

Selesaikan langkah-langkah yang dijelaskan dalam topik berikut untuk menyiapkan kontrol akses asal baru CloudFront.

**Topics**
+ [Prasyarat](#oac-prerequisites-s3)
+ [Berikan CloudFront izin untuk mengakses bucket S3](#oac-permission-to-access-s3)
+ [Buat kontrol akses asal](#create-oac-s3)

### Prasyarat
<a name="oac-prerequisites-s3"></a>

Sebelum membuat dan mengatur kontrol akses asal (OAC), Anda harus memiliki CloudFront distribusi dengan asal bucket Amazon S3. Asal ini harus berupa bucket S3 biasa, bukan bucket yang dikonfigurasi sebagai titik [akhir situs web](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html). Untuk informasi selengkapnya tentang menyiapkan CloudFront distribusi dengan asal bucket S3, lihat[Memulai dengan distribusi CloudFront standar](GettingStarted.SimpleDistribution.md).

**penting**  
**Saat Anda menggunakan OAC untuk mengamankan asal Amazon S3 Anda, komunikasi CloudFront antara dan Amazon S3 selalu melalui HTTPS, tetapi hanya ketika Anda memilih untuk selalu menandatangani permintaan.** Anda harus memilih **Permintaan tanda tangan (disarankan)** di konsol atau tentukan `always` di CloudFront API, AWS CLI, atau CloudFormation.   
Jika Anda memilih opsi **Jangan menandatangani permintaan** atau **Jangan timpa header otorisasi**, CloudFront gunakan protokol koneksi yang Anda tentukan dalam kebijakan berikut:  
[Kebijakan protokol penampil](using-https-viewers-to-cloudfront.md) 
[Kebijakan protokol asal](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) (hanya asal kustom)
[Misalnya, jika Anda memilih **Jangan timpa header otorisasi** dan ingin menggunakan HTTPS antara CloudFront dan asal Amazon S3 Anda, **gunakan Redirect HTTP ke HTTPS **atau HTTPS** hanya untuk kebijakan** protokol penampil.](using-https-viewers-to-cloudfront.md)

### Berikan CloudFront izin untuk mengakses bucket S3
<a name="oac-permission-to-access-s3"></a>

Sebelum Anda membuat kontrol akses asal (OAC) atau mengaturnya dalam CloudFront distribusi, pastikan bahwa CloudFront memiliki izin untuk mengakses asal bucket S3. Lakukan ini setelah membuat CloudFront distribusi, tetapi sebelum menambahkan OAC ke asal S3 dalam konfigurasi distribusi.

Gunakan [kebijakan bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) S3 untuk mengizinkan CloudFront service principal (`cloudfront.amazonaws.com`) mengakses bucket. Gunakan `Condition` elemen dalam kebijakan CloudFront untuk mengizinkan akses bucket hanya jika permintaan tersebut atas nama CloudFront distribusi yang berisi asal S3. Ini adalah distribusi dengan asal S3 yang ingin Anda tambahkan OAC.

Untuk informasi tentang menambahkan atau memodifikasi kebijakan bucket, lihat [Menambahkan kebijakan bucket menggunakan konsol Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) di Panduan Pengguna *Amazon S3*.

Berikut ini adalah contoh kebijakan bucket S3 yang memungkinkan CloudFront distribusi dengan akses berkemampuan OAC ke asal S3.

**Example Kebijakan bucket S3 yang memungkinkan akses hanya-baca untuk CloudFront distribusi dengan OAC diaktifkan**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudFrontServicePrincipalReadOnly",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/{{<CloudFront distribution ID>}}"
        }
      }
    }
  ]
}
```

**Example Kebijakan bucket S3 yang memungkinkan akses baca dan tulis untuk CloudFront distribusi dengan OAC diaktifkan**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudFrontServicePrincipalReadWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/{{CloudFront-distribution-ID>}}"
        }
      }
    }
  ]
}
```

#### SSE-KMS
<a name="oac-permissions-sse-kms"></a>

Jika objek dalam asal bucket S3 dienkripsi menggunakan [enkripsi sisi server dengan AWS Key Management Service (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html), Anda harus memastikan bahwa distribusi memiliki izin untuk menggunakan kunci. CloudFront AWS KMS Untuk memberikan izin CloudFront distribusi untuk menggunakan kunci KMS, tambahkan pernyataan ke kebijakan [kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html). Untuk informasi tentang cara mengubah kebijakan kunci, lihat [Mengubah kebijakan kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html) di *Panduan AWS Key Management Service Pengembang*.

**Example Pernyataan kebijakan kunci KMS**  
Contoh berikut menunjukkan pernyataan AWS KMS kebijakan yang memungkinkan CloudFront distribusi dengan OAC untuk mengakses kunci KMS untuk SSE-KMS.  

```
{
    "Sid": "AllowCloudFrontServicePrincipalSSE-KMS",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "cloudfront.amazonaws.com"
        ]
     },
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::{{111122223333}}:distribution/{{<CloudFront distribution ID>}}"
            }
        }
}
```

### Buat kontrol akses asal
<a name="create-oac-s3"></a>

Untuk membuat kontrol akses asal (OAC), Anda dapat menggunakan Konsol Manajemen AWS CloudFormation, AWS CLI, atau CloudFront API.

------
#### [ Console ]

**Untuk membuat kontrol akses asal**

1. Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Di panel navigasi, pilih **Akses asal**.

1. Pilih **Buat pengaturan kontrol**.

1. Pada formulir **pengaturan Create control**, lakukan hal berikut:

   1. Di panel **Detail**, masukkan **Nama** dan (opsional) **Deskripsi** untuk kontrol akses asal.

   1. Di panel **Pengaturan**, kami sarankan Anda meninggalkan pengaturan default (**Permintaan tanda tangan (disarankan))**. Untuk informasi selengkapnya, lihat [Pengaturan lanjutan untuk kontrol akses asal](#oac-advanced-settings-s3).

1. Pilih S3 dari dropdown **tipe Origin**.

1. Pilih **Buat**.

   Setelah OAC dibuat, catat **Nama**. Anda membutuhkan ini dalam prosedur berikut.

**Untuk menambahkan kontrol akses asal ke asal S3 dalam distribusi**

1. Buka CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Pilih distribusi dengan asal S3 yang ingin Anda tambahkan OAC, lalu pilih tab **Origins**.

1. **Pilih asal S3 yang ingin Anda tambahkan OAC, lalu pilih Edit.**

1. Untuk **akses Origin**, pilih **Pengaturan kontrol akses Origin (disarankan)**.

1. Dari menu tarik-turun **kontrol akses Origin**, pilih OAC yang ingin Anda gunakan.

1. Pilih **Simpan perubahan**.

Distribusi mulai menyebar ke semua lokasi CloudFront tepi. Saat lokasi edge menerima konfigurasi baru, ia menandatangani semua permintaan yang dikirimkan ke bucket origin S3.

------
#### [ CloudFormation ]

Untuk membuat kontrol akses asal (OAC) dengan CloudFormation, gunakan jenis `AWS::CloudFront::OriginAccessControl` sumber daya. Contoh berikut menunjukkan sintaks CloudFormation template, dalam format YAMM, untuk membuat kontrol akses asal.

```
Type: AWS::CloudFront::OriginAccessControl
Properties: 
  OriginAccessControlConfig: 
      Description: An optional description for the origin access control
      Name: ExampleOAC
      OriginAccessControlOriginType: s3
      SigningBehavior: always
      SigningProtocol: sigv4
```

Untuk informasi selengkapnya, lihat [AWS::CloudFront::OriginAccessKontrol](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-originaccesscontrol.html) di *Panduan AWS CloudFormation Pengguna*.

------
#### [ CLI ]

Untuk membuat kontrol akses asal dengan AWS Command Line Interface (AWS CLI), gunakan **aws cloudfront create-origin-access-control** perintah. Anda dapat menggunakan file input untuk memberikan parameter input untuk perintah, daripada menentukan setiap parameter individu sebagai input baris perintah.

**Untuk membuat kontrol akses asal (CLI dengan file input)**

1. Gunakan perintah berikut untuk membuat file yang diberi nama`origin-access-control.yaml`. File ini berisi semua parameter input untuk **create-origin-access-control** perintah.

   ```
   aws cloudfront create-origin-access-control --generate-cli-skeleton yaml-input > origin-access-control.yaml
   ```

1. Buka `origin-access-control.yaml` file yang baru saja Anda buat. Edit file untuk menambahkan nama untuk OAC, deskripsi (opsional), dan ubah `SigningBehavior` ke`always`. Kemudian simpan filenya.

   Untuk informasi tentang pengaturan OAC lainnya, lihat[Pengaturan lanjutan untuk kontrol akses asal](#oac-advanced-settings-s3).

1. Gunakan perintah berikut untuk membuat kontrol akses asal menggunakan parameter input dari `origin-access-control.yaml` file.

   ```
   aws cloudfront create-origin-access-control --cli-input-yaml file://origin-access-control.yaml
   ```

   Catat `Id` nilai dalam output perintah. Anda membutuhkannya untuk menambahkan OAC ke asal bucket S3 dalam distribusi. CloudFront 

**Untuk melampirkan OAC ke asal bucket S3 dalam distribusi yang ada (CLI dengan file input)**

1. Gunakan perintah berikut untuk menyimpan konfigurasi distribusi untuk CloudFront distribusi yang ingin Anda tambahkan OAC. Distribusi harus memiliki asal bucket S3.

   ```
   aws cloudfront get-distribution-config --id {{<CloudFront distribution ID>}} --output yaml > dist-config.yaml
   ```

1. Buka file yang diberi nama `dist-config.yaml` yang baru saja Anda buat. Edit file akan membuat perubahan berikut:
   + Di `Origins` objek, tambahkan ID OAC ke bidang yang diberi `OriginAccessControlId` nama.
   + Hapus nilai dari bidang yang diberi nama`OriginAccessIdentity`, jika ada.
   + Ubah nama `ETag` bidang menjadi`IfMatch`, tetapi jangan ubah nilai bidang.

   Simpan file setelah selesai.

1. Gunakan perintah berikut untuk memperbarui distribusi untuk menggunakan kontrol akses asal.

   ```
   aws cloudfront update-distribution --id {{<CloudFront distribution ID>}} --cli-input-yaml file://dist-config.yaml
   ```

Distribusi mulai menyebar ke semua lokasi CloudFront tepi. Saat lokasi edge menerima konfigurasi baru, ia menandatangani semua permintaan yang dikirimkan ke bucket origin S3.

------
#### [ API ]

Untuk membuat kontrol akses asal dengan CloudFront API, gunakan [CreateOriginAccessControl](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateOriginAccessControl.html). Untuk informasi selengkapnya tentang bidang yang Anda tentukan dalam panggilan API ini, lihat dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

Setelah membuat kontrol akses asal, Anda dapat melampirkannya ke bucket origin S3 dalam distribusi, menggunakan salah satu panggilan API berikut:
+ Untuk melampirkannya ke distribusi yang ada, gunakan [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Untuk melampirkannya ke distribusi baru, gunakan [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Untuk kedua panggilan API ini, berikan ID kontrol akses asal di `OriginAccessControlId` bidang, di dalam asal. Untuk informasi selengkapnya tentang bidang lain yang Anda tentukan dalam panggilan API ini, lihat [Semua referensi pengaturan distribusi](distribution-web-values-specify.md) dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

------

## Hapus distribusi dengan OAC yang terpasang pada bucket S3
<a name="delete-oac-distribution-s3"></a>

Jika Anda perlu menghapus distribusi dengan OAC yang terpasang pada bucket S3, Anda harus menghapus distribusi sebelum menghapus asal bucket S3. Atau, sertakan Wilayah dalam nama domain asal. Jika ini tidak memungkinkan, Anda dapat menghapus OAC dari distribusi dengan beralih ke publik sebelum dihapus. Untuk informasi selengkapnya, lihat [Menghapus sebuah distribusi](HowToDeleteDistribution.md).

## Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)
<a name="migrate-from-oai-to-oac"></a>

Untuk bermigrasi dari identitas akses asal lama (OAI) ke kontrol akses asal (OAC), perbarui terlebih dahulu asal bucket S3 untuk memungkinkan OAI dan distribusi dengan OAC diaktifkan untuk mengakses konten bucket. Ini memastikan bahwa CloudFront tidak pernah kehilangan akses ke bucket selama transisi. Untuk memungkinkan OAI dan distribusi dengan OAC diaktifkan mengakses bucket S3, perbarui [kebijakan bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) untuk menyertakan dua pernyataan, satu untuk setiap jenis prinsipal.

Contoh kebijakan bucket S3 berikut memungkinkan OAI dan distribusi dengan OAC diaktifkan untuk mengakses asal S3.

**Example Kebijakan bucket S3 yang memungkinkan akses hanya-baca untuk OAI dan distribusi dengan OAC diaktifkan CloudFront**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipalReadOnly",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::{{111122223333}}:distribution/{{<CloudFront distribution ID>}}"
                }
            }
        },
        {
            "Sid": "AllowLegacyOAIReadOnly",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

Setelah memperbarui kebijakan bucket asal S3 untuk mengizinkan akses ke OAI dan OAC, Anda dapat memperbarui konfigurasi distribusi untuk menggunakan OAC, bukan OAI. Untuk informasi selengkapnya, lihat [Buat kontrol akses asal baru](#create-oac-overview-s3).

Setelah distribusi sepenuhnya diterapkan, Anda dapat menghapus pernyataan dalam kebijakan bucket yang memungkinkan akses ke OAI. Untuk informasi selengkapnya, lihat [Berikan CloudFront izin untuk mengakses bucket S3](#oac-permission-to-access-s3).

## Pengaturan lanjutan untuk kontrol akses asal
<a name="oac-advanced-settings-s3"></a>

Fitur kontrol akses CloudFront asal mencakup pengaturan lanjutan yang ditujukan hanya untuk kasus penggunaan tertentu. Gunakan pengaturan yang disarankan kecuali Anda memiliki kebutuhan khusus untuk pengaturan lanjutan.

Kontrol akses asal berisi setelan bernama **Perilaku penandatanganan** (di konsol), atau `SigningBehavior` (di API, CLI, dan CloudFormation). Pengaturan ini menyediakan opsi berikut:

**Selalu tandatangani permintaan asal (pengaturan yang disarankan)**  
Sebaiknya gunakan pengaturan ini, bernama **Permintaan tanda (disarankan)** di konsol, atau `always` di API, CLI, dan. CloudFormation Dengan pengaturan ini, CloudFront selalu tandatangani semua permintaan yang dikirimkan ke asal bucket S3.

**Jangan pernah menandatangani permintaan asal**  
Pengaturan ini diberi nama **Jangan menandatangani permintaan** di konsol, atau `never` di API, CLI, dan. CloudFormation Gunakan pengaturan ini untuk menonaktifkan kontrol akses asal untuk semua asal di semua distribusi yang menggunakan kontrol akses asal ini. Ini dapat menghemat waktu dan tenaga dibandingkan dengan menghapus kontrol akses asal dari semua asal dan distribusi yang menggunakannya, satu per satu. Dengan pengaturan ini, CloudFront tidak menandatangani permintaan apa pun yang dikirimkan ke asal bucket S3.  
Untuk menggunakan pengaturan ini, asal bucket S3 harus dapat diakses publik. Jika Anda menggunakan setelan ini dengan asal bucket S3 yang tidak dapat diakses publik, CloudFront tidak dapat mengakses asal. Asal bucket S3 mengembalikan kesalahan ke CloudFront dan CloudFront meneruskan kesalahan tersebut ke pemirsa.

**Jangan mengganti header penampil (klien) `Authorization`**  
Pengaturan ini diberi nama **Jangan timpa header otorisasi** di konsol, atau `no-override` di API, CLI, dan. CloudFormation Gunakan setelan ini saat Anda CloudFront ingin menandatangani permintaan asal hanya jika permintaan penampil yang sesuai tidak menyertakan `Authorization` header. Dengan pengaturan ini, CloudFront meneruskan `Authorization` header dari permintaan penampil saat ada, tetapi menandatangani permintaan asal (menambahkan tajuknya sendiri`Authorization`) saat permintaan penampil tidak menyertakan `Authorization` header.  
Untuk meneruskan `Authorization` header dari permintaan penampil, Anda *harus* menambahkan `Authorization` header ke [kebijakan cache](controlling-the-cache-key.md) untuk semua perilaku cache yang menggunakan asal bucket S3 yang terkait dengan kontrol akses asal ini.

## Gunakan identitas akses asal (warisan, tidak disarankan)
<a name="private-content-restricting-access-to-s3-oai"></a>

### Ikhtisar identitas akses asal
<a name="private-content-restricting-access-to-s3-overview"></a>

CloudFront *Origin Access Identity* (OAI) menyediakan fungsionalitas yang mirip dengan *Origin Access Control* (OAC), tetapi tidak berfungsi untuk semua skenario. Secara khusus, OAI tidak mendukung:
+ Bucket Amazon S3 di semua, termasuk Wilayah Wilayah AWS keikutsertaan
+ Enkripsi [sisi server Amazon S3 dengan (SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)) AWS KMS
+ Permintaan dinamis (`PUT``POST`,, atau`DELETE`) ke Amazon S3
+ Baru Wilayah AWS diluncurkan setelah Januari 2023

**Tip**  
Kami menyarankan Anda menggunakan OAC sebagai gantinya. Untuk mengatur OAC, lihat[Buat kontrol akses asal baru](#create-oac-overview-s3). Untuk informasi tentang cara bermigrasi dari OAI ke OAC, lihat. [Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)](#migrate-from-oai-to-oac)

### Berikan izin identitas akses asal untuk membaca file di bucket Amazon S3
<a name="private-content-granting-permissions-to-oai"></a>

Saat membuat OAI atau menambahkannya ke distribusi dengan CloudFront konsol, Anda dapat memperbarui kebijakan bucket Amazon S3 secara otomatis untuk memberikan izin kepada OAI untuk mengakses bucket Anda. Atau, Anda dapat memilih untuk membuat atau memperbarui kebijakan bucket secara manual. Metode apa pun yang Anda gunakan, Anda masih harus meninjau izin untuk memastikan bahwa:
+  CloudFront OAI Anda dapat mengakses file dalam ember atas nama pemirsa yang memintanya. CloudFront
+ Pemirsa tidak dapat menggunakan Amazon S3 URLs untuk mengakses file Anda di luar. CloudFront

**penting**  
Jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan semua metode HTTP yang CloudFront mendukung, pastikan Anda memberikan CloudFront OAI izin yang diinginkan. Misalnya, jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan permintaan yang menggunakan `DELETE` metode ini, konfigurasikan kebijakan bucket Anda untuk menangani `DELETE` permintaan dengan tepat sehingga penonton hanya dapat menghapus file yang Anda inginkan.

#### Menggunakan kebijakan bucket Amazon S3
<a name="private-content-updating-s3-bucket-policies"></a>

Anda dapat memberikan akses CloudFront OAI ke file di bucket Amazon S3 dengan membuat atau memperbarui kebijakan bucket dengan cara berikut:
+ [Menggunakan tab **Izin** bucket Amazon S3 di konsol Amazon S3.](https://console.aws.amazon.com/s3/home)
+ Menggunakan [PutBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html) di API Amazon S3.
+ Menggunakan [CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home). Saat menambahkan OAI ke setelan asal di CloudFront konsol, Anda dapat memilih **Ya, perbarui kebijakan bucket** untuk memberi tahu CloudFront agar kebijakan bucket diperbarui atas nama Anda.

Jika Anda memperbarui kebijakan keranjang secara manual, pastikan bahwa Anda:
+ Tentukan OAI yang tepat sebagai `Principal` dalam kebijakan.
+ Berikan izin yang diperlukan OAI untuk mengakses objek atas nama penampil.

Untuk informasi selengkapnya, silakan lihat bagian-bagian berikut ini.

##### Tentukan OAI sebagai `Principal` kebijakan dalam bucket
<a name="private-content-updating-s3-bucket-policies-principal"></a>

Untuk menentukan OAI sebagai kebijakan bucket Amazon S3, gunakan Nama Sumber Daya Amazon (ARN) OAI, yang menyertakan ID OAI. `Principal` Contoh:

```
"Principal": {
    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
}
```

Temukan ID OAI di CloudFront konsol di bawah **Security**, **Origin access**, **Identities (legacy)**. Atau, gunakan [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html)di CloudFront API.

##### Berikan izin ke OAI
<a name="private-content-updating-s3-bucket-policies-permissions"></a>

Untuk memberikan izin kepada OAI untuk mengakses objek di bucket Amazon S3 Anda, gunakan tindakan dalam kebijakan yang terkait dengan operasi API Amazon S3 tertentu. Misalnya, `s3:GetObject` tindakan memungkinkan OAI untuk membaca objek di ember. Untuk informasi selengkapnya, lihat contoh di bagian berikut, atau lihat [tindakan Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.

##### Contoh kebijakan bucket Amazon S3
<a name="private-content-updating-s3-bucket-policies-examples"></a>

Contoh berikut menunjukkan kebijakan bucket Amazon S3 yang memungkinkan CloudFront OAI mengakses bucket S3.

Temukan ID OAI di CloudFront konsol di bawah **Security**, **Origin access**, **Identities (legacy)**. Atau, gunakan [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html)di CloudFront API.

**Example Kebijakan buket Amazon S3 yang memberikan akses baca OAI**  
Contoh berikut memungkinkan OAI untuk membaca objek dalam buket yang ditentukan (`s3:GetObject`).    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

**Example Kebijakan buket Amazon S3 yang memberikan akses baca dan tulis OAI**  
Contoh berikut memungkinkan OAI untuk membaca dan menulis objek dalam buket yang ditentukan (`s3:GetObject` dan `s3:PutObject`). Ini memungkinkan pemirsa untuk mengunggah file ke bucket Amazon S3 Anda. CloudFront    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

#### Gunakan objek Amazon S3 ACLs (tidak disarankan)
<a name="private-content-updating-s3-acls"></a>

**penting**  
Sebaiknya [gunakan kebijakan bucket Amazon S3](#private-content-updating-s3-bucket-policies) untuk memberikan akses OAI ke bucket S3. Anda dapat menggunakan daftar kontrol akses (ACLs) seperti yang dijelaskan di bagian ini, tetapi kami tidak merekomendasikannya.  
Amazon S3 merekomendasikan untuk menyetel [Kepemilikan Objek S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) ke **pemilik bucket yang diberlakukan**, yang berarti hal itu ACLs dinonaktifkan untuk bucket dan objek di dalamnya. Saat menerapkan pengaturan ini untuk Kepemilikan Objek, Anda harus menggunakan kebijakan bucket untuk memberikan akses ke OAI (lihat bagian sebelumnya).  
Bagian berikut ini hanya untuk kasus penggunaan lama yang membutuhkan ACLs.

Anda dapat memberikan akses CloudFront OAI ke file di bucket Amazon S3 dengan membuat atau memperbarui ACL file dengan cara berikut:
+ [Menggunakan tab **Izin** objek Amazon S3 di konsol Amazon S3.](https://console.aws.amazon.com/s3/home)
+ Menggunakan [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) di API Amazon S3.

Ketika Anda memberikan akses ke OAI menggunakan ACL, Anda harus menentukan OAI menggunakan ID pengguna kanonik Amazon S3. Di CloudFront konsol, Anda dapat menemukan ID ini di bawah **Keamanan**, **akses Asal**, **Identitas (warisan)**. Jika Anda menggunakan CloudFront API, gunakan nilai `S3CanonicalUserId` elemen yang dikembalikan saat Anda membuat OAI, atau panggil [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html)di CloudFront API.

### Menggunakan identitas akses asal di wilayah Amazon S3 yang hanya mendukung otentikasi tanda tangan versi 4
<a name="private-content-origin-access-identity-signature-version-4"></a>

Wilayah Amazon S3 yang lebih baru mengharuskan Anda menggunakan Signature Version 4 untuk permintaan yang diautentikasi. (Untuk versi tanda tangan yang didukung di setiap Wilayah Amazon S3, lihat [titik akhir dan kuota Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/s3.html) di.) *Referensi Umum AWS* Jika Anda menggunakan identitas akses asal dan jika bucket Anda berada di salah satu Wilayah yang memerlukan Tanda Tangan Versi 4, perhatikan hal berikut:
+ `DELETE`, `GET`, `HEAD`, `OPTIONS`, dan `PATCH` permintaan didukung tanpa kualifikasi.
+ `POST` permintaan tidak didukung.