

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

# Menggunakan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS
<a name="UsingDSSEncryption"></a>

Menggunakan enkripsi sisi server dua lapis dengan kunci AWS Key Management Service (AWS KMS) (DSSE-KMS) menerapkan dua lapisan enkripsi ke objek saat diunggah ke Amazon S3. DSSE-KMS membantu Anda agar lebih mudah memenuhi standar kepatuhan yang mengharuskan Anda untuk menerapkan enkripsi multilayer ke data Anda dan memiliki kontrol penuh atas kunci enkripsi Anda.

“Ganda” di DSSE-KMS mengacu pada dua lapisan independen enkripsi AES-256 yang diterapkan pada data Anda:
+ *Lapisan pertama:* Data Anda dienkripsi menggunakan kunci enkripsi data unik (DEK) yang dihasilkan oleh AWS KMS
+ *Lapisan kedua:* Data yang sudah dienkripsi dienkripsi lagi menggunakan kunci enkripsi AES-256 terpisah yang dikelola oleh Amazon S3

Ini berbeda dari SSE-KMS standar, yang hanya berlaku satu lapisan enkripsi. Pendekatan dual-layer memberikan keamanan yang ditingkatkan dengan memastikan bahwa bahkan jika satu lapisan enkripsi dikompromikan, data Anda akan tetap dilindungi oleh lapisan kedua. Keamanan tambahan ini dilengkapi dengan peningkatan overhead pemrosesan dan panggilan AWS KMS API, yang menyumbang biaya lebih tinggi dibandingkan dengan SSE-KMS standar. [Untuk informasi selengkapnya tentang harga DSSE-KMS, lihat [AWS KMS key konsep](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) di Panduan AWS Key Management Service Pengembang dan harga.AWS KMS](https://aws.amazon.com/kms/pricing)

Saat Anda menggunakan DSSE-KMS dengan bucket Amazon S3, AWS KMS kunci harus berada di Wilayah yang sama dengan bucket. Selain itu, ketika DSSE-KMS diminta untuk objek tersebut, checksum S3 yang merupakan bagian dari metadata objek disimpan dalam bentuk terenkripsi. Untuk informasi selengkapnya tentang checksum, lihat [Memeriksa integritas objek di Amazon S3](checking-object-integrity.md).

**catatan**  
Kunci Bucket S3 tidak didukung untuk DSSE-KMS.

Perbedaan utama antara DSSE-KMS dan SSE-KMS standar adalah:
+ **Lapisan enkripsi:** DSSE-KMS menerapkan dua lapisan independen enkripsi AES-256, sedangkan standar SSE-KMS menerapkan satu lapisan
+ **Keamanan:** DSSE-KMS memberikan perlindungan yang ditingkatkan terhadap potensi kerentanan enkripsi
+ **Kepatuhan:** DSSE-KMS membantu memenuhi persyaratan peraturan yang mengamanatkan enkripsi multilayer
+ **Kinerja:** DSSE-KMS memiliki latensi yang sedikit lebih tinggi karena pemrosesan enkripsi tambahan
+ **Biaya:** DSSE-KMS menimbulkan biaya yang lebih tinggi karena peningkatan overhead komputasi dan operasi tambahan AWS KMS 

**Memerlukan enkripsi sisi server dua lapis dengan (DSSE-KMS) AWS KMS keys**  
Untuk mewajibkan enkripsi di sisi server terhadap semua objek dalam bucket Amazon S3 tertentu, Anda dapat menggunakan kebijakan bucket. Misalnya, kebijakan bucket berikut menolak izin objek unggah (`s3:PutObject`) untuk semua orang jika permintaan tidak menyertakan header `x-amz-server-side-encryption` yang meminta enkripsi di sisi server dengan SSE-KMS.

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

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::111122223333:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [Menentukan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS](specifying-dsse-encryption.md)

# Menentukan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS
<a name="specifying-dsse-encryption"></a>

Anda dapat menerapkan enkripsi saat mengunggah objek baru, atau menyalin objek yang sudah ada. 

Anda dapat menentukan DSSE-KMS menggunakan konsol Amazon S3, Amazon S3 API REST, dan AWS Command Line Interface (AWS CLI). Untuk informasi selengkapnya, lihat topik berikut. 

**catatan**  
Anda dapat menggunakan Multi-wilayah AWS KMS keys di Amazon S3. Namun, Amazon S3 saat ini memperlakukan kunci multi-Wilayah selayaknya kunci satu Wilayah, dan tidak menggunakan fitur multi-Wilayah dari kunci tersebut. Untuk informasi selengkapnya, lihat [Menggunakan kunci Multi-wilayah](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) di *Panduan AWS Key Management Service Pengembang*.

**catatan**  
Jika Anda ingin menggunakan kunci KMS yang dimiliki oleh akun lain, Anda harus memiliki izin untuk menggunakan kunci tersebut. Untuk informasi selengkapnya tentang izin lintas akun untuk kunci KMS, lihat [Membuat kunci KMS yang dapat digunakan oleh akun lain](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) di *Panduan Pengembang AWS Key Management Service *. 

## Menggunakan konsol S3
<a name="add-object-encryption-dsse"></a>

Bagian ini menjelaskan cara mengatur atau mengubah jenis enkripsi objek untuk menggunakan enkripsi sisi server dua lapis dengan AWS Key Management Service (AWS KMS) kunci (DSSE-KMS) dengan menggunakan konsol Amazon S3.

**catatan**  
Anda dapat mengubah enkripsi objek jika objek Anda kurang dari 5 GB. Jika objek Anda lebih besar dari 5 GB, Anda harus menggunakan [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)atau [AWS SDKs](CopyingObjectsMPUapi.md)untuk mengubah enkripsi objek.
Untuk daftar izin tambahan yang diperlukan untuk mengubah enkripsi objek, lihat[Izin yang diperlukan untuk operasi API Amazon S3](using-with-s3-policy-actions.md). Misalnya kebijakan yang memberikan izin ini, lihat[Contoh kebijakan berbasis identitas untuk Amazon S3](example-policies-s3.md).
Jika Anda mengubah enkripsi objek, sebuah objek baru akan dibuat untuk menggantikan objek yang lama. Jika Penentuan Versi S3 diaktifkan, versi baru objek akan dibuat, dan objek yang sudah ada menjadi versi yang lebih lama. Peran yang mengubah properti juga menjadi pemilik objek baru (atau versi objek). 

**Untuk menambahkan atau mengubah enkripsi untuk objek**

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, pilih **Bucket**, lalu pilih tab **Bucket tujuan umum**. Arahkan ke bucket Amazon S3 atau folder yang berisi objek yang ingin Anda ubah.

1. Pilih kotak centang untuk objek yang ingin Anda ubah.

1. Pada menu **Tindakan**, pilih **Edit enkripsi sisi server** dari daftar opsi yang muncul.

1. Gulir ke bagian **enkripsi sisi server**.

1. Di bawah **Pengaturan enkripsi**, pilih **Gunakan pengaturan bucket untuk enkripsi default**, atau **Ganti pengaturan bucket untuk enkripsi default**.

1. Jika Anda memilih **Timpa pengaturan bucket untuk enkripsi default**, konfigurasikan pengaturan enkripsi berikut.

   1. Di bawah **Jenis enkripsi**, pilih **Enkripsi sisi server dual-layer dengan AWS Key Management Service kunci (DSSE-KMS**). 

   1. Di bagian bawah **AWS KMS kunci**, lakukan salah satu langkah berikut untuk memilih kunci KMS Anda:
      + Untuk memilih dari daftar kunci KMS yang tersedia, pilih **Pilih dari AWS KMS keys Anda**, dan pilih **Kunci KMS** Anda dari daftar kunci yang tersedia.

        Kunci Kunci yang dikelola AWS (`aws/s3`) dan kunci terkelola pelanggan Anda muncul dalam daftar ini. Untuk informasi selengkapnya tentang CMK, lihat [Kunci pelanggan dan AWS kunci](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) di *AWS Key Management Service Panduan Pengembang*.
      + Untuk memasukkan ARN kunci KMS, pilih **Masukkan AWS KMS key ARN**, lalu masukkan ARN kunci KMS Anda di bidang yang muncul. 
      + Untuk membuat kunci terkelola pelanggan baru di AWS KMS konsol, pilih **Buat kunci KMS**.

        Untuk informasi selengkapnya tentang membuat AWS KMS key, lihat [Membuat kunci](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) di *Panduan AWS Key Management Service Pengembang*.
**penting**  
Anda hanya dapat menggunakan kunci KMS yang tersedia di Wilayah AWS yang sama dengan bucket. Konsol Amazon S3 hanya mencantumkan kunci 100 KMS pertama di Wilayah yang sama dengan bucket. Untuk menggunakan kunci KMS yang tidak terdaftar, Anda harus memasukkan ARN kunci KMS Anda. Jika Anda ingin menggunakan kunci KMS yang dimiliki oleh akun yang berbeda, Anda harus terlebih dahulu memiliki izin untuk menggunakan kunci tersebut, dan kemudian Anda harus memasukkan kunci KMS ARN.  
Amazon S3 hanya mendukung kunci KMS enkripsi simetris, dan tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Mengidentifikasi kunci KMS asimetris](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) dalam *Panduan Pengembang AWS Key Management Service *.

1. Untuk **Kunci Bucket**, pilih **Nonaktifkan**. Kunci Bucket S3 tidak didukung untuk DSSE-KMS.

1. Di bawah **Pengaturan salinan tambahan**, pilih apakah Anda ingin **Menyalin setelan sumber**, **Jangan tentukan pengaturan**, atau **Tentukan pengaturan**. **Pengaturan sumber salin** adalah opsi default. Jika Anda hanya ingin menyalin objek tanpa atribut pengaturan sumber, pilih **Jangan tentukan pengaturan**. Pilih **Tentukan pengaturan** untuk menentukan pengaturan untuk kelas penyimpanan, tag objek ACLs, metadata, enkripsi sisi server, dan checksum tambahan.

1. Pilih **Simpan perubahan**.

**catatan**  
Tindakan ini menerapkan enkripsi untuk semua objek yang ditentukan. Saat mengenkripsi folder, tunggu hingga operasi penyimpanannya selesai sebelum menambahkan objek baru ke folder tersebut.

## Penggunaan API REST
<a name="DSSEUsingRESTAPI"></a>

Saat Anda membuat objek — yaitu, ketika Anda mengunggah objek baru atau menyalin objek yang ada — Anda dapat menentukan penggunaan enkripsi sisi server dua lapis dengan (DSSE-KMS) untuk mengenkripsi data Anda. AWS KMS keys Untuk melakukannya, tambahkan header `x-amz-server-side-encryption` ke permintaan. Atur nilai header ke algoritma enkripsi. `aws:kms:dsse`. Amazon S3 mengonfirmasi bahwa objek Anda disimpan dengan enkripsi DSSE-KMS dengan mengembalikan header respons `x-amz-server-side-encryption`. 

Jika Anda menentukan header `x-amz-server-side-encryption` dengan nilai `aws:kms:dsse`, Anda juga dapat menggunakan header permintaan berikut ini:
+ `x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId`
+ `x-amz-server-side-encryption-context: SSEKMSEncryptionContext`

**Topics**
+ [Operasi API REST Amazon S3 yang mendukung DSSE-KMS](#dsse-request-headers-kms)
+ [Konteks enkripsi (`x-amz-server-side-encryption-context`)](#s3-dsse-encryption-context)
+ [AWS KMS ID kunci (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-dsse-key-id-api)

### Operasi API REST Amazon S3 yang mendukung DSSE-KMS
<a name="dsse-request-headers-kms"></a>

Operasi API REST berikut ini menerima header permintaan `x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id`, dan `x-amz-server-side-encryption-context`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)–Saat Anda mengunggah data dengan menggunakan operasi API `PUT`, Anda dapat menentukan header permintaan ini. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)–Saat Anda menyalin objek, Anda memiliki objek sumber dan objek target. Saat Anda melewati header DSSE-KMS dengan operasi `CopyObject`, itu diterapkan hanya untuk objek target. Saat Anda menyalin objek yang ada, terlepas dari apakah objek sumbernya dienkripsi atau tidak, objek tujuan tidak dienkripsi kecuali jika Anda secara eksplisit meminta enkripsi di sisi server.
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)–Saat Anda menggunakan operasi `POST` untuk mengunggah objek, alih-alih header permintaan, Anda memberikan informasi yang sama di kolom formulir.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)–Saat Anda mengunggah objek besar dengan menggunakan unggahan multibagian, Anda dapat menentukan header ini dalam permintaan `CreateMultipartUpload`.

Header respons dari operasi API REST berikut mengembalikan header `x-amz-server-side-encryption` saat objek disimpan dengan enkripsi di sisi server.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [POST Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**penting**  
Semua `GET` dan `PUT` permintaan untuk objek yang dilindungi oleh AWS KMS gagal jika Anda tidak membuatnya dengan menggunakan Secure Sockets Layer (SSL), Transport Layer Security (TLS), atau Signature Version 4.
Jika objek Anda menggunakan DSSE-KMS, jangan mengirim header permintaan enkripsi untuk permintaan `GET` dan permintaan `HEAD`, atau Anda akan mendapatkan kesalahan HTTP 400 (Bad Request).

### Konteks enkripsi (`x-amz-server-side-encryption-context`)
<a name="s3-dsse-encryption-context"></a>

Jika Anda menentukan `x-amz-server-side-encryption:aws:kms:dsse`, API Amazon S3 mendukung konteks enkripsi dengan header `x-amz-server-side-encryption-context`. Konteks enkripsi adalah seperangkat pasangan nilai kunci yang berisi informasi kontekstual tambahan terkait data.

Amazon S3 secara otomatis menggunakan Amazon Resource Name (ARN) objek sebagai pasangan konteks enkripsi; misalnya, `arn:aws:s3:::object_ARN`.

Anda dapat secara opsional memberikan pasangan konteks enkripsi tambahan dengan menggunakan header `x-amz-server-side-encryption-context`. Namun, karena konteks enkripsi tidak dienkripsi, pastikan bahwa itu tidak menyertakan informasi yang sensitif. Amazon S3 menyimpan pasangan kunci tambahan ini bersama dengan konteks enkripsi default.

Untuk informasi tentang konteks enkripsi di Amazon S3, lihat [Konteks enkripsi](UsingKMSEncryption.md#encryption-context). Untuk informasi umum tentang konteks enkripsi, lihat [AWS Key Management Service Konsep-Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) dalam *Panduan Pengembang AWS Key Management Service *. 

### AWS KMS ID kunci (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-dsse-key-id-api"></a>

Anda dapat menggunakan header `x-amz-server-side-encryption-aws-kms-key-id` untuk menentukan ID CMK, yang digunakan untuk melindungi data. Jika Anda menentukan `x-amz-server-side-encryption:aws:kms:dsse` header tetapi tidak memberikan `x-amz-server-side-encryption-aws-kms-key-id` header, Amazon S3 menggunakan Kunci yang dikelola AWS (`aws/s3`) untuk melindungi data. Jika Anda ingin menggunakan CMK, Anda harus memberikan header `x-amz-server-side-encryption-aws-kms-key-id` kunci yang dikelola pelanggan.

**penting**  
Saat Anda menggunakan enkripsi sisi server AWS KMS key untuk Amazon S3, Anda harus memilih kunci KMS enkripsi simetris. Amazon S3 hanya mendukung kunci KMS enkripsi simetris. Untuk informasi selengkapnya terkait kunci ini, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) dalam *Panduan Pengembang AWS Key Management Service *.

## Menggunakan AWS CLI
<a name="DSSEUsingCLI"></a>

Saat Anda mengunggah objek baru atau menyalin objek yang ada, Anda dapat menentukan penggunaan DSSE-KMS untuk mengenkripsi data Anda. Untuk melakukannya, tambahkan parameter `--server-side-encryption aws:kms:dsse` ke permintaan. Gunakan parameter `--ssekms-key-id example-key-id` untuk menambahkan [kunci AWS KMS yang dikelola pelanggan](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) yang telah Anda buat. Jika Anda menentukan`--server-side-encryption aws:kms:dsse`, tetapi tidak memberikan ID AWS KMS kunci, maka Amazon S3 akan menggunakan kunci AWS terkelola ()`aws/s3`.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id --body filepath
```

Anda dapat mengenkripsi objek yang tidak terenkripsi untuk menggunakan DSSE-KMS dengan menyalin objek kembali ke tempatnya.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --copy-source amzn-s3-demo-bucket/example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id
```