

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

# Melindungi data dengan enkripsi
<a name="UsingEncryption"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Perlindungan data mengacu pada perlindungan data bergerak (saat melakukan perjalanan ke dan dari Amazon S3) dan saat diam (saat data disimpan di dalam disk di pusat data Amazon S3). Anda dapat melindungi data dalam perjalanan dengan menggunakan Secure Socket Layer/Transport Layer Security (SSL/TLS) termasuk pertukaran kunci pasca-kuantum hibrida atau enkripsi sisi klien. Untuk melindungi data diam di Amazon S3, Anda memiliki opsi berikut:
+ **Enkripsi sisi server — Amazon S3 mengenkripsi** objek Anda sebelum menyimpannya di disk di pusat AWS data dan kemudian mendekripsi objek saat Anda mengunduhnya.

  Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi sisi server yang akan digunakan dalam `PUT` permintaan S3, atau memperbarui konfigurasi enkripsi default di bucket tujuan. 

  Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam `PUT` permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), enkripsi sisi server dua lapis dengan kunci (DSSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan pelanggan (SSE-C). Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di dalam bucket tujuan, Anda dapat menggunakan SSE-KMS atau DSSE-KMS.

  Untuk informasi selengkapnya tentang mengubah konfigurasi enkripsi default untuk bucket tujuan umum Anda, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md). 

  Saat Anda mengubah konfigurasi enkripsi default bucket ke SSE-KMS, jenis enkripsi objek Amazon S3 yang ada di bucket tidak akan diubah. Untuk mengubah jenis enkripsi objek yang sudah ada sebelumnya setelah memperbarui konfigurasi enkripsi default ke SSE-KMS, Anda dapat menggunakan Operasi Batch Amazon S3. Anda menyediakan Operasi Batch S3 dengan daftar objek, dan Operasi Batch memanggil operasi API masing-masing. Anda dapat menggunakan [Menyalin objek](batch-ops-copy-object.md) tindakan untuk menyalin objek yang ada, yang menuliskannya kembali ke bucket yang sama dengan objek terenkripsi SSE-KMS. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan posting *Blog AWS Penyimpanan* [Cara mengenkripsi objek yang ada secara surut di Amazon S3 menggunakan S3 Inventory, Amazon Athena, dan Operasi Batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/). 

  Untuk informasi selengkapnya tentang setiap opsi untuk enkripsi sisi server, lihat. [Melindungi data dengan enkripsi di sisi klien](serv-side-encryption.md)

  Untuk mengonfigurasi enkripsi di sisi server, lihat:
  + [Menentukan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)](specifying-s3-encryption.md)
  + [Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS](specifying-kms-encryption.md)
  + [Menentukan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS](specifying-dsse-encryption.md)
  + [Menentukan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)](specifying-s3-c-encryption.md)

  
+ **Enkripsi di sisi klien**–Anda mengenkripsi data sisi klien dan mengunggah data yang dienkripsi ke Amazon S3. Dalam hal ini, Anda mengelola proses enkripsi, kunci enkripsi, dan alat terkait.

  Untuk mengonfigurasi enkripsi di sisi klien, lihat [Melindungi data menggunakan enkripsi di sisi klien](UsingClientSideEncryption.md).

Untuk melihat persentase byte penyimpanan yang dienkripsi, Anda dapat menggunakan metrik Lensa Penyimpanan Amazon S3. Lensa Penyimpanan S3 adalah fitur analisis penyimpanan cloud yang dapat Anda gunakan untuk mendapatkan visibilitas seluruh organisasi ke dalam penggunaan dan aktivitas penyimpanan objek. Untuk informasi selengkapnya, lihat [ Menilai aktivitas penyimpanan dan penggunaan Anda dengan Lensa Penyimpanan S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens?icmpid=docs_s3_user_guide_UsingEncryption.html). Untuk daftar lengkap metrik, lihat [ Glosarium metrik Lensa Penyimpanan S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingEncryption).

Untuk informasi selengkapnya tentang enkripsi sisi server, enkripsi sisi klien, dan enkripsi dalam perjalanan, tinjau topik berikut.

**Topics**
+ [

# Melindungi data dengan enkripsi di sisi klien
](serv-side-encryption.md)
+ [

# Melindungi data menggunakan enkripsi di sisi klien
](UsingClientSideEncryption.md)
+ [

# Melindungi data dalam perjalanan dengan enkripsi
](UsingEncryptionInTransit.md)

# Melindungi data dengan enkripsi di sisi klien
<a name="serv-side-encryption"></a>

**penting**  
Seperti yang [diumumkan pada 19 November 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service menerapkan pengaturan keamanan bucket default baru yang secara otomatis menonaktifkan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk semua bucket tujuan umum baru. Untuk bucket yang ada tanpa objek terenkripsi SSE-C, Amazon S3 juga akan menonaktifkan SSE-C untuk semua permintaan tulis baru. Akun AWS Untuk Akun AWS penggunaan SSE-C, Amazon S3 tidak akan mengubah konfigurasi enkripsi bucket pada bucket yang ada di akun tersebut. Penyebaran ini dimulai pada 6 April 2026, dan akan selesai selama beberapa minggu ke depan di 37 AWS Wilayah, termasuk Wilayah AWS Tiongkok dan AWS GovCloud (AS).  
Dengan perubahan ini, aplikasi yang membutuhkan enkripsi SSE-C harus sengaja mengaktifkan SSE-C dengan menggunakan operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API setelah membuat bucket baru. Untuk informasi lebih lanjut tentang perubahan ini, lihat[Pengaturan SSE-C standar untuk bucket baru FAQ](default-s3-c-encryption-setting-faq.md).

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Enkripsi di sisi server adalah enkripsi data di tempat tujuan oleh aplikasi atau layanan yang menerimanya. Amazon S3 mengenkripsi data Anda pada tingkat objek saat menulisnya ke disk di pusat AWS data dan mendekripsi untuk Anda saat Anda mengaksesnya. Selama Anda mengautentikasi permintaan dan telah memiliki izin akses, tidak ada perbedaan dalam cara mengakses objek terenkripsi atau tidak terenkripsi. Misalnya, jika Anda berbagi objek menggunakan URL yang ditandatangani sebelumnya, URL tersebut bekerja dengan cara yang sama untuk objek terenkripsi maupun yang tidak terenkripsi. Selain itu, saat Anda mencantumkan objek di bucket, operasi daftar API menampilkan daftar semua objek, terlepas dari apakah objek tersebut dienkripsi atau tidak.

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi sisi server yang akan digunakan dalam `PUT` permintaan S3, atau memperbarui konfigurasi enkripsi default di bucket tujuan. 

Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam `PUT` permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), enkripsi sisi server dua lapis dengan kunci (DSSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan pelanggan (SSE-C). Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di dalam bucket tujuan, Anda dapat menggunakan SSE-KMS atau DSSE-KMS.

Untuk informasi selengkapnya tentang mengubah konfigurasi enkripsi default untuk bucket tujuan umum Anda, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md). 

Saat Anda mengubah konfigurasi enkripsi default bucket ke SSE-KMS, jenis enkripsi objek Amazon S3 yang ada di bucket tidak akan diubah. Untuk mengubah jenis enkripsi objek yang sudah ada sebelumnya setelah memperbarui konfigurasi enkripsi default ke SSE-KMS, Anda dapat menggunakan Operasi Batch Amazon S3. Anda menyediakan Operasi Batch S3 dengan daftar objek, dan Operasi Batch memanggil operasi API masing-masing. Anda dapat menggunakan [Menyalin objek](batch-ops-copy-object.md) tindakan untuk menyalin objek yang ada, yang menuliskannya kembali ke bucket yang sama dengan objek terenkripsi SSE-KMS. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan posting *Blog AWS Penyimpanan* [Cara mengenkripsi objek yang ada secara surut di Amazon S3 menggunakan S3 Inventory, Amazon Athena, dan Operasi Batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/). 

**catatan**  
Anda tidak dapat menerapkan berbagai jenis enkripsi di sisi server ke objek yang sama secara bersamaan.

Jika Anda perlu mengenkripsi objek yang ada, gunakan Operasi Batch S3 dan Inventaris S3. Untuk informasi selengkapnya, lihat [ Mengenkripsi objek dengan Operasi Batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) dan [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md).

Saat menyimpan data di Amazon S3, Anda memiliki empat opsi yang saling eksklusif untuk enkripsi sisi server, tergantung pada bagaimana Anda memilih untuk mengelola kunci enkripsi dan jumlah lapisan enkripsi yang ingin Anda terapkan.

**Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)**  
Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default. Opsi default untuk enkripsi di sisi server adalah dengan kunci terkelola Amazon S3 (SSE-S3). Setiap objek dienkripsi dengan kunci unik. Sebagai pelindung tambahan, SSE-S3 mengenkripsi kunci itu sendiri dengan kunci root yang secara rutin diputar. SSE-S3 menggunakan salah satu penyandian blok terkuat yang ada, Advanced Encryption Standard 256-bit (AES-256), untuk mengenkripsi data Anda. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

**Enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS)**  
Enkripsi sisi server dengan AWS KMS keys (SSE-KMS) disediakan melalui integrasi layanan dengan Amazon S3. AWS KMS Dengan AWS KMS, Anda memiliki kontrol lebih besar atas kunci Anda. Misalnya, Anda dapat melihat kunci terpisah, mengedit kebijakan kontrol, dan mengikuti kunci di AWS CloudTrail. Selain itu, Anda dapat membuat dan mengelola CMK atau menggunakan Kunci yang dikelola AWS yang unik bagi Anda, layanan Anda, dan Wilayah Anda. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md).

**Enkripsi sisi server dua lapis dengan kunci () (DSSE-KMS AWS Key Management Service )AWS KMS**  
Enkripsi sisi server dual-layer dengan AWS KMS keys (DSSE-KMS) mirip dengan SSE-KMS, tetapi DSSE-KMS menerapkan dua lapisan independen enkripsi AES-256 alih-alih satu lapisan: pertama menggunakan kunci enkripsi data, kemudian menggunakan kunci enkripsi terkelola Amazon S3 yang terpisah. AWS KMS Karena kedua lapisan enkripsi diterapkan ke objek di sisi server, Anda dapat menggunakan berbagai alat Layanan AWS dan untuk menganalisis data di S3 sambil menggunakan metode enkripsi yang dapat memenuhi persyaratan kepatuhan untuk enkripsi multilayer. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS](UsingDSSEncryption.md).

**Enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)**  
Dengan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C), Anda mengelola kunci enkripsi, dan Amazon S3 mengelola enkripsi saat menulis ke disk dan dekripsi saat Anda mengakses objek Anda. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)](ServerSideEncryptionCustomerKeys.md).

**catatan**  
Saat menggunakan titik akses untuk sistem FSx file Amazon menggunakan titik akses S3, Anda memiliki satu opsi untuk enkripsi sisi server.  
Semua sistem FSx file Amazon memiliki enkripsi yang dikonfigurasi secara default dan dienkripsi saat istirahat dengan kunci yang dikelola menggunakan. AWS Key Management Service Data secara otomatis dienkripsi dan didekripsi oleh pada sistem file karena data sedang ditulis dan dibaca dari sistem file. Proses ini ditangani secara transparan oleh Amazon. FSx

# Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3
<a name="bucket-encryption"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan objek secara otomatis dienkripsi dengan menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Pengaturan enkripsi ini berlaku untuk semua objek di dalam bucket Amazon S3 Anda.

Jika Anda memerlukan kontrol lebih besar atas kunci Anda, seperti mengelola rotasi kunci dan hibah kebijakan akses, Anda dapat memilih untuk menggunakan enkripsi sisi server dengan () kunci AWS Key Management Service (SSE-KMS AWS KMS), atau enkripsi sisi server dua lapis dengan kunci (DSSE-KMS). AWS KMS Untuk informasi selengkapnya tentang mengedit kunci KMS, lihat [Mengedit kunci](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) dalam *Panduan Pengembang AWS Key Management Service *. 

**catatan**  
Kami telah mengubah bucket untuk mengenkripsi unggahan objek baru secara otomatis. Jika sebelumnya Anda membuat bucket tanpa enkripsi default, Amazon S3 akan mengaktifkan enkripsi secara default untuk bucket menggunakan SSE-S3. Tidak akan ada perubahan pada konfigurasi enkripsi default untuk bucket yang sudah ada yang sudah memiliki konfigurasi SSE-S3 atau SSE-KMS. Jika Anda ingin mengenkripsi objek Anda dengan SSE-KMS, Anda harus mengubah jenis enkripsi di pengaturan bucket Anda. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md). 

Saat mengonfigurasi bucket untuk menggunakan enkripsi default dengan SSE-KMS, Anda juga dapat mengaktifkan Kunci Bucket S3 untuk mengurangi lalu lintas permintaan dari Amazon S3 ke AWS KMS dan mengurangi biaya enkripsi. Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

Untuk mengidentifikasi bucket yang mengaktifkan SSE-KMS untuk enkripsi default, Anda dapat menggunakan metrik Lensa Penyimpanan Amazon S3. Lensa Penyimpanan S3 adalah fitur analisis penyimpanan cloud yang dapat Anda gunakan untuk mendapatkan visibilitas seluruh organisasi ke dalam penggunaan dan aktivitas penyimpanan objek. Untuk informasi selengkapnya, lihat [Menggunakan Lensa Penyimpanan S3 untuk melindungi data Anda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html?icmpid=docs_s3_user_guide_bucket-encryption.html).

Saat Anda menggunakan enkripsi di sisi server, Amazon S3 mengenkripsi objek sebelum menyimpannya ke disk, dan mendekripsinya saat Anda mengunduh objek. Untuk informasi lebih lanjut tentang cara untuk melindungi data menggunakan enkripsi di sisi server dan manajemen kunci enkripsi, lihat [Melindungi data dengan enkripsi di sisi klien](serv-side-encryption.md).

Untuk informasi lebih lanjut tentang izin yang diperlukan untuk enkripsi default, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) dalam *Referensi API Amazon Simple Storage Service*.

Anda dapat mengonfigurasi perilaku enkripsi default Amazon S3 untuk bucket S3 dengan menggunakan konsol Amazon S3, API REST Amazon S3, dan Antarmuka Baris Perintah (). AWS SDKs AWS AWS CLI

**Mengenkripsi objek yang ada**  
Untuk mengenkripsi objek Amazon S3 yang tidak terenkripsi, Anda dapat menggunakan Operasi Batch Amazon S3. Anda harus menyediakan Operasi Batch S3 dengan daftar objek untuk dioperasikan, dan Operasi Batch akan memanggil masing-masing API untuk melakukan operasi tertentu. Anda juga dapat menggunakan [Operasi Salin Operasi Batch](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) untuk menyalin objek tidak terenkripsi yang ada, dan menuliskannya kembali ke bucket yang sama sebagai objek terenkripsi. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan postingan *AWS Blog Penyimpanan* [Mengenkripsi objek dengan Operasi Batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Anda juga dapat mengenkripsi objek yang ada dengan menggunakan operasi `CopyObject` API atau `copy-object` AWS CLI perintah. Untuk informasi selengkapnya, lihat postingan *AWS Blog Penyimpanan* [Mengenkripsi objek Amazon S3 yang sudah ada dengan AWS CLI](https://aws.amazon.com/blogs/storage/encrypting-existing-amazon-s3-objects-with-the-aws-cli/).

**catatan**  
Bucket Amazon S3 dengan enkripsi bucket default yang diatur ke SSE-KMS tidak dapat digunakan sebagai bucket tujuan [Pencatatan permintaan dengan pencatatan akses server](ServerLogs.md). Hanya enkripsi default SSE-S3 yang didukung untuk bucket tujuan log akses server.

## Menggunakan enkripsi SSE-KMS untuk operasi lintas akun
<a name="bucket-encryption-update-bucket-policy"></a>

Saat menggunakan enkripsi untuk operasi lintas akun, perhatikan hal berikut:
+ Jika Nama Sumber Daya AWS KMS key Amazon (ARN) atau alias tidak disediakan pada waktu permintaan atau melalui konfigurasi enkripsi default bucket, Kunci yang dikelola AWS (`aws/s3`) akan digunakan.
+ Jika Anda mengunggah atau mengakses objek S3 dengan menggunakan prinsipal AWS Identity and Access Management (IAM) yang sama Akun AWS dengan kunci KMS Anda, Anda dapat menggunakan (). Kunci yang dikelola AWS `aws/s3` 
+ Jika Anda ingin memberikan akses lintas akun ke objek S3 Anda, gunakan CMK. Anda dapat mengonfigurasi kebijakan CMK untuk mengizinkan akses dari akun lain.
+ Jika Anda menentukan kunci KMS yang dikelola pelanggan, kami sarankan untuk menggunakan ARN kunci KMS yang memenuhi syarat sepenuhnya. Jika Anda menggunakan alias kunci KMS sebagai gantinya, AWS KMS selesaikan kunci dalam akun pemohon. Perilaku ini dapat menghasilkan data yang dienkripsi dengan kunci KMS milik pemohon, dan bukan pemilik bucket.
+ Anda harus menentukan kunci yang kepada Anda (pemohon) telah diberikan izin `Encrypt`. Untuk informasi selengkapnya, lihat [Mengizinkan pengguna di akun lain untuk menggunakan kunci KMS untuk operasi kriptografi](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) di *Panduan Pengembang AWS Key Management Service *.

Untuk informasi selengkapnya tentang kapan menggunakan kunci terkelola pelanggan dan kunci KMS AWS terkelola, lihat [Haruskah saya menggunakan Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi objek saya di Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

## Menggunakan enkripsi default menggunakan replikasi
<a name="bucket-encryption-replication"></a>

Saat Anda mengaktifkan enkripsi default untuk bucket tujuan replikasi, perilaku enkripsi berikut berlaku:
+ Jika objek dalam bucket sumber tidak dienkripsi, objek replika dalam bucket tujuan akan dienkripsi menggunakan pengaturan enkripsi default dari bucket tujuan. Akibatnya, tag entitas (ETags) dari objek sumber berbeda ETags dari objek replika. Jika Anda memiliki aplikasi yang menggunakan ETags, Anda harus memperbarui aplikasi tersebut untuk memperhitungkan perbedaan ini.
+ Jika objek dalam bucket sumber dienkripsi dengan menggunakan enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3), enkripsi sisi server dengan kunci () (SSE-KMS), atau enkripsi sisi server dua lapis dengan AWS Key Management Service kunci (DSSE-KMS), objek replika di bucket tujuan menggunakan jenis enkripsi yang sama dengan AWS KMS objek sumber.AWS KMS Pengaturan enkripsi default bucket tujuan tidak digunakan.

Untuk informasi lebih lanjut tentang penggunaan enkripsi default dengan SSE-KMS, lihat [Mereplikasi objek terenkripsi](replication-config-for-kms-objects.md).

## Menggunakan Kunci Bucket Amazon S3 dengan enkripsi default
<a name="bucket-key-default-encryption"></a>

Saat mengonfigurasi bucket untuk menggunakan enkripsi default dengan SSE-KMS, Anda juga dapat mengaktifkan Kunci Bucket S3. S3 Bucket Keys mengurangi jumlah transaksi dari Amazon S3 AWS KMS untuk mengurangi biaya SSE-KMS. 

[Saat mengonfigurasi bucket untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru, AWS KMS buat kunci tingkat ember yang digunakan untuk membuat kunci data unik untuk objek di bucket.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) Kunci Bucket S3 ini digunakan untuk jangka waktu terbatas dalam Amazon S3, mengurangi kebutuhan Amazon S3 untuk membuat permintaan AWS KMS untuk menyelesaikan operasi enkripsi. 

Untuk informasi lebih lanjut tentang menggunakan Kunci Bucket S3, lihat [Menggunakan Kunci Bucket Amazon S3](bucket-key.md).

# Mengonfigurasi enkripsi default
<a name="default-bucket-encryption"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Bucket Amazon S3 mengaktifkan enkripsi bucket secara default, dan objek baru secara otomatis dienkripsi dengan menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Enkripsi ini berlaku untuk semua objek baru di bucket Amazon S3 Anda, dan Anda tidak akan dikenakan biaya.

Jika Anda memerlukan kontrol lebih besar atas kunci enkripsi Anda, seperti mengelola rotasi kunci dan hibah kebijakan akses, Anda dapat memilih untuk menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), atau enkripsi sisi server dua lapis dengan kunci (DSSE-KMS). AWS KMS Untuk informasi lebih lanjut tentang SSE-KMS, lihat [Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS](specifying-kms-encryption.md). Untuk informasi lebih lanjut tentang DSSE-KMS, lihat [Menggunakan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS](UsingDSSEncryption.md). 

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

Saat Anda menyetel enkripsi bucket default ke SSE-KMS, Anda juga dapat mengonfigurasi Kunci Bucket S3 untuk mengurangi biaya permintaan. AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

**catatan**  
Jika Anda menggunakan [PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html)untuk menyetel enkripsi bucket default ke SSE-KMS, Anda harus memverifikasi bahwa ID kunci KMS Anda sudah benar. Amazon S3 tidak memvalidasi ID kunci KMS yang disediakan dalam permintaan. PutBucketEncryption 

Tidak ada biaya tambahan untuk menggunakan enkripsi default untuk bucket S3. Permintaan untuk mengonfigurasi perilaku enkripsi default dikenakan biaya permintaan standar Amazon S3. Untuk informasi tentang harga, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/). [Untuk SSE-KMS dan DSSE-KMS, AWS KMS biaya berlaku dan tercantum pada harga.AWS KMS](https://aws.amazon.com/kms/pricing/) 

Enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C) tidak didukung untuk enkripsi default.

Anda dapat mengonfigurasi enkripsi default Amazon S3 untuk bucket S3 dengan menggunakan konsol Amazon S3, API REST AWS SDKs Amazon S3, dan (). AWS Command Line Interface AWS CLI

**Perubahan yang perlu diingat sebelum mengaktifkan enkripsi default**  
Setelah Anda mengaktifkan enkripsi default untuk bucket, perilaku enkripsi berikut ini akan berlaku:
+ Tidak ada perubahan pada enkripsi objek yang ada dalam bucket sebelum enkripsi default-nya diaktifkan. 
+ Saat Anda mengunggah objek setelah mengaktifkan enkripsi default:
  + Jika header permintaan `PUT` tidak mencakup informasi enkripsi, Amazon S3 akan menggunakan pengaturan enkripsi default bucket untuk mengenkripsi objek. 
  + Jika header permintaan `PUT` mencakup informasi enkripsi, Amazon S3 menggunakan informasi enkripsi dari permintaan `PUT` untuk mengenkripsi objek sebelum menyimpannya di Amazon S3.
+ Jika Anda menggunakan opsi SSE-KMS untuk konfigurasi enkripsi default, Anda tunduk pada kuota permintaan per detik (RPS) AWS KMS. Untuk informasi selengkapnya tentang kuota AWS KMS dan cara meminta kenaikan kuota, lihat [Kuota](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) di *Panduan Pengembang AWS Key Management Service *. 

**catatan**  
Objek yang diunggah sebelum enkripsi default diaktifkan tidak akan dienkripsi. Untuk informasi tentang mengenkripsi objek yang ada, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md).

## Menggunakan konsol S3
<a name="bucket-encryption-how-to-set-up-console"></a>

**Untuk mengonfigurasi enkripsi default di bucket Amazon S3**

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

1. Di panel navigasi kiri, pilih **Bucket**.

1. Dari daftar **Bucket**, pilih nama bucket yang Anda inginkan. 

1. Pilih tab **Properti**.

1. Di bagian bawah **Enkripsi default**, pilih **Edit**.

1. Untuk mengonfigurasi enkripsi default, di bawah **Jenis enkripsi**, pilih salah satu dari berikut ini: 
   + **Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)**
   + **Enkripsi sisi server dengan AWS Key Management Service kunci (SSE-KMS)**
   + **Enkripsi sisi server dua lapis dengan kunci (DSSE-KMS) AWS Key Management Service **
**penting**  
Jika Anda menggunakan opsi SSE-KMS atau DSSE-KMS untuk konfigurasi enkripsi default, Anda tunduk pada kuota permintaan per detik (RPS) AWS KMS. *Untuk informasi selengkapnya tentang AWS KMS kuota dan cara meminta kenaikan kuota, lihat [Kuota](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) di Panduan Pengembang AWS Key Management Service .* 

   Bucket dan objek baru dienkripsi secara default dengan SSE-S3, kecuali Anda menentukan jenis enkripsi default lain untuk bucket Anda. Untuk informasi selengkapnya tentang enkripsi default, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md).

   Untuk informasi selengkapnya tentang penggunaan enkripsi di sisi server Amazon S3 guna mengenkripsi data Anda, lihat [Menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. Jika Anda memilih **enkripsi sisi server dengan AWS Key Management Service kunci (SSE-KMS) atau enkripsi sisi **server Dual-layer dengan kunci (DSSE-KMS**)**, lakukan hal berikut: AWS Key Management Service 

   1. Di bawah **AWS KMS kunci**, tentukan kunci KMS Anda dengan salah satu cara berikut ini:
      + Untuk memilih dari daftar kunci KMS yang tersedia, pilih **Pilih dari Anda AWS KMS keys**, 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 kunci yang dikelola [pelanggan, lihat Kunci dan AWS kunci](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) pelanggan di *Panduan AWS Key Management Service Pengembang*.
      + Untuk memasukkan ARN kunci KMS, pilih **Masukkan AWS KMS key ARN**, dan 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 tombol KMS yang diaktifkan Wilayah AWS sama dengan bucket. Saat memilih **Pilih dari kunci KMS Anda**, konsol S3 hanya mencantumkan 100 kunci KMS per Wilayah. Jika Anda memiliki lebih dari 100 tombol KMS di Wilayah yang sama, Anda hanya dapat melihat 100 kunci KMS pertama di konsol S3. Untuk menggunakan kunci KMS yang tidak terdaftar di konsol, pilih **Masukkan ARN AWS KMS key **, dan masukkan ARN kunci KMS.  
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 *.

      Untuk informasi selengkapnya tentang penggunaan SSE-KMS dengan Amazon S3, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md). Untuk informasi selengkapnya tentang DSSE-KMS, lihat [Menggunakan enkripsi sisi server dual-layer dengan kunci (DSSE-KMS) AWS KMS](UsingDSSEncryption.md).

   1. Saat Anda mengonfigurasikan bucket untuk menggunakan enkripsi default dengan SSE-KMS, Anda juga dapat mengaktifkan Kunci Bucket S3. S3 Bucket Keys menurunkan biaya enkripsi dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

      Untuk menggunakan Kunci Bucket S3, di bagian bawah **Kunci Bucket**, pilih **Aktifkan**.
**catatan**  
Kunci Bucket S3 tidak didukung untuk DSSE-KMS.

1. Pilih **Simpan perubahan**.

## Menggunakan AWS CLI
<a name="default-bucket-encryption-cli"></a>

Contoh ini menunjukkan cara mengonfigurasi enkripsi default dengan menggunakan SSE-S3 atau dengan menggunakan SSE-KMS dengan Kunci Bucket S3.

Untuk informasi selengkapnya tentang enkripsi default, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md). Untuk informasi selengkapnya tentang menggunakan enkripsi default AWS CLI untuk mengonfigurasi, lihat [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html).

**Example – Enkripsi default dengan SSE-S3**  
Contoh ini mengonfigurasi enkripsi bucket default dengan kunci terkelola Amazon S3.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example – Enkripsi default dengan SSE-KMS menggunakan Kunci Bucket S3**  
Contoh ini mengonfigurasi enkripsi bucket default dengan SSE-KMS menggunakan Kunci Bucket S3.   

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Penggunaan API REST
<a name="bucket-encryption-how-to-set-up-api"></a>

Gunakan operasi `PutBucketEncryption` API REST untuk mengaktifkan enkripsi default, dan untuk menyetel jenis enkripsi di sisi server yang akan menggunakan—SSE-S3, SSE-KMS, atau DSSE-KMS. 

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

# Memantau enkripsi default dengan AWS CloudTrail dan Amazon EventBridge
<a name="bucket-encryption-tracking"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Anda dapat melacak permintaan konfigurasi enkripsi default untuk bucket Amazon S3 menggunakan peristiwa AWS CloudTrail . Nama peristiwa API berikut digunakan dalam CloudTrail log:
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

Anda juga dapat membuat EventBridge aturan untuk mencocokkan CloudTrail peristiwa untuk panggilan API ini. Untuk informasi selengkapnya tentang CloudTrail acara, lihat[Mengaktifkan pencatatan untuk objek dalam bucket menggunakan konsol tersebut](enable-cloudtrail-logging-for-s3.md#enable-cloudtrail-events). Untuk informasi selengkapnya tentang EventBridge acara, lihat [Acara dari Layanan AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html).

Anda dapat menggunakan CloudTrail log untuk tindakan Amazon S3 tingkat objek untuk `PUT` melacak `POST` dan meminta ke Amazon S3. Anda dapat menggunakan tindakan ini untuk memverifikasi apakah enkripsi default digunakan untuk mengenkripsi objek saat permintaan `PUT` yang masuk tidak memiliki header enkripsi.

Saat Amazon S3 mengenkripsi objek menggunakan pengaturan enkripsi default, log mencakup salah satu bidang berikut sebagai pasangan nama-nilai: `"SSEApplied":"Default_SSE_S3"`, `"SSEApplied":"Default_SSE_KMS"`, atau `"SSEApplied":"Default_DSSE_KMS"`.

Saat Amazon S3 mengenkripsi objek menggunakan header enkripsi `PUT`, log mencakup salah satu bidang berikut sebagai pasangan nama-nilai: `"SSEApplied":"SSE_S3"`, `"SSEApplied":"SSE_KMS"`, `"SSEApplied":"DSSE_KMS"`, atau `"SSEApplied":"SSE_C"`. 

Untuk pengunggahan multibagian, informasi ini disertakan dalam permintaan operasi `InitiateMultipartUpload` API Anda. Untuk informasi lebih lanjut tentang menggunakan CloudTrail dan CloudWatch, lihat[Pencatatan log dan pemantauan di Amazon S3](monitoring-overview.md).

# FAQ enkripsi default
<a name="default-encryption-faq"></a>

Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. SSE-S3, yang menggunakan Standar Enkripsi Lanjutan 256-bit (AES-256), secara otomatis diterapkan ke semua bucket baru dan ke bucket S3 yang ada yang belum memiliki enkripsi default yang dikonfigurasi. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di AWS CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons Amazon S3 API tambahan di () dan file. AWS Command Line Interface AWS CLI AWS SDKs

Bagian berikut menjawab pertanyaan tentang pembaruan ini. 

**Apakah Amazon S3 mengubah pengaturan enkripsi default untuk bucket saya yang sudah ada yang sudah memiliki enkripsi default yang dikonfigurasi?**  
Tidak. Tidak ada perubahan pada konfigurasi enkripsi default untuk bucket yang sudah ada yang sudah memiliki enkripsi SSE-S3 atau sisi server dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS) yang dikonfigurasi. Untuk informasi lebih lanjut tentang cara mengatur perilaku enkripsi default untuk bucket, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md). Untuk informasi selengkapnya tentang pengaturan enkripsi SSE-S3 dan SSE-KMS, lihat [Melindungi data dengan enkripsi di sisi klien](serv-side-encryption.md).

**Apakah enkripsi default diaktifkan pada bucket saya yang sudah ada yang enkripsi defaultnya tidak dikonfigurasi?**  
Ya. Amazon S3 sekarang mengonfigurasi enkripsi default pada semua bucket tidak terenkripsi yang sudah ada untuk menerapkan enkripsi di sisi server dengan kunci terkelola S3 (SSE-S3) sebagai tingkat dasar enkripsi untuk objek baru yang diunggah ke bucket ini. Objek yang sudah ada dalam bucket tidak terenkripsi tidak akan dienkripsi secara otomatis.

**Bagaimana saya bisa melihat status enkripsi default dari unggahan objek baru?**  
Saat ini, Anda dapat melihat status enkripsi default dari unggahan objek baru di AWS CloudTrail log, Inventaris S3, dan Lensa Penyimpanan S3, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di () dan. AWS Command Line Interface AWS CLI AWS SDKs
+ Untuk melihat CloudTrail acara Anda, lihat [Melihat CloudTrail peristiwa di CloudTrail konsol](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) di *Panduan AWS CloudTrail Pengguna*. CloudTrail log menyediakan pelacakan API untuk `PUT` dan `POST` permintaan ke Amazon S3. Saat enkripsi default digunakan untuk mengenkripsi objek di bucket Anda, CloudTrail log untuk `PUT` dan permintaan `POST` API akan menyertakan bidang berikut sebagai pasangan nama-nilai:. `"SSEApplied":"Default_SSE_S3"` 
+ Untuk melihat status enkripsi otomatis dari unggahan objek baru di Inventaris S3, konfigurasikan laporan Inventaris S3 untuk menyertakan bidang metadata **Enkripsi**, lalu lihat status enkripsi untuk setiap objek baru dalam laporan. Untuk informasi selengkapnya, lihat [Mengatur Inventaris Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configure-inventory.html#storage-inventory-setting-up).
+ Untuk melihat status enkripsi otomatis untuk unggahan objek baru di Lensa Penyimpanan S3, konfigurasikan dasbor Lensa Penyimpanan S3 dan lihat metrik **Byte terenkripsi** dan **Jumlah objek terenkripsi** dalam kategori **Perlindungan data** pada dasbor. Untuk informasi selengkapnya, lihat [Menggunakan konsol S3](storage_lens_creating_dashboard.md#storage_lens_console_creating) dan [Melihat metrik Lensa Penyimpanan S3 di dasbor](storage_lens_view_metrics_dashboard.md).
+ Untuk melihat status enkripsi tingkat bucket otomatis di konsol Amazon S3, periksa **Enkripsi default** bucket Amazon S3 Anda di konsol Amazon S3. Untuk informasi selengkapnya, lihat [Mengonfigurasi enkripsi default](default-bucket-encryption.md).
+ Untuk melihat status enkripsi otomatis sebagai header respons Amazon S3 API tambahan di AWS Command Line Interface (AWS CLI) dan AWS SDKs, periksa header respons `x-amz-server-side-encryption` saat Anda menggunakan tindakan objek APIs, seperti [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)dan. [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

**Apa yang harus saya lakukan untuk memanfaatkan perubahan ini?**  
Anda tidak perlu melakukan perubahan apa pun pada aplikasi Anda yang ada. Karena enkripsi default diaktifkan untuk semua bucket Anda, semua objek baru yang diunggah ke Amazon S3 secara otomatis dienkripsi.

**Bisakah saya menonaktifkan enkripsi untuk objek baru yang ditulis ke bucket saya?**  
Tidak. SSE-S3 adalah enkripsi tingkat dasar baru yang diterapkan pada semua objek baru yang diunggah ke bucket Anda. Anda tidak dapat lagi menonaktifkan enkripsi untuk unggahan objek baru.

**Apakah biaya saya akan terpengaruh?**  
Tidak. Enkripsi default dengan SSE-S3 tersedia tanpa biaya tambahan. Anda akan ditagih untuk penyimpanan, permintaan, dan fitur S3 lainnya, seperti biasa. Untuk informasi harga, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/).

**Akankah Amazon S3 mengenkripsi objek saya yang tidak terenkripsi?**  
Tidak. Mulai 5 Januari 2023, Amazon S3 hanya secara otomatis mengenkripsi unggahan objek baru. Untuk mengenkripsi objek yang ada, Anda dapat menggunakan operasi batch S3 untuk membuat salinan terenkripsi objek Anda. Salinan terenkripsi ini akan mempertahankan data dan nama objek yang ada dan akan dienkripsi dengan menggunakan kunci enkripsi yang Anda tentukan. Untuk detail selengkapnya, lihat [Mengenkripsi objek dengan Operasi Batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) dalam *AWS Blog Penyimpanan*.

**Saya tidak mengaktifkan enkripsi untuk bucket saya sebelum rilis ini. Apakah saya perlu mengubah cara saya mengakses objek?**  
Tidak. Enkripsi default dengan SSE-S3 secara otomatis mengenkripsi data Anda seperti yang tertulis ke Amazon S3 dan mendekripsinya untuk Anda saat Anda mengaksesnya. Tidak ada perubahan dalam cara Anda mengakses objek yang dienkripsi secara otomatis.

**Apakah saya perlu mengubah cara saya mengakses objek terenkripsi di sisi klien?**  
Tidak. Semua objek terenkripsi di sisi klien yang dienkripsi sebelum diunggah ke Amazon S3 tiba sebagai objek teks sandi terenkripsi dalam Amazon S3. Objek ini sekarang akan memiliki lapisan enkripsi SSE-S3. Beban kerja Anda yang menggunakan objek yang terenkripsi di sisi klien tidak akan memerlukan perubahan apa pun pada layanan klien atau pengaturan otorisasi Anda.

**catatan**  
HashiCorp Pengguna Terraform yang tidak menggunakan versi AWS Penyedia yang diperbarui mungkin melihat penyimpangan yang tidak terduga setelah membuat bucket S3 baru tanpa konfigurasi enkripsi yang ditentukan pelanggan. Untuk menghindari penyimpangan ini, perbarui versi AWS Penyedia Terraform Anda ke salah satu versi berikut: 4.x rilis apa pun,, 3.76.1 atau. 2.70.4

# Memperbarui enkripsi sisi server untuk data yang ada
<a name="update-sse-encryption"></a>

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan objek secara otomatis dienkripsi dengan menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Pengaturan enkripsi default ini berlaku untuk semua objek baru di bucket Amazon S3 Anda.

Dengan menggunakan operasi `UpdateObjectEncryption` API, Anda dapat memperbarui jenis enkripsi sisi server dari objek terenkripsi yang ada secara atomik dalam bucket tujuan umum dari enkripsi sisi server dengan enkripsi terkelola Amazon S3 (SSE-S3) ke enkripsi sisi server dengan () kunci enkripsi (SSE-KMS). AWS Key Management Service AWS KMS Operasi `UpdateObjectEncryption` API menggunakan enkripsi [amplop untuk mengenkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping) ulang kunci data yang digunakan untuk mengenkripsi dan mendekripsi objek Anda dengan jenis enkripsi sisi server yang baru Anda tentukan. 

Amazon S3 melakukan pembaruan jenis enkripsi ini tanpa pergerakan data apa pun. Dengan kata lain, saat Anda menggunakan `UpdateObjectEncryption` operasi, data Anda tidak disalin, objek yang diarsipkan di S3 Glacier Flexible Retrieval atau S3 Glacier Deep Archive tidak dipulihkan, dan objek di kelas penyimpanan S3 Intelligent-Tiering tidak dipindahkan antar tingkatan. Selain itu, `UpdateObjectEncryption` operasi mempertahankan semua properti metadata objek, termasuk kelas penyimpanan, tanggal pembuatan, tanggal modifikasi terakhir ETag, dan properti checksum.

`UpdateObjectEncryption`Operasi ini didukung untuk semua kelas penyimpanan S3 yang didukung oleh bucket tujuan umum. Anda dapat menggunakan `UpdateObjectEncryption` operasi untuk melakukan hal berikut: 
+ Ubah objek terenkripsi dari enkripsi sisi server dengan enkripsi terkelola Amazon S3 (SSE-S3) ke enkripsi sisi server dengan () kunci enkripsi (SSE-KMS). AWS Key Management Service AWS KMS
+ Perbarui objek terenkripsi SSE-KMS tingkat objek untuk menggunakan Kunci Bucket S3, yang mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).
+ Ubah kunci KMS yang dikelola pelanggan yang digunakan untuk mengenkripsi data Anda sehingga Anda dapat mematuhi standar rotasi kunci kustom.

**catatan**  
Objek sumber yang tidak dienkripsi, atau dienkripsi dengan enkripsi sisi server dua lapis dengan AWS KMS keys (DSSE-KMS) atau kunci enkripsi yang disediakan pelanggan (SSE-C) tidak didukung oleh operasi ini.

`UpdateObjectEncryption`Operasi biasanya selesai dalam milidetik terlepas dari ukuran objek atau kelas penyimpanan, termasuk S3 Glacier Flexible Retrieval atau S3 Glacier Deep Archive. Operasi ini tidak dihitung sebagai akses untuk S3 Intelligent-Tiering, sehingga objek di tingkat Akses Jarang atau tingkat Akses Instan Arsip tidak akan secara otomatis kembali ke tingkat Akses Sering jika Anda mengubah jenis enkripsi sisi server objek Anda. 

`UpdateObjectEncryption`adalah operasi API tingkat objek (bidang data) yang dicatat ke log AWS CloudTrail akses server Amazon S3 dan peristiwa data. Untuk informasi selengkapnya, lihat [Opsi pencatatan untuk Amazon S3](logging-with-S3.md). 

 `UpdateObjectEncryption`Operasi ini dihargai sama dengan`PUT`,, `COPY``POST`, dan `LIST` permintaan (per 1.000 permintaan) dan selalu dikenakan biaya sebagai permintaan kelas penyimpanan Standar S3 terlepas dari kelas penyimpanan objek yang mendasarinya. Untuk informasi selengkapnya, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/).

## Pembatasan dan pertimbangan
<a name="update-sse-encryption-restrictions"></a>

Saat menggunakan `UpdateObjectEncryption` operasi, pembatasan dan pertimbangan berikut berlaku:
+ `UpdateObjectEncryption`Operasi tidak mendukung objek yang tidak dienkripsi atau objek yang dienkripsi dengan enkripsi sisi server dua lapis dengan (DSSE-KMS) atau kunci enkripsi yang disediakan pelanggan AWS KMS keys (SSE-C). Selain itu, Anda tidak dapat menentukan SSE-S3 sebagai permintaan jenis enkripsi baru yang diminta. `UpdateObjectEncryption`
+ Anda dapat menggunakan `UpdateObjectEncryption` operasi untuk memperbarui objek dalam bucket yang mengaktifkan Versi S3. Untuk memperbarui jenis enkripsi versi tertentu, Anda harus menentukan ID versi dalam `UpdateObjectEncryption` permintaan Anda. Jika Anda tidak menentukan ID versi, `UpdateObjectEncryption` permintaan akan bertindak pada versi objek saat ini. Untuk informasi selengkapnya tentang Penentuan Versi S3, lihat [Mempertahankan beberapa versi objek dengan Versi S3](Versioning.md).
+ `UpdateObjectEncryption`Operasi gagal pada objek apa pun yang memiliki mode retensi Kunci Objek S3 atau penahanan hukum yang diterapkan padanya. Jika objek memiliki periode retensi modus tata kelola atau penahanan hukum, Anda harus terlebih dahulu menghapus status Kunci Objek pada objek sebelum Anda mengeluarkan permintaan Anda. `UpdateObjectEncryption` Anda tidak dapat menggunakan `UpdateObjectEncryption` operasi dengan objek yang memiliki periode retensi mode kepatuhan Object Lock yang diterapkan padanya. Untuk informasi lebih lanjut tentang S3 Object Lock, lihat [Mengunci objek dengan Object Lock](object-lock.md).
+ `UpdateObjectEncryption`permintaan pada bucket sumber dengan replikasi langsung diaktifkan tidak akan memulai peristiwa replika di bucket tujuan. Jika Anda ingin mengubah jenis enkripsi objek di bucket sumber dan tujuan, Anda harus memulai `UpdateObjectEncryption` permintaan terpisah pada objek di bucket sumber dan tujuan.
+ Secara default, semua `UpdateObjectEncryption` permintaan yang menentukan kunci KMS yang dikelola pelanggan dibatasi untuk kunci KMS yang dimiliki oleh pemilik bucket. Akun AWS Jika Anda menggunakan AWS Organizations, Anda dapat meminta kemampuan untuk menggunakan yang AWS KMS keys dimiliki oleh akun anggota lain dalam organisasi Anda dengan menghubungi AWS Dukungan.
+ Jika Anda menggunakan Replikasi Batch S3 untuk mereplikasi kumpulan data lintas wilayah dan objek Anda sebelumnya memiliki jenis enkripsi sisi server yang diperbarui dari SSE-S3 ke SSE-KMS, Anda mungkin memerlukan izin tambahan. Di bucket wilayah sumber, Anda harus memiliki `kms:decrypt` izin. Kemudian, Anda akan memerlukan `kms:encrypt` izin `kms:decrypt` dan untuk bucket di wilayah tujuan. 
+ Anda harus memberikan ARN kunci KMS lengkap dalam `UpdateObjectEncryption` permintaan Anda. Anda tidak dapat menggunakan nama alias atau alias ARN. Anda dapat menentukan ARN Kunci KMS lengkap di AWS KMS Console atau menggunakan AWS KMS API. `DescribeKey`

## Izin yang diperlukan
<a name="update-sse-encryption-permissions"></a>

Untuk melakukan `UpdateObjectEncryption` operasi, Anda harus memiliki izin berikut: 
+ `s3:PutObject`
+ `s3:UpdateObjectEncryption`
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:ReEncrypt*`

Jika Anda menggunakan AWS Organizations, untuk menggunakan operasi ini dengan kunci KMS yang dikelola pelanggan dari orang lain Akun AWS dalam organisasi Anda, Anda harus memiliki izin. `organizations:DescribeAccount` Anda juga harus meminta kemampuan untuk menggunakan yang AWS KMS keys dimiliki oleh akun anggota lain dalam organisasi Anda dengan menghubungi AWS Dukungan.

Untuk melakukan `UpdateObjectEncryption` operasi, tambahkan kebijakan AWS Identity and Access Management (IAM) berikut ke peran IAM Anda. Untuk menggunakan kebijakan ini, ganti `amzn-s3-demo-bucket` dengan nama bucket tujuan umum Anda, dan ganti yang lain `user input placeholders` dengan informasi Anda sendiri.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowUpdateObjectEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:UpdateObjectEncryption",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*",
                "organizations:DescribeAccount"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

## Memperbarui enkripsi dalam jumlah besar
<a name="update-sse-encryption-bulk"></a>

Untuk memperbarui jenis enkripsi sisi server lebih dari satu objek Amazon S3 dengan satu permintaan, Anda dapat menggunakan Operasi Batch S3. Anda dapat menyediakan Operasi Batch S3 dengan daftar objek yang akan dioperasikan, atau Anda dapat mengarahkan Operasi Batch untuk menghasilkan metadata objek berdasarkan daftar objek, termasuk awalan, kelas penyimpanan, tanggal pembuatan, jenis enkripsi, ARN kunci KMS, atau status Kunci Bucket S3. Operasi Batch S3 akan memanggil masing-masing operasi API untuk melakukan operasi tertentu. Satu pekerjaan Operasi Batch dapat melakukan operasi tertentu pada miliaran objek dalam bucket yang berisi petabyte data. Untuk informasi selengkapnya tentang Operasi Batch, lihat[Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md). 

Operasi Batch S3 memiliki fitur melacak progres, mengirimkan notifikasi, dan menyimpan laporan penyelesaian terperinci dari semua tindakan, menyediakan pengalaman yang dikelola sepenuhnya, dapat diaudit, dan nirserver. Anda dapat menggunakan Operasi Batch S3 melalui konsol Amazon S3 AWS Command Line Interface ,AWS CLI( AWS SDKs), atau Amazon S3 REST API. Untuk informasi selengkapnya, lihat [Perbarui enkripsi objek](batch-ops-update-encryption.md).

## Memperbarui enkripsi untuk objek
<a name="update-sse-encryption-single-object"></a>

Anda dapat memperbarui jenis enkripsi sisi server untuk objek melalui AWS Command Line Interface (AWS CLI) AWS SDKs, atau Amazon S3 REST API. 

### Memperbarui enkripsi untuk suatu objek
<a name="update-sse-encryption-single-object-procedure"></a>

#### Menggunakan AWS CLI
<a name="update-sse-encryption-single-object-cli"></a>

Untuk menjalankan perintah berikut, Anda harus AWS CLI menginstal dan mengkonfigurasi. Jika Anda belum menginstal, lihat [Menginstal atau memperbarui ke versi terbaru dari AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) *Panduan AWS Command Line Interface Pengguna*. AWS CLI 

Atau, Anda dapat menjalankan AWS CLI perintah dari konsol dengan menggunakan AWS CloudShell. AWS CloudShell adalah shell pra-otentikasi berbasis browser yang dapat Anda luncurkan langsung dari file. Konsol Manajemen AWS Untuk informasi lebih lanjut, lihat [Apa itu CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) dan [Memulai dengan AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) di *Panduan AWS CloudShell Pengguna*.

**Untuk memperbarui enkripsi untuk objek dengan menggunakan AWS CLI**

Untuk menggunakan perintah contoh berikut, ganti `user input placeholders` dengan informasi Anda sendiri. 

1. Gunakan perintah berikut untuk memperbarui enkripsi untuk satu objek (`index.html`) di bucket tujuan umum Anda (misalnya,`amzn-s3-demo-bucket`) untuk menggunakan SSE-KMS dengan Kunci Bucket S3:

   ```
   aws s3api update-object-encryption \
   --bucket amzn-s3-demo-bucket \
   --key index.html \
   --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
   ```
**catatan**  
Anda harus menentukan Nama Sumber Daya AWS KMS key Amazon (ARN) lengkap. ID kunci KMS dan alias kunci KMS tidak didukung.

1. Jalankan `head-object` perintah untuk melihat jenis enkripsi yang diperbarui dari objek Anda:

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html
   ```

#### Penggunaan API REST
<a name="update-sse-encryption-single-object-rest-api"></a>

Anda dapat mengirim permintaan REST untuk memperbarui enkripsi objek. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html).

#### Menggunakan AWS SDKs
<a name="update-sse-encryption-single-object-sdk"></a>

Anda dapat menggunakan AWS SDKs untuk memperbarui enkripsi untuk suatu objek. Untuk informasi selengkapnya, lihat [daftar yang didukung SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html#API_UpdateObjectEncryption_SeeAlso).

------
#### [ Java ]

**Example**  
 AWS SDK for Java 2.x Contoh berikut memperbarui jenis enkripsi ke SSE-KMS untuk objek dalam bucket tujuan umum.  

```
    public void updateObjectEncryption(String bucketName,
                                       String objectKey,
                                       String versionId,
                                       String kmsKeyArn,
                                       boolean bucketKeyEnabled) {
        // Create the target object encryption type.
        ObjectEncryption objectEncryption = ObjectEncryption.builder()
                .ssekms(SSEKMSEncryption.builder()
                        .kmsKeyArn(kmsKeyArn)
                        .bucketKeyEnabled(bucketKeyEnabled)
                        .build())
                .build();

        // Create the UpdateObjectEncryption request.
        UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .versionId(versionId)
                .objectEncryption(objectEncryption)
                .build();

        // Update the object encryption.
        try {
            getS3Client().updateObjectEncryption(request);
            logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName);
        } catch (S3Exception e) {
            logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(),
                    e.awsErrorDetails().errorCode());
            throw e;
        }
    }
```

------
#### [ Python ]

**Example**  
 AWS SDK untuk Python (Boto3) Contoh berikut menunjukkan cara memperbarui jenis enkripsi ke SSE-KMS untuk objek dalam bucket tujuan umum.   

```
response = client.update_object_encryption(
    Bucket='string',
    Key='string',
    VersionId='string',
    ObjectEncryption={
        'SSEKMS': {
                'KMSKeyArn': 'string',
                'BucketKeyEnabled': True|False
        }
    }
)
```

------

# Menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Semua unggahan objek baru ke bucket Amazon S3 dienkripsi secara default dengan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3).

Enkripsi sisi-server melindungi data diam. Amazon S3 mengenkripsi setiap objek dengan kunci unik. Sebagai perlindungan tambahan, ia mengenkripsi kunci itu sendiri dengan kunci yang diputar secara berkala. Enkripsi sisi server Amazon S3 menggunakan Galois/Counter Mode Standar Enkripsi Lanjutan (AES-GCM) 256-bit untuk mengenkripsi semua objek yang diunggah.

Tidak ada biaya tambahan untuk menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Namun, permintaan untuk mengonfigurasi fitur enkripsi default dikenakan biaya permintaan Amazon S3 standar. Untuk informasi tentang harga, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/).

Jika Anda mengharuskan unggahan data dienkripsi hanya menggunakan kunci terkelola Amazon S3, Anda dapat menggunakan kebijakan bucket berikut. Misalnya, kebijakan bucket berikut menolak izin untuk mengunggah objek kecuali jika permintaan mencakup header `x-amz-server-side-encryption` untuk meminta enkripsi di sisi server:

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

****  

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

------

**catatan**  
Enkripsi di sisi server hanya mengenkripsi data objek, bukan metadata objek. 

## Dukungan API untuk enkripsi di sisi server
<a name="APISupportforServer-SideEncryption"></a>

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi sisi server yang akan digunakan dalam `PUT` permintaan S3, atau memperbarui konfigurasi enkripsi default di bucket tujuan. 

Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam `PUT` permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), enkripsi sisi server dua lapis dengan kunci (DSSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan pelanggan (SSE-C). Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di dalam bucket tujuan, Anda dapat menggunakan SSE-KMS atau DSSE-KMS.

Untuk informasi selengkapnya tentang mengubah konfigurasi enkripsi default untuk bucket tujuan umum Anda, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md). 

Saat Anda mengubah konfigurasi enkripsi default bucket ke SSE-KMS, jenis enkripsi objek Amazon S3 yang ada di bucket tidak akan diubah. Untuk mengubah jenis enkripsi objek yang sudah ada sebelumnya setelah memperbarui konfigurasi enkripsi default ke SSE-KMS, Anda dapat menggunakan Operasi Batch Amazon S3. Anda menyediakan Operasi Batch S3 dengan daftar objek, dan Operasi Batch memanggil operasi API masing-masing. Anda dapat menggunakan [Menyalin objek](batch-ops-copy-object.md) tindakan untuk menyalin objek yang ada, yang menuliskannya kembali ke bucket yang sama dengan objek terenkripsi SSE-KMS. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan posting *Blog AWS Penyimpanan* [Cara mengenkripsi objek yang ada secara surut di Amazon S3 menggunakan S3 Inventory, Amazon Athena, dan Operasi Batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/). 

Untuk mengkonfigurasi enkripsi sisi server dengan menggunakan REST pembuatan objek APIs, Anda harus memberikan header permintaan. `x-amz-server-side-encryption` Untuk informasi tentang REST APIs, lihat[Penggunaan API REST](specifying-s3-encryption.md#SSEUsingRESTAPI).

Amazon S3 berikut APIs mendukung header ini:
+ **Operasi PUT**–Tentukan header permintaan saat mengunggah data menggunakan API `PUT`. Untuk informasi lebih lanjut, lihat [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Mulai Unggahan Multibagian**–Menentukan header dalam permintaan awal saat mengunggah objek besar menggunakan operasi API multibagian. Untuk informasi lebih lanjut, lihat [Mulai Unggahan Multibagian](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **Operasi COPY**–Saat Anda menyalin objek, Anda memiliki objek sumber dan objek target. Untuk informasi lebih lanjut, lihat [PUT Objek-Salin](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**catatan**  
Saat menggunakan operasi `POST` untuk mengunggah objek, alih-alih memberikan header permintaan, Anda memberikan informasi yang sama di kolom formulir. Untuk informasi lebih lanjut, lihat [Objek POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

 AWS SDKs Juga menyediakan pembungkus APIs yang dapat Anda gunakan untuk meminta enkripsi sisi server. Anda juga dapat menggunakan Konsol Manajemen AWS untuk mengunggah objek dan meminta enkripsi sisi server.

Untuk informasi lebih umum, lihat [AWS KMS konsep](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) dalam *AWS Key Management Service Panduan Pengembang*.

**Topics**
+ [

## Dukungan API untuk enkripsi di sisi server
](#APISupportforServer-SideEncryption)
+ [

# Menentukan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)
](specifying-s3-encryption.md)

# Menentukan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)
<a name="specifying-s3-encryption"></a>

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi sisi server yang akan digunakan dalam `PUT` permintaan S3, atau memperbarui konfigurasi enkripsi default di bucket tujuan. 

Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam `PUT` permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), enkripsi sisi server dua lapis dengan kunci (DSSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan pelanggan (SSE-C). Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di dalam bucket tujuan, Anda dapat menggunakan SSE-KMS atau DSSE-KMS.

Untuk informasi selengkapnya tentang mengubah konfigurasi enkripsi default untuk bucket tujuan umum Anda, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md). 

Saat Anda mengubah konfigurasi enkripsi default bucket ke SSE-KMS, jenis enkripsi objek Amazon S3 yang ada di bucket tidak akan diubah. Untuk mengubah jenis enkripsi objek yang sudah ada sebelumnya setelah memperbarui konfigurasi enkripsi default ke SSE-KMS, Anda dapat menggunakan Operasi Batch Amazon S3. Anda menyediakan Operasi Batch S3 dengan daftar objek, dan Operasi Batch memanggil operasi API masing-masing. Anda dapat menggunakan [Menyalin objek](batch-ops-copy-object.md) tindakan untuk menyalin objek yang ada, yang menuliskannya kembali ke bucket yang sama dengan objek terenkripsi SSE-KMS. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan posting *Blog AWS Penyimpanan* [Cara mengenkripsi objek yang ada secara surut di Amazon S3 menggunakan S3 Inventory, Amazon Athena, dan Operasi Batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/). 

Anda dapat menentukan SSE-S3 dengan menggunakan konsol S3, REST APIs,, dan (). AWS SDKs AWS Command Line Interface AWS CLI Untuk informasi selengkapnya, lihat [Mengatur perilaku enkripsi sisi server default untuk bucket Amazon S3](bucket-encryption.md).

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

Topik ini menjelaskan cara mengatur atau mengubah jenis enkripsi objek dengan menggunakan Konsol Manajemen AWS. Saat menyalin objek dengan menggunakan konsol, Amazon S3 menyalin objek seperti apa adanya. Itu berarti bahwa jika objek sumber dienkripsi, objek target juga dienkripsi. Anda dapat menggunakan konsol untuk menambahkan atau mengubah enkripsi untuk suatu objek. 

**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 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 dengan kunci terkelola Amazon S3 (SSE-S3)**. SSE-S3 menggunakan salah satu penyandian blok terkuat—Advanced Encryption Standard 256-bit (AES-256) untuk mengenkripsi setiap objek. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

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="SSEUsingRESTAPI"></a>

Saat pembuatan objek—yaitu, saat Anda mengunggah objek baru atau membuat salinan objek yang sudah ada—Anda dapat menentukan apakah Anda ingin Amazon S3 mengenkripsi data Anda dengan kunci yang dikelola Amazon S3 (SSE-S3) dengan menambahkan header ke permintaan `x-amz-server-side-encryption`. Mengatur nilai header ke algoritma enkripsi `AES256`, yang didukung Amazon S3. Amazon S3 mengonfirmasi bahwa objek Anda disimpan dengan SSE-S3 dengan mengembalikan header respons `x-amz-server-side-encryption`. 

Operasi API unggahan REST berikut ini menerima header permintaan `x-amz-server-side-encryption`.
+ [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Objek-Salin](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [Objek POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Mulai Unggahan Multibagian](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Saat mengunggah objek besar menggunakan operasi API unggahan multibagian, Anda dapat menentukan enkripsi di sisi server dengan menambahkan `x-amz-server-side-encryption` header ke permintaan Mulai Pengunggahan Multibagian. 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.

Header respons dari operasi API REST berikut mengembalikan `x-amz-server-side-encryption` header saat objek disimpan menggunakan SSE-S3. 
+ [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Objek-Salin](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [Objek POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Mulai Unggahan Multibagian](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Unggah Bagian](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Unggah Bagian-Salin](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Selesaikan Unggahan Multibagian](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Dapatkan Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Head Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**catatan**  
Jangan mengirim header permintaan enkripsi untuk `GET` permintaan dan `HEAD` minta jika objek Anda menggunakan SSE-S3, atau Anda akan mendapatkan kesalahan kode status HTTP 400 (Permintaan Buruk).

## Menggunakan AWS SDKs
<a name="s3-using-sdks"></a>

Saat menggunakan AWS SDKs, Anda dapat meminta Amazon S3 untuk menggunakan enkripsi sisi server dengan kunci enkripsi terkelola Amazon S3 (SSE-S3). Bagian ini memberikan contoh penggunaan AWS SDKs dalam berbagai bahasa. Untuk informasi tentang lainnya SDKs, buka [Kode Sampel dan Perpustakaan](https://aws.amazon.com/code). 

------
#### [ Java ]

Ketika Anda menggunakan AWS SDK untuk Java untuk meng-upload objek, Anda dapat menggunakan SSE-S3 untuk mengenkripsi itu. Untuk meminta enkripsi di sisi server, gunakan properti `ObjectMetadata` dari `PutObjectRequest` untuk menetapkan header permintaan `x-amz-server-side-encryption`. Saat Anda memanggil `putObject()` metode dari `AmazonS3Client`, Amazon S3 mengenkripsi dan menyimpan data.

Anda juga dapat meminta enkripsi SSE-S3 saat mengunggah objek menggunakan operasi API pengunggahan multibagian: 
+ Saat menggunakan operasi API pengunggahan multibagian tingkat tinggi, Anda menggunakan metode `TransferManager` untuk menerapkan enkripsi di sisi server ke objek saat Anda mengunggahnya. Anda dapat menggunakan metode pengunggahan apa saja yang menggunakan `ObjectMetadata` sebagai parameter. Untuk informasi selengkapnya, lihat [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md).
+ Saat menggunakan operasi API pengunggahan multibagian tingkat rendah, Anda menentukan enkripsi di sisi server saat Anda memulai pengunggahan multibagian. Anda menambahkan properti `ObjectMetadata` dengan memanggil metode `InitiateMultipartUploadRequest.setObjectMetadata()`. Untuk informasi selengkapnya, lihat [Menggunakan AWS SDKs (API tingkat rendah)](mpu-upload-object.md#mpu-upload-low-level).

Anda tidak dapat langsung mengubah status enkripsi suatu objek (mengenkripsi objek yang tidak dienkripsi atau mendekripsi objek yang dienkripsi). Untuk mengubah status enkripsi objek, Anda membuat salinan objek, dengan menentukan status enkripsi yang diinginkan untuk salinan, lalu hapus objek asli. Amazon S3 mengenkripsi objek yang disalin hanya jika Anda secara eksplisit meminta enkripsi di sisi server. Untuk meminta enkripsi objek yang disalin melalui API Java, gunakan properti `ObjectMetadata` untuk menentukan enkripsi di sisi server dalam `CopyObjectRequest`.

**Example Contoh**  
Contoh berikut menunjukkan cara menetapkan enkripsi di sisi server menggunakan AWS SDK untuk Java. Itu menunjukkan cara melakukan tugas berikut:  
+ Unggah objek baru menggunakan SSE-S3.
+ Ubah status enkripsi objek (dalam contoh ini, mengenkripsi objek yang tidak dienkripsi sebelumnya) dengan membuat salinan objek.
+ Periksa status enkripsi objek.
Untuk informasi lebih lanjut tentang enkripsi di sisi server, lihat [Penggunaan API REST](#SSEUsingRESTAPI). Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat [Memulai](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) di Panduan AWS SDK untuk Java Pengembang.  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Saat mengunggah sebuah objek, Anda dapat mengarahkan Amazon S3 untuk mengenkripsinya. Untuk mengubah status enkripsi objek yang sudah ada, Anda membuat salinan objek dan menghapus objek sumber. Secara default, operasi penyalinan mengenkripsi target hanya jika Anda secara eksplisit meminta enkripsi di sisi server objek target. Untuk menentukan SSE-S3 di `CopyObjectRequest`, tambahkan yang berikut ini:

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Untuk sampel kerja tentang cara menyalin objek, lihat [Menggunakan AWS SDKs](copy-object.md#CopyingObjectsUsingSDKs). 

Contoh berikut mengunggah objek. Dalam permintaan, contoh tersebut mengarahkan Amazon S3 untuk mengenkripsi objek. Contoh tersebut kemudian mengambil metadata objek dan memverifikasi metode enkripsi yang digunakan. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat [Memulai SDK for .NET di AWSAWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

Topik ini menunjukkan cara menggunakan kelas dari versi 3 AWS SDK untuk PHP untuk menambahkan SSE-S3 ke objek yang Anda unggah ke Amazon S3. Untuk informasi selengkapnya tentang AWS SDK for Ruby API, [AWS buka SDK for Ruby](https://docs.aws.amazon.com/sdkforruby/api/index.html) - Versi 2.

Untuk mengunggah objek ke Amazon S3, gunakan metode [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Untuk menambahkan `x-amz-server-side-encryption` header permintaan ke permintaan pengunggahan, tentukan parameter `ServerSideEncryption` dengan nilai `AES256`, seperti yang ditunjukkan dalam contoh kode berikut. Untuk informasi lebih lanjut tentang permintaan enkripsi di sisi server, lihat [Penggunaan API REST](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

Sebagai respons, Amazon S3 mengembalikan header `x-amz-server-side-encryption` dengan nilai algoritma enkripsi yang digunakan untuk mengenkripsi data objek Anda. 

Saat mengunggah objek besar dengan menggunakan operasi API unggahan multibagian, Anda dapat menentukan SSE-S3 untuk objek yang Anda unggah, sebagai berikut ini: 
+ Saat Anda menggunakan operasi API unggahan multibagian tingkat rendah, tentukan enkripsi sisi server saat Anda memanggil metode [Aws\$1 S3\$1 S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload):: (). createMultipartUpload Untuk menambahkan header permintaan `x-amz-server-side-encryption` untuk permintaan Anda, tentukan parameter `array` kunci `ServerSideEncryption` dengan nilai `AES256`. Untuk informasi selengkapnya tentang operasi API unggahan multibagian tingkat rendah, lihat [Menggunakan AWS SDKs (API tingkat rendah)](mpu-upload-object.md#mpu-upload-low-level).
+ Saat Anda menggunakan operasi API unggahan multibagian tingkat tinggi, tentukan enkripsi sisi server dengan menggunakan `ServerSideEncryption` parameter operasi API. [CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) Untuk contoh penggunaan metode `setOption()` dengan operasi API unggahan multibagian tingkat tinggi, lihat [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md).

Untuk menentukan status enkripsi objek yang ada, ambil metadata objek dengan memanggil metode [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject) seperti yang ditunjukkan dalam contoh kode PHP berikut.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Untuk mengubah status enkripsi objek yang sudah ada, buat salinan objek menggunakan metode [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) dan menghapus objek sumber. Secara default, `copyObject()` tidak mengenkripsi target kecuali jika Anda secara eksplisit meminta enkripsi di sisi server objek tujuan menggunakan parameter `ServerSideEncryption` dengan nilai `AES256`. Contoh kode PHP berikut membuat salinan objek dan menambahkan enkripsi server-side ke objek yang tersalin.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Untuk informasi selengkapnya, lihat topik berikut:
+ [AWS SDK untuk PHP untuk Amazon S3 Aws\$1 S3\$1 S3Kelas Klien](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [Dokumentasi AWS SDK untuk PHP](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Saat menggunakan AWS SDK untuk Ruby untuk mengunggah objek, Anda dapat menentukan bahwa objek disimpan terenkripsi saat istirahat dengan SSE-S3. Saat Anda membaca kembali, objek tersebut akan didekripsi secara otomatis.

Contoh AWS SDK untuk Ruby Versi 3 berikut menunjukkan cara menentukan bahwa file yang diunggah ke Amazon S3 dienkripsi saat istirahat.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Contoh kode berikut menunjukkan cara menentukan status enkripsi objek yang ada.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Jika enkripsi di sisi server tidak digunakan untuk objek yang disimpan di Amazon S3, metode tersebut akan menghasilkan `null`.

Untuk mengubah status enkripsi objek yang ada, buat salinan objek tersebut dan hapus objek sumber. Secara default, metode penyalinan tidak mengenkripsi target kecuali Anda secara eksplisit meminta enkripsi di sisi server. Anda dapat meminta enkripsi objek target dengan menentukan nilai `server_side_encryption` dalam argumen hash opsi, seperti yang ditunjukkan dalam contoh kode Ruby berikut. Contoh kode mendemonstrasikan cara menyalin sebuah objek dan mengenkripsi salinan dengan SSE-S3. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## Menggunakan AWS CLI
<a name="sse-s3-aws-cli"></a>

Untuk menentukan SSE-S3 saat Anda mengunggah objek dengan menggunakan AWS CLI, gunakan contoh berikut.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Untuk informasi selengkapnya, lihat [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) dalam *Referensi AWS CLI *. [Untuk menentukan SSE-S3 saat Anda menyalin objek dengan menggunakan AWS CLI, lihat copy-object.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)

## Menggunakan CloudFormation
<a name="ss3-s3-cfn"></a>

*Untuk contoh pengaturan enkripsi menggunakan CloudFormation, lihat [Membuat bucket dengan enkripsi default](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) dan contoh [Membuat bucket dengan menggunakan enkripsi AWS KMS sisi server dengan S3 Bucket Key](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) dalam `AWS::S3::Bucket ServerSideEncryptionRule` topik di Panduan Pengguna.AWS CloudFormation * 

# Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)
<a name="UsingKMSEncryption"></a>

**penting**  
Amazon S3 sudah menerapkan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi bagi setiap bucket di Amazon S3. Mulai 5 Januari 2023, semua unggahan objek baru ke Amazon S3 secara otomatis akan dienkripsi tanpa biaya tambahan dan tidak akan berdampak pada kinerja. Status enkripsi otomatis untuk konfigurasi enkripsi default bucket S3 dan untuk unggahan objek baru tersedia di CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS CLI AWS SDKs Untuk informasi selengkapnya, lihat [FAQ enkripsi default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Enkripsi di sisi server adalah enkripsi data di tempat tujuan oleh aplikasi atau layanan yang menerimanya.

Amazon S3 secara otomatis mengaktifkan enkripsi di sisi server dengan kunci yang dikelola Amazon S3 (SSE-S3) untuk unggah objek baru.

Kecuali Anda menentukan sebaliknya, bucket menggunakan SSE-S3 secara default untuk mengenkripsi objek. Namun, Anda dapat memilih untuk mengonfigurasi bucket untuk menggunakan enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS) sebagai gantinya. Untuk informasi selengkapnya, lihat [Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS](specifying-kms-encryption.md).

AWS KMS adalah layanan yang menggabungkan perangkat keras dan perangkat lunak yang aman dan sangat tersedia untuk menyediakan sistem manajemen kunci yang diskalakan untuk cloud. Amazon S3 menggunakan enkripsi sisi server dengan AWS KMS (SSE-KMS) untuk mengenkripsi data objek S3 Anda. Juga, ketika SSE-KMS diminta untuk objek, checksum S3 (sebagai bagian dari metadata objek) disimpan dalam bentuk terenkripsi. Untuk informasi selengkapnya tentang checksum, silakan lihat [Memeriksa integritas objek di Amazon S3](checking-object-integrity.md).

Jika Anda menggunakan kunci KMS, Anda dapat menggunakan AWS KMS melalui [Konsol Manajemen AWS](https://console.aws.amazon.com/kms)atau [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) untuk melakukan hal berikut: 
+ Membuat, melihat, mengedit, memantau, mengaktifkan atau menonaktifkan, memutar, dan menjadwalkan penghapusan kunci KMS secara terpusat.
+ Menentukan kebijakan yang mengendalikan bagaimana dan oleh siapa kunci KMS digunakan.
+ Audit penggunaan kunci KMS untuk penggunaan yang benar. Audit didukung oleh [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) tetapi tidak oleh [AWS KMS Konsol;](https://console.aws.amazon.com/kms).



Kontrol keamanan AWS KMS dapat membantu Anda memenuhi persyaratan kepatuhan terkait enkripsi. Anda dapat menggunakan kunci KMS ini untuk melindungi data Anda di bucket Amazon S3. Saat Anda menggunakan enkripsi SSE-KMS dengan bucket S3, AWS KMS keys harus berada di Wilayah yang sama dengan bucket.

Ada biaya tambahan untuk penggunaan AWS KMS keys. Untuk informasi lebih umum, lihat konsep [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) dalam *AWS Key Management Service Panduan Pengguna* dan [AWS KMS harga](https://aws.amazon.com/kms/pricing).

Untuk petunjuk tentang mengizinkan pengguna IAM mengakses bucket terenkripsi KMS, lihat Bucket [Amazon S3 saya memiliki enkripsi default menggunakan kunci khusus. AWS KMS Bagaimana cara mengizinkan pengguna mengunduh dan mengunggah ke bucket?](https://repost.aws/knowledge-center/s3-bucket-access-default-encryption) di pusat AWS re:Post pengetahuan.

**Izin**  
Agar berhasil membuat `PutObject` permintaan untuk mengenkripsi objek dengan AWS KMS kunci ke Amazon S3, Anda `kms:GenerateDataKey` memerlukan izin pada kunci tersebut. Untuk mengunduh objek yang dienkripsi dengan AWS KMS key, Anda memerlukan `kms:Decrypt` izin untuk kunci tersebut. Untuk [melakukan unggahan multibagian](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions) untuk mengenkripsi objek dengan AWS KMS key, Anda harus memiliki `kms:GenerateDataKey` dan `kms:Decrypt` izin untuk kunci tersebut.

**penting**  
Tinjau dengan cermat izin yang diberikan dalam kebijakan kunci KMS Anda. Selalu batasi izin kebijakan kunci KMS yang dikelola pelanggan hanya untuk kepala sekolah dan AWS layanan IAM yang harus mengakses tindakan kunci yang relevan. AWS KMS Untuk informasi selengkapnya, lihat [Kebijakan utama di AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

**Topics**
+ [

## AWS KMS keys
](#aws-managed-customer-managed-keys)
+ [

## Kunci Bucket Amazon S3
](#sse-kms-bucket-keys)
+ [

## Membutuhkan enkripsi di sisi server
](#require-sse-kms)
+ [

## Konteks enkripsi
](#encryption-context)
+ [

## Mengirim permintaan untuk objek AWS KMS terenkripsi
](#aws-signature-version-4-sse-kms)
+ [

# Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS
](specifying-kms-encryption.md)
+ [

# Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3
](bucket-key.md)

## AWS KMS keys
<a name="aws-managed-customer-managed-keys"></a>

Bila Anda menggunakan enkripsi sisi server dengan AWS KMS (SSE-KMS), Anda dapat menggunakan kunci [AWS terkelola default, atau Anda dapat menentukan kunci terkelola](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) [pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) yang telah Anda buat. AWS KMS mendukung *enkripsi amplop*. S3 menggunakan AWS KMS fitur untuk *enkripsi amplop* untuk lebih melindungi data Anda. Enkripsi amplop adalah praktik mengenkripsi data teks biasa Anda dengan kunci data, dan kemudian mengenkripsi kunci data itu dengan kunci KMS. Untuk informasi selengkapnya tentang enkripsi amplop, lihat [ Enkripsi amplop](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#enveloping) di *Panduan Developer AWS Key Management Service *.

Jika Anda tidak menentukan kunci terkelola pelanggan, Amazon S3 secara otomatis membuat saat pertama kali Anda Akun AWS menambahkan objek yang dienkripsi dengan SSE-KMS ke bucket. Kunci yang dikelola AWS Secara default, Amazon S3 menggunakan kunci KMS ini untuk SSE-KMS. 

**catatan**  
Objek yang dienkripsi menggunakan SSE-KMS dengan [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) tidak dapat dibagikan lintas akun. Jika Anda perlu membagikan data lintas akun SSE-KMS, Anda harus menggunakan kunci yang dikelola [pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) dari. AWS KMS

Jika Anda ingin menggunakan CMK untuk SSE-KMS, Anda dapat membuat CMK simetris sebelum Anda mengonfigurasi SSE-KMS. Kemudian, ketika Anda mengonfigurasi SSE-KMS untuk bucket Anda, Anda dapat menentukan CMK saat ini. Untuk informasi selengkapnya tentang kunci enkripsi simetris, lihat [Kunci KMS enkripsi simetris](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) dalam *Panduan Pengembang AWS Key Management Service *.

Membuat CMK memberikan Anda lebih banyak fleksibilitas dan kendali atas pelanggan. Misalnya, Anda dapat membuat, memutar, dan menonaktifkan CMK. Anda juga dapat menentukan kontrol akses dan mengaudit CMK yang Anda gunakan untuk melindungi data Anda. Untuk informasi selengkapnya tentang kunci yang AWS dikelola dan dikelola [pelanggan, lihat Kunci dan AWS kunci](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) pelanggan di *Panduan AWS Key Management Service Pengembang*.

**catatan**  
Saat Anda menggunakan enkripsi di sisi server dengan CMK yang disimpan di penyimpanan kunci eksternal, tidak seperti kunci KMS standar, Anda bertanggung jawab untuk memastikan ketersediaan dan ketahanan material kunci Anda. Untuk informasi selengkapnya tentang penyimpanan kunci eksternal dan cara mereka mengubah model tanggung jawab bersama, lihat [Penyimpanan kunci eksternal](https://docs.aws.amazon.com//kms/latest/developerguide/keystore-external.html) di *Panduan AWS Key Management Service Pengembang*.

### Menggunakan enkripsi SSE-KMS untuk operasi lintas akun
<a name="sse-kms-cross-account-operations"></a>

Saat menggunakan enkripsi untuk operasi lintas akun, perhatikan hal berikut:
+ Jika Nama Sumber Daya AWS KMS key Amazon (ARN) atau alias tidak disediakan pada waktu permintaan atau melalui konfigurasi enkripsi default bucket, Kunci yang dikelola AWS (`aws/s3`) dari akun pengunggahan digunakan untuk enkripsi dan diperlukan untuk dekripsi.
+ Kunci yang dikelola AWS (`aws/s3`) dapat digunakan sebagai kunci KMS Anda untuk operasi lintas akun saat prinsip pengunggahan dan akses AWS Identity and Access Management (IAM) berasal dari yang sama. Akun AWS
+ Jika Anda ingin memberikan akses lintas akun ke objek S3 Anda, gunakan CMK. Anda dapat mengonfigurasi kebijakan CMK untuk mengizinkan akses dari akun lain.
+ Jika Anda menentukan kunci KMS yang dikelola pelanggan, kami sarankan untuk menggunakan ARN kunci KMS yang memenuhi syarat sepenuhnya. Jika Anda menggunakan alias kunci KMS sebagai gantinya, AWS KMS selesaikan kunci dalam akun pemohon. Perilaku ini dapat menghasilkan data yang dienkripsi dengan kunci KMS milik pemohon, dan bukan pemilik bucket.
+ Anda harus menentukan kunci yang kepada Anda (pemohon) telah diberikan izin `Encrypt`. Untuk informasi selengkapnya, lihat [Mengizinkan pengguna di akun lain untuk menggunakan kunci KMS untuk operasi kriptografi](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) di *Panduan Pengembang AWS Key Management Service *.

Untuk informasi selengkapnya tentang kapan menggunakan kunci terkelola pelanggan dan kunci KMS AWS terkelola, lihat [Haruskah saya menggunakan Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi objek saya di Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

### Alur kerja enkripsi SSE-KMS
<a name="sse-kms-encryption-workflow"></a>

Jika Anda memilih untuk mengenkripsi data menggunakan Kunci yang dikelola AWS atau kunci yang dikelola pelanggan, AWS KMS dan Amazon S3 melakukan tindakan enkripsi amplop berikut:

1. Amazon S3 meminta [ kunci data](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#data-keys) plaintext dan salinan kunci yang dienkripsi di bawah kunci KMS yang ditentukan.

1. AWS KMS menghasilkan kunci data, mengenkripsinya di bawah kunci KMS, dan mengirimkan kunci data teks biasa dan kunci data terenkripsi ke Amazon S3.

1. Amazon S3 mengenkripsi data menggunkaan kunci data dan menghapus kunci plaintext dari memori sesegera mungkin setelah digunakan.

1. Amazon S3 menyimpan kunci data terenkripsi sebagai metadata dengan data terenkripsi.

Saat Anda meminta agar data Anda didekripsi, Amazon S3 AWS KMS dan lakukan tindakan berikut:

1. Amazon S3 mengirimkan kunci data terenkripsi ke AWS KMS dalam permintaan. `Decrypt`

1. AWS KMS mendekripsi kunci data terenkripsi dengan menggunakan kunci KMS yang sama dan mengembalikan kunci data teks biasa ke Amazon S3.

1. Amazon S3 mendekripsi data terenkripsi, menggunakan kunci data teks biasa, dan menghapus kunci data teks biasa dari memori sesegera mungkin.

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

### Mengaudit enkripsi SSE-KMS
<a name="sse-kms-encryption-audit"></a>

Untuk mengidentifikasi permintaan yang menentukan SSE-KMS, Anda dapat menggunakan metrik **Semua permintaan SSE-KMS** dan **% semua permintaan SSE-KMS** dalam metrik Lensa Penyimpanan Amazon S3. Lensa Penyimpanan S3 adalah fitur analisis penyimpanan cloud yang dapat Anda gunakan untuk mendapatkan visibilitas seluruh organisasi ke dalam penggunaan dan aktivitas penyimpanan objek. [Anda juga dapat menggunakan jumlah bucket berkemampuan SSE-KMS dan bucket berkemampuan% SSE-KMS untuk memahami jumlah bucket yang (SSE-KMS) untuk enkripsi bucket default.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html) Untuk informasi selengkapnya, lihat [ Menilai aktivitas penyimpanan dan penggunaan Anda dengan Lensa Penyimpanan S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html). Untuk daftar lengkap metrik, lihat [ Glosarium metrik Lensa Penyimpanan S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html).

Untuk mengaudit penggunaan AWS KMS kunci Anda untuk data terenkripsi SSE-KMS Anda, Anda dapat menggunakan log. AWS CloudTrail Anda bisa mendapatkan wawasan tentang [operasi kriptografi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) Anda, seperti [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html)dan [https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html). CloudTrail mendukung banyak [nilai atribut](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) untuk memfilter pencarian Anda, termasuk nama acara, nama pengguna, dan sumber acara. 

## Kunci Bucket Amazon S3
<a name="sse-kms-bucket-keys"></a>

Saat mengonfigurasi enkripsi sisi server menggunakan AWS KMS (SSE-KMS), Anda dapat mengonfigurasi bucket untuk menggunakan S3 Bucket Keys untuk SSE-KMS. Menggunakan kunci tingkat ember untuk SSE-KMS dapat mengurangi biaya AWS KMS permintaan Anda hingga 99 persen dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS

Ketika Anda mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru, AWS KMS menghasilkan kunci tingkat bucket yang digunakan untuk membuat [kunci data](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) untuk objek dalam bucket. Kunci Bucket S3 ini digunakan untuk jangka waktu terbatas dalam Amazon S3, semakin mengurangi kebutuhan Amazon S3 untuk membuat permintaan AWS KMS untuk menyelesaikan operasi enkripsi. Untuk informasi lebih lanjut tentang menggunakan Kunci Bucket S3, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

## Membutuhkan enkripsi di sisi server
<a name="require-sse-kms"></a>

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-aws-kms-key-id` yang meminta enkripsi di sisi server dengan SSE-KMS.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"PutObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "Null":{
               "s3:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

Untuk mengharuskan seseorang AWS KMS key digunakan untuk mengenkripsi objek dalam ember, Anda dapat menggunakan kunci `s3:x-amz-server-side-encryption-aws-kms-key-id` kondisi. Untuk menentukan kunci KMS, Anda harus menggunakan kunci Amazon Resource Name (ARN) yang ada dalam `arn:aws:kms:region:acct-id:key/key-id` format. AWS Identity and Access Management tidak memvalidasi jika string untuk `s3:x-amz-server-side-encryption-aws-kms-key-id` ada. 

**catatan**  
Saat mengunggah objek, Anda dapat menentukan kunci KMS dengan menggunakan `x-amz-server-side-encryption-aws-kms-key-id` header atau mengandalkan [konfigurasi enkripsi bucket default](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html) Anda. Jika PutObject permintaan Anda menentukan `aws:kms` di `x-amz-server-side-encryption` header, tetapi tidak menentukan `x-amz-server-side-encryption-aws-kms-key-id` header, maka Amazon S3 mengasumsikan bahwa Anda ingin menggunakan. Kunci yang dikelola AWS Terlepas dari itu, ID AWS KMS kunci yang digunakan Amazon S3 untuk enkripsi objek harus cocok dengan ID AWS KMS kunci dalam kebijakan, jika tidak Amazon S3 menolak permintaan tersebut.

*Untuk daftar lengkap kunci kondisi khusus Amazon S3, lihat Kunci kondisi [untuk Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) di Referensi Otorisasi Layanan.*

## Konteks enkripsi
<a name="encryption-context"></a>

*Konteks enkripsi* adalah seperangkat pasangan nilai kunci yang berisi informasi kontekstual tambahan terkait data. Konteks enkripsi tidak dienkripsi. Ketika konteks enkripsi ditentukan untuk operasi enkripsi, Amazon S3 harus menentukan konteks enkripsi yang sama untuk operasi dekripsi. Jika tidak, dekripsi gagal. AWS KMS menggunakan konteks enkripsi sebagai [data otentikasi tambahan](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#digital-sigs) (AAD) untuk mendukung enkripsi yang [diautentikasi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations#digital-sigs). Untuk informasi umum tentang konteks enkripsi, lihat [Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) dalam *Panduan Pengembang AWS Key Management Service *. 

Secara default, Amazon S3 menggunakan objek atau bucket Amazon Resource Name (ARN) sebagai pasangan konteks enkripsi: 
+ **Jika Anda menggunakan SSE-KMS tanpa mengaktifkan Kunci Bucket S3**, objek ARN digunakan sebagai konteks enkripsi.

  ```
  arn:aws:s3:::object_ARN
  ```
+ **Jika Anda menggunakan SSE-KMS dan mengaktifkan Kunci Bucket S3**, ARN bucket akan digunakan sebagai konteks enkripsi. Untuk informasi selengkapnya tentang Kunci Bucket S3, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

  ```
  arn:aws:s3:::bucket_ARN
  ```

Anda secara opsional dapat memberikan pasangan konteks enkripsi tambahan dengan menggunakan `x-amz-server-side-encryption-context` header dalam permintaan [s3: PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax). 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. Saat memproses permintaan `PUT` Anda, Amazon S3 menambahkan konteks enkripsi default ke `aws:s3:arn` yang Anda berikan. 

Anda dapat menggunakan konteks enkripsi untuk mengidentifikasi dan mengategorikan operasi kriptografi Anda. Anda juga dapat menggunakan nilai ARN konteks enkripsi default untuk melacak permintaan yang relevan AWS CloudTrail dengan melihat Amazon S3 ARN mana yang digunakan dengan kunci enkripsi mana.

Di `requestParameters` bidang file CloudTrail log, konteks enkripsi terlihat mirip dengan yang berikut. 

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1/file_name"
}
```

Saat Anda menggunakan SSE-KMS dengan fitur S3 Bucket Keys opsional, nilai konteks enkripsi adalah ARN bucket.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
}
```

## Mengirim permintaan untuk objek AWS KMS terenkripsi
<a name="aws-signature-version-4-sse-kms"></a>

**penting**  
Semua `GET` dan `PUT` permintaan untuk objek AWS KMS terenkripsi harus dibuat menggunakan Secure Sockets Layer (SSL) atau Transport Layer Security (TLS). Permintaan juga harus ditandatangani menggunakan kredensil yang valid, seperti AWS Signature Version 4 (atau AWS Signature Version 2).

AWS Signature Version 4 adalah proses menambahkan informasi otentikasi ke AWS permintaan yang dikirim oleh HTTP. Untuk keamanan, sebagian besar permintaan AWS harus ditandatangani dengan kunci akses, yang terdiri dari ID kunci akses dan kunci akses rahasia. Kedua kunci ini umumnya disebut sebagai kredensial keamanan Anda. Untuk informasi selengkapnya, lihat [Permintaan Autentikasi (Tanda Tangan AWS Versi 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) dan [Proses penandatanganan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

**penting**  
Jika objek Anda menggunakan SSE-KMS, jangan mengirim header permintaan enkripsi untuk permintaan `GET` dan permintaan `HEAD`. Jika tidak, Anda akan mendapatkan kesalahan HTTP 400 Bad Request.

**Topics**
+ [

## AWS KMS keys
](#aws-managed-customer-managed-keys)
+ [

## Kunci Bucket Amazon S3
](#sse-kms-bucket-keys)
+ [

## Membutuhkan enkripsi di sisi server
](#require-sse-kms)
+ [

## Konteks enkripsi
](#encryption-context)
+ [

## Mengirim permintaan untuk objek AWS KMS terenkripsi
](#aws-signature-version-4-sse-kms)
+ [

# Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS
](specifying-kms-encryption.md)
+ [

# Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3
](bucket-key.md)

# Menentukan enkripsi sisi server dengan (SSE-KMS) AWS KMS
<a name="specifying-kms-encryption"></a>

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi sisi server yang akan digunakan dalam `PUT` permintaan S3, atau memperbarui konfigurasi enkripsi default di bucket tujuan. 

Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam `PUT` permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service () kunci (SSE-KMS AWS KMS), enkripsi sisi server dua lapis dengan kunci (DSSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan pelanggan (SSE-C). Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di dalam bucket tujuan, Anda dapat menggunakan SSE-KMS atau DSSE-KMS.

Untuk informasi selengkapnya tentang mengubah konfigurasi enkripsi default untuk bucket tujuan umum Anda, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md). 

Saat Anda mengubah konfigurasi enkripsi default bucket ke SSE-KMS, jenis enkripsi objek Amazon S3 yang ada di bucket tidak akan diubah. Untuk mengubah jenis enkripsi objek yang sudah ada sebelumnya setelah memperbarui konfigurasi enkripsi default ke SSE-KMS, Anda dapat menggunakan Operasi Batch Amazon S3. Anda menyediakan Operasi Batch S3 dengan daftar objek, dan Operasi Batch memanggil operasi API masing-masing. Anda dapat menggunakan [Menyalin objek](batch-ops-copy-object.md) tindakan untuk menyalin objek yang ada, yang menuliskannya kembali ke bucket yang sama dengan objek terenkripsi SSE-KMS. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan posting *Blog AWS Penyimpanan* [Cara mengenkripsi objek yang ada secara surut di Amazon S3 menggunakan S3 Inventory, Amazon Athena, dan Operasi Batch S3](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/). 

Anda dapat menentukan SSE-KMS dengan menggunakan konsol Amazon S3, operasi REST API, dan (). AWS SDKs 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-kms"></a>

Topik ini menjelaskan cara mengatur atau mengubah jenis enkripsi objek untuk menggunakan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) kunci (SSE-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**.
**penting**  
Jika Anda menggunakan opsi SSE-KMS untuk konfigurasi enkripsi default, Anda tunduk pada kuota permintaan per detik (RPS) AWS KMS. Untuk informasi selengkapnya tentang kuota AWS KMS dan cara meminta kenaikan kuota, lihat [Kuota](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) di *Panduan Pengembang AWS Key Management Service *. 

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

   1. Di bawah **Jenis enkripsi**, pilih **Enkripsi sisi server dengan AWS Key Management Service kunci (SSE-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 tombol KMS yang tersedia Wilayah AWS 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 lain, Anda harus terlebih dahulu memiliki izin untuk menggunakan kunci tersebut, dan kemudian Anda harus memasukkan ARN kunci KMS.  
Amazon S3 hanya mendukung kunci KMS enkripsi simetris, dan tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Mengidentifikasi tombol KMS simetris dan asimetris](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) dalam *Panduan Pengembang AWS Key Management Service *.

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="KMSUsingRESTAPI"></a>

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

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

**Topics**
+ [

### Operasi API REST Amazon S3 yang mendukung SSE-KMS
](#sse-request-headers-kms)
+ [

### Konteks enkripsi (`x-amz-server-side-encryption-context`)
](#s3-kms-encryption-context)
+ [

### AWS KMS ID kunci (`x-amz-server-side-encryption-aws-kms-key-id`)
](#s3-kms-key-id-api)
+ [

### Tombol Bucket S3 () `x-amz-server-side-encryption-aws-bucket-key-enabled`
](#bucket-key-api)

### Operasi API REST Amazon S3 yang mendukung SSE-KMS
<a name="sse-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. Ketika Anda melewati header SSE-KMS dengan `CopyObject` operasi, mereka hanya diterapkan ke objek target. Saat Anda menyalin objek yang ada, terlepas dari apakah objek sumber dienkripsi atau tidak, objek tujuan tidak dienkripsi kecuali Anda secara eksplisit meminta enkripsi sisi server.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)— Saat Anda menggunakan `POST` operasi untuk mengunggah objek, alih-alih header permintaan, Anda memberikan informasi yang sama di bidang 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 operasi API unggahan multibagian, Anda dapat menentukan header ini. Anda menentukan header ini dalam `CreateMultipartUpload` permintaan.

Header respons dari operasi API REST berikut mengembalikan header `x-amz-server-side-encryption` saat objek disimpan menggunakan 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)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](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 membuat permintaan ini dengan menggunakan Secure Sockets Layer (SSL), Transport Layer Security (TLS), atau Signature Version 4.
Jika objek Anda menggunakan SSE-KMS, jangan mengirim header permintaan enkripsi untuk `GET` permintaan dan `HEAD` permintaan, atau Anda akan mendapatkan kesalahan HTTP 400. BadRequest

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

Jika Anda menentukan `x-amz-server-side-encryption:aws:kms`, 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 objek atau bucket Amazon Resource Name (ARN) sebagai pasangan konteks enkripsi. Jika Anda menggunakan SSE-KMS tanpa mengaktifkan Kunci Bucket S3, Anda menggunakan objek ARN sebagai konteks enkripsi Anda; misalnya, `arn:aws:s3:::object_ARN`. Namun, jika Anda menggunakan SSE-KMS dan mengaktifkan S3 Bucket Key, Anda menggunakan objek ARN sebagai konteks enkripsi Anda; misalnya, `arn:aws:s3:::bucket_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 itu tidak menyertakan informasi 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-kms-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 header `x-amz-server-side-encryption:aws:kms` tetapi tidak memberikan header `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 menggunakan Kunci yang dikelola AWS (`aws/s3`) untuk melindungi data tersebut. 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 *.

### Tombol Bucket S3 () `x-amz-server-side-encryption-aws-bucket-key-enabled`
<a name="bucket-key-api"></a>

Anda dapat menggunakan header `x-amz-server-side-encryption-aws-bucket-key-enabled` permintaan untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 di tingkat objek. Kunci Bucket S3 mengurangi biaya AWS KMS permintaan Anda dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

Jika Anda menentukan header `x-amz-server-side-encryption:aws:kms` tapi tidak memberikan header `x-amz-server-side-encryption-aws-bucket-key-enabled`, objek Anda menggunakan pengaturan Kunci Bucket S3 pada bucket tujuan untuk mengenkripsi objek Anda. Untuk informasi selengkapnya, lihat [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md).

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

Untuk menggunakan contoh AWS CLI perintah berikut, ganti `user input placeholders` dengan informasi Anda sendiri.

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

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

Anda juga dapat mengaktifkan atau menonaktifkan Tombol Bucket Amazon S3 pada operasi PUT atau COPY Anda dengan menambahkan `--bucket-key-enabled` atau `--no-bucket-key-enabled`. Amazon S3 Bucket Keys dapat mengurangi biaya AWS KMS permintaan Anda dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS menggunakan Kunci Bucket Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html).

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

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

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## Menggunakan AWS SDKs
<a name="kms-using-sdks"></a>

Saat menggunakan AWS SDKs, Anda dapat meminta Amazon S3 untuk digunakan AWS KMS keys untuk enkripsi sisi server. Contoh berikut menunjukkan bagaimana menggunakan SSE-KMS dengan AWS SDKs untuk Java dan .NET. Untuk informasi tentang lainnya SDKs, lihat [Contoh kode dan pustaka](https://aws.amazon.com/code) di Pusat AWS Pengembang.

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

### Operasi `CopyObject`
<a name="kms-copy-operation"></a>

Saat menyalin objek, Anda menambahkan properti permintaan yang sama (`ServerSideEncryptionMethod` dan `ServerSideEncryptionKeyManagementServiceKeyId`) untuk meminta Amazon S3 menggunakan AWS KMS key. Untuk informasi selengkapnya tentang menyalin objek, lihat [Menyalin, memindahkan, dan mengganti nama objek](copy-object.md). 

### Operasi `PUT`
<a name="kms-put-operation"></a>

------
#### [ Java ]

Saat mengunggah objek menggunakan AWS SDK untuk Java, Anda dapat meminta Amazon S3 untuk menggunakan AWS KMS key dengan menambahkan properti seperti `SSEAwsKeyManagementParams` yang ditunjukkan dalam permintaan berikut:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

Dalam hal ini, Amazon S3 menggunakan Kunci yang dikelola AWS ()`aws/s3`. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md). Anda dapat secara opsional membuat kunci KMS enkripsi simetris dan menentukannya dalam permintaan, seperti yang ditunjukkan pada contoh berikut:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

Untuk informasi selengkapnya tentang membuat kunci terkelola pelanggan, lihat [Memprogram AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) di *Panduan AWS Key Management Service Pengembang*.

Untuk contoh kode kerja mengunggah sebuah objek, lihat topik berikut ini. Untuk menggunakan contoh ini, Anda harus memperbarui contoh kode dan memberikan informasi enkripsi seperti yang ditunjukkan dalam fragmen kode sebelumnya.
+ Untuk mengunggah objek dalam operasi tunggal, lihat [Mengunggah Objek](upload-objects.md).
+ Untuk unggahan multibagian yang menggunakan operasi API unggahan multibagian tingkat tinggi atau tingkat rendah, lihat. [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md) 

------
#### [ .NET ]

Saat mengunggah objek menggunakan AWS SDK untuk .NET, Anda dapat meminta Amazon S3 untuk menggunakan AWS KMS key dengan menambahkan properti seperti `ServerSideEncryptionMethod` yang ditunjukkan dalam permintaan berikut:

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

Dalam hal ini, Amazon S3 menggunakan. Kunci yang dikelola AWS Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md). Anda dapat secara opsional membuat kunci terkelola pelanggan enkripsi simetris Anda sendiri dan menentukannya dalam permintaan, seperti yang ditunjukkan pada contoh berikut:

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

Untuk informasi selengkapnya tentang membuat kunci terkelola pelanggan, lihat [Memprogram AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) di *Panduan AWS Key Management Service Pengembang*. 

Untuk contoh kode kerja mengunggah sebuah objek, lihat topik berikut ini. Untuk menggunakan contoh ini, Anda harus memperbarui contoh kode dan memberikan informasi enkripsi seperti yang ditunjukkan dalam fragmen kode sebelumnya.
+ Untuk mengunggah objek dalam operasi tunggal, lihat [Mengunggah Objek](upload-objects.md).
+ Untuk unggahan multibagian yang menggunakan operasi API unggahan multibagian tingkat tinggi atau tingkat rendah, lihat. [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md) 

------

### Ditandatangani URLs
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

Saat membuat URL presigned untuk objek yang dienkripsi dengan AWS KMS key, Anda harus secara eksplisit menentukan Signature Versi 4, seperti yang ditunjukkan pada contoh berikut:

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

Untuk contoh kode, lihat [Berbagi objek dengan presigned URLs](ShareObjectPreSignedURL.md). 

------
#### [ .NET ]

Saat membuat URL presigned untuk objek yang dienkripsi dengan AWS KMS key, Anda harus secara eksplisit menentukan Signature Versi 4, seperti yang ditunjukkan pada contoh berikut:

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

Untuk contoh kode, lihat [Berbagi objek dengan presigned URLs](ShareObjectPreSignedURL.md).

------

# Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3
<a name="bucket-key"></a>

Amazon S3 Bucket Keys mengurangi biaya enkripsi sisi server Amazon S3 AWS Key Management Service dengan AWS KMS kunci () (SSE-KMS). Menggunakan kunci tingkat ember untuk SSE-KMS dapat mengurangi biaya AWS KMS permintaan hingga 99 persen dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS Dengan beberapa klik di Konsol Manajemen AWS, dan tanpa perubahan apa pun pada aplikasi klien Anda, Anda dapat mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 untuk enkripsi SSE-KMS pada objek baru.

**catatan**  
Kunci Bucket S3 tidak didukung untuk enkripsi sisi server dua lapis dengan kunci AWS Key Management Service () (AWS KMS DSSE-KMS).

## Kunci Bucket S3 untuk SSE-KMS
<a name="bucket-key-overview"></a>

Beban kerja yang mengakses jutaan atau miliaran objek yang dienkripsi dengan SSE-KMS dapat menghasilkan volume permintaan yang besar. AWS KMS[Saat Anda menggunakan SSE-KMS untuk melindungi data Anda tanpa Kunci Bucket S3, Amazon S3 menggunakan kunci data individual untuk setiap AWS KMS objek.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) Dalam hal ini, Amazon S3 melakukan panggilan ke AWS KMS setiap kali permintaan dibuat terhadap objek yang dienkripsi KMS. Untuk informasi tentang cara kerja SSE-KMS, lihat [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md). 

Saat Anda mengonfigurasi bucket untuk menggunakan Kunci Bucket S3 untuk SSE-KMS, buat kunci tingkat AWS ember berumur pendek dari, lalu simpan sementara di S3. AWS KMS Kunci tingkat bucket ini akan membuat kunci data untuk objek baru selama siklus hidupnya. Kunci Bucket S3 digunakan untuk jangka waktu terbatas dalam Amazon S3, mengurangi kebutuhan S3 untuk membuat permintaan AWS KMS untuk menyelesaikan operasi enkripsi. Ini mengurangi lalu lintas dari S3 menjadi AWS KMS, memungkinkan Anda mengakses objek yang AWS KMS dienkripsi di Amazon S3 dengan biaya yang lebih murah dari biaya sebelumnya.

Kunci tingkat ember unik diambil setidaknya sekali per pemohon untuk memastikan bahwa akses pemohon ke kunci ditangkap dalam suatu peristiwa. AWS KMS CloudTrail Amazon S3 memperlakukan penelepon sebagai pemohon yang berbeda ketika mereka menggunakan peran atau akun yang berbeda, atau peran yang sama dengan kebijakan pelingkupan yang berbeda. AWS KMS penghematan permintaan mencerminkan jumlah pemohon, pola permintaan, dan usia relatif dari objek yang diminta. Misalnya, jumlah pemohon yang lebih sedikit, meminta beberapa objek dalam jendela waktu terbatas, dan dienkripsi dengan kunci tingkat ember yang sama, menghasilkan penghematan yang lebih besar.

**catatan**  
Menggunakan S3 Bucket Keys memungkinkan Anda menghemat biaya AWS KMS permintaan dengan mengurangi permintaan AWS KMS untuk`Encrypt`,`GenerateDataKey`, dan `Decrypt` operasi melalui penggunaan kunci tingkat ember. Secara desain, permintaan berikutnya yang memanfaatkan kunci tingkat ember ini tidak menghasilkan permintaan AWS KMS API atau memvalidasi akses terhadap kebijakan kunci. AWS KMS 

Bila Anda mengonfigurasi Kunci Bucket S3, objek yang sudah ada di bucket tidak menggunakan kunci Bucket S3. Untuk mengonfigurasi Kunci Bucket S3 untuk objek yang sudah ada, Anda dapat menggunakan operasi `CopyObject`. Untuk informasi selengkapnya, lihat [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md).

Amazon S3 hanya akan berbagi Kunci Bucket S3 untuk objek dienkripsi oleh AWS KMS key yang sama. Kunci Bucket S3 kompatibel dengan kunci KMS yang dibuat oleh AWS KMS, [bahan kunci impor, dan bahan](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) [kunci yang didukung oleh toko kunci khusus](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).

![\[Diagram yang menunjukkan AWS KMS menghasilkan kunci bucket yang membuat kunci data untuk objek dalam ember.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/S3-Bucket-Keys.png)


## Mengonfigurasi Kunci Bucket S3
<a name="configure-bucket-key"></a>

Anda dapat mengonfigurasi bucket untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru melalui konsol Amazon S3,, AWS SDKs atau REST API. AWS CLI Dengan Kunci Bucket S3 diaktifkan di bucket Anda, objek yang diunggah dengan kunci SSE-KMS tertentu yang berbeda akan menggunakan Kunci Bucket S3 miliknya sendiri. Terlepas dari pengaturan Kunci Bucket S3 Anda, Anda dapat menyertakan header `x-amz-server-side-encryption-bucket-key-enabled` dengan nilai `true` atau `false` atau dalam permintaan Anda, untuk mengganti pengaturan bucket.

Sebelum mengonfigurasi bucket untuk menggunakan Kunci Bucket S3, tinjau [Perubahan yang perlu diperhatikan sebelum mengaktifkan Kunci Bucket S3](#bucket-key-changes). 

### Mengonfigurasi Kunci Bucket S3 menggunakan konsol Amazon S3
<a name="configure-bucket-key-console"></a>

Ketika Anda membuat bucket baru, Anda dapat mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru. Anda juga dapat mengonfigurasi bucket yang ada untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru dengan memperbarui properti bucket Anda. 

Untuk informasi selengkapnya, lihat [Mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 dengan SSE-KMS untuk objek baru](configuring-bucket-key.md).

### REST API, AWS CLI, dan dukungan AWS SDK untuk S3 Bucket Keys
<a name="configure-bucket-key-programmatic"></a>

Anda dapat menggunakan REST API, AWS CLI, atau AWS SDK untuk mengonfigurasi bucket agar menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru. Anda juga dapat mengaktifkan Kunci Bucket S3 pada tingkat objek.

Untuk informasi selengkapnya, lihat berikut ini: 
+ [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md)
+ [Mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 dengan SSE-KMS untuk objek baru](configuring-bucket-key.md)

Operasi API berikut mendukung Kunci Bucket S3 untuk SSE-KMS:
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  + `ServerSideEncryptionRule` menerima parameter `BucketKeyEnabled` untuk mengaktifkan dan menonaktifkan Kunci Bucket S3.
+ [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  + `ServerSideEncryptionRule` mengembalikan pengaturan untuk `BucketKeyEnabled`.
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html), dan [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
  + Anda dapat menggunakan header permintaan `x-amz-server-side-encryption-bucket-key-enabled` untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 pada tingkat objek.
+ [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html), [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html), dan [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  + Respons header `x-amz-server-side-encryption-bucket-key-enabled` menunjukkan jika Kunci Bucket S3 diaktifkan atau dinonaktifkan untuk sebuah objek.

### Bekerja dengan CloudFormation
<a name="configure-bucket-key-cfn"></a>

Di CloudFormation, `AWS::S3::Bucket` sumber daya menyertakan properti enkripsi yang disebut `BucketKeyEnabled` yang dapat Anda gunakan untuk mengaktifkan atau menonaktifkan Kunci Bucket S3. 

Untuk informasi selengkapnya, lihat [Menggunakan CloudFormation](configuring-bucket-key.md#enable-bucket-key-cloudformation).

## Perubahan yang perlu diperhatikan sebelum mengaktifkan Kunci Bucket S3
<a name="bucket-key-changes"></a>

Sebelum mengaktifkan Kunci Bucket S3, perhatikan perubahan terkait berikut ini:

### IAM atau kebijakan AWS KMS utama
<a name="bucket-key-policies"></a>

Jika kebijakan atau kebijakan AWS KMS utama AWS Identity and Access Management (IAM) yang ada menggunakan objek Amazon Resource Name (ARN) sebagai konteks enkripsi untuk mempersempit atau membatasi akses ke kunci KMS, kebijakan ini tidak akan berfungsi dengan Kunci Bucket S3. Kunci Bucket S3 menggunakan bucket ARN sebagai konteks enkripsi. Sebelum mengaktifkan Kunci Bucket S3, perbarui kebijakan IAM atau kebijakan AWS KMS utama untuk menggunakan ARN bucket sebagai konteks enkripsi.

Untuk informasi selengkapnya tentang konteks enkripsi dan Kunci Bucket S3, lihat [Konteks enkripsi](UsingKMSEncryption.md#encryption-context).

### CloudTrail acara untuk AWS KMS
<a name="bucket-key-cloudtrail"></a>

Setelah Anda mengaktifkan Kunci Bucket S3, AWS KMS CloudTrail peristiwa Anda mencatat ARN bucket Anda alih-alih ARN objek Anda. Selain itu, Anda melihat lebih sedikit CloudTrail peristiwa KMS untuk objek SSE-KMS di log Anda. Karena materi utama dibatasi waktu di Amazon S3, lebih sedikit permintaan yang dibuat. AWS KMS

## Menggunakan kunci Bucket S3 dengan replikasi
<a name="bucket-key-replication"></a>

Anda dapat menggunakan Kunci Bucket S3 dengan Replikasi Wilayah yang Sama (SRR) dan Replikasi Lintas-Wilayah (CRR).

Ketika Amazon S3 mereplikasi objek terenkripsi, umumnya mempertahankan pengaturan enkripsi objek replika di bucket tujuan. Namun, jika objek sumber tidak dienkripsi dan bucket tujuan Anda menggunakan enkripsi default atau Kunci Bucket S3, Amazon S3 mengenkripsi objek dengan konfigurasi bucket tujuan. 

Contoh berikut menggambarkan bagaimana Kunci Bucket S3 bekerja dengan replikasi. Untuk informasi selengkapnya, lihat [Mereplikasi objek terenkripsi (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Example Contoh 1–Sumber objek menggunakan Kunci Bucket S3, bucket tujuan menggunakan enkripsi default**  
Jika objek sumber Anda menggunakan Kunci Bucket S3 namun bucket tujuan Anda menggunakan enkripsi default dengan SSE-KMS, objek replika akan mempertahankan pengaturan enkripsi Kunci Bucket S3 di bucket tujuan. Bucket tujuan masih menggunakan enkripsi default dengan SSE-KMS.   


**Example Contoh 2–Objek sumber tidak dienkripsi, bucket tujuan menggunakan Kunci Bucket S3 dengan SSE-KMS**  
Jika objek sumber Anda tidak dienkripsi dan bucket tujuan menggunakan Kunci Bucket S3 dengan SSE-KMS, objek replika dienkripsi menggunakan Kunci Bucket S3 dengan SSE-KMS di bucket tujuan. Ini menghasilkan objek sumber `ETag` yang berbeda dari objek replika `ETag`. Anda harus memperbarui aplikasi yang menggunakan `ETag` untuk mengakomodasi perbedaan ini.

## Bekerja dengan Kunci Bucket S3
<a name="using-bucket-key"></a>

Untuk informasi lebih lanjut tentang mengaktifkan dan bekerja dengan Kunci Bucket S3, lihat bagian berikut:
+ [Mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 dengan SSE-KMS untuk objek baru](configuring-bucket-key.md)
+ [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md)
+ [Melihat pengaturan untuk Kunci Bucket S3](viewing-bucket-key-settings.md)

# Mengonfigurasi bucket Anda untuk menggunakan Kunci Bucket S3 dengan SSE-KMS untuk objek baru
<a name="configuring-bucket-key"></a>

Saat mengonfigurasi enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS), Anda dapat mengonfigurasi bucket untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru. S3 Bucket Keys mengurangi lalu lintas permintaan dari Amazon S3 AWS KMS ke dan mengurangi biaya SSE-KMS. Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md).

Anda dapat mengonfigurasi bucket untuk menggunakan Kunci Bucket S3 untuk SSE-KMS pada objek baru menggunakan konsol Amazon S3, REST API, (), atau. AWS SDKs AWS Command Line Interface AWS CLI CloudFormation Jika Anda ingin mengaktifkan atau nonaktifkan Kunci Bucket S3 untuk objek yang ada, Anda dapat menggunakan sebuah `CopyObject` operasi. Untuk informasi selengkapnya, lihat [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md) dan [Menggunakan Operasi Batch untuk mengaktifkan Kunci Bucket S3 untuk SSE-KMS](batch-ops-copy-example-bucket-key.md).

Saat Kunci Bucket S3 diaktifkan untuk bucket sumber atau tujuan, konteks enkripsi akan menjadi Amazon Resource Name (ARN) bucket, bukan ARN objek (misalnya, `arn:aws:s3:::bucket_ARN`). Anda harus memperbarui kebijakan IAM Anda untuk menggunakan ARN bucket untuk konteks enkripsi. Untuk informasi selengkapnya, lihat [Replikasi dan Kunci Bucket S3](replication-config-for-kms-objects.md#bk-replication).

Contoh berikut menggambarkan bagaimana Kunci Bucket S3 bekerja dengan replikasi. Untuk informasi selengkapnya, lihat [Mereplikasi objek terenkripsi (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Prasyarat**  
Sebelum mengonfigurasi bucket untuk menggunakan Kunci Bucket S3, tinjau [Perubahan yang perlu diperhatikan sebelum mengaktifkan Kunci Bucket S3](bucket-key.md#bucket-key-changes).

**Topics**

## Menggunakan konsol S3
<a name="enable-bucket-key"></a>

Di konsol S3, Anda dapat mengaktifkan atau nonaktifkan Kunci Bucket S3 untuk bucket baru atau yang sudah ada. Objek di konsol S3 mewarisi pengaturan Kunci Bucket S3 mereka dari konfigurasi bucket. Saat Anda mengaktifkan Kunci Bucket S3 untuk bucket Anda, objek baru yang Anda unggah ke bucket menggunakan Kunci Bucket S3 untuk SSE-KMS. 

**Mengunggah, menyalin, atau memodifikasi objek dalam bucket yang memiliki Kunci Bucket S3 diaktifkan**  
Jika Anda unggah, memodifikasi, atau menyalin objek dalam bucket yang mengaktifkan Kunci Bucket S3, pengaturan Kunci Bucket S3 untuk objek tersebut dapat diperbarui agar sesuai dengan konfigurasi bucket.

Jika sebuah objek telah mengaktifkan Kunci Bucket S3, pengaturan Kunci Bucket S3 untuk objek tersebut tidak berubah saat Anda menyalin atau memodifikasi objek. Namun, jika Anda mengubah atau menyalin objek yang tidak memiliki Kunci Bucket S3 yang diaktifkan, dan bucket tujuan memiliki konfigurasi Kunci Bucket S3, objek mewarisi pengaturan Kunci Bucket S3 bucket tujuan. Misalnya, jika objek sumber Anda tidak mengaktifkan Kunci Bucket S3 namun bucket tujuan mengaktifkan Kunci Bucket S3, Kunci Bucket S3 diaktifkan untuk objek tersebut.

**Untuk mengaktifkan Kunci Bucket S3 saat Anda membuat bucket baru**

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

1. Di panel navigasi kiri, pilih **Bucket**.

1. Pilih **Buat bucket**. 

1. Masukkan nama bucket Anda, dan pilih Wilayah AWS. 

1. Di bawah **Enkripsi default**, untuk **Jenis kunci enkripsi**, pilih kunci **AWS Key Management Service (SSE-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 Anda AWS KMS keys**, lalu 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 kunci yang dikelola [pelanggan, lihat Kunci dan AWS kunci](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) pelanggan di *Panduan AWS Key Management Service Pengembang*.
   + Untuk memasukkan ARN kunci KMS, pilih **Masukkan AWS KMS key ARN**, dan 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*.

1. Pada **Kunci Bucket**, pilih **Aktifkan**. 

1. Pilih **Buat bucket**. 

   Amazon S3 menciptakan bucket Anda dengan Kunci Bucket S3 yang diaktifkan. Objek baru yang Anda unggah ke bucket akan menggunakan Kunci Bucket S3. 

   Untuk menonaktifkan Kunci Bucket S3, ikuti langkah-langkah sebelumnya, dan pilih **Nonaktifkan**.

**Cara mengaktifkan Kunci Bucket S3 untuk bucket yang ada**

1. Buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket**.

1. Di dalam daftar **Bucket**, pilih bucket yang ingin Anda aktifkan Kunci Bucket S3-nya.

1. Pilih tab **Properti**.

1. Di bagian bawah **Enkripsi default**, pilih **Edit**.

1. Di bawah **Enkripsi default**, untuk **Jenis kunci enkripsi**, pilih kunci **AWS Key Management Service (SSE-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 Anda AWS KMS keys**, lalu 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 kunci yang dikelola [pelanggan, lihat Kunci dan AWS kunci](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) pelanggan di *Panduan AWS Key Management Service Pengembang*.
   + Untuk memasukkan ARN kunci KMS, pilih **Masukkan AWS KMS key ARN**, dan 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*.

1. Pada **Kunci Bucket**, pilih **Aktifkan**. 

1. Pilih **Simpan perubahan**.

   Amazon S3 mengaktifkan Kunci Bucket S3 untuk objek baru yang ditambahkan ke bucket Anda. Objek yang ada tidak menggunakan Kunci Bucket S3. Untuk mengonfigurasi Kunci Bucket S3 untuk objek yang sudah ada, Anda dapat menggunakan operasi `CopyObject`. Untuk informasi selengkapnya, lihat [Mengonfigurasi Kunci Bucket S3 pada tingkat objek](configuring-bucket-key-object.md).

   Untuk menonaktifkan Kunci Bucket S3, ikuti langkah-langkah sebelumnya, dan pilih **Nonaktifkan**.

## Penggunaan API REST
<a name="enable-bucket-key-rest"></a>

Anda dapat menggunakan [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 untuk bucket Anda. Untuk mengonfigurasi Kunci Bucket S3 dengan`PutBucketEncryption`, gunakan tipe [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)data, yang mencakup enkripsi default dengan SSE-KMS. Anda juga dapat menggunakan CMK dengan menentukan ID kunci KMS untuk kunci yang dikelola pelanggan.  

Untuk informasi selengkapnya dan contoh sintaks, lihat [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html). 

## Menggunakan AWS SDK for Java
<a name="enable-bucket-key-sdk"></a>

Contoh berikut ini mengaktifkan enkripsi bucket default dengan SSE-KMS dan Kunci Bucket S3 dengan menggunakan AWS SDK untuk Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## Menggunakan AWS CLI
<a name="enable-bucket-key-cli"></a>

Contoh berikut ini mengaktifkan enkripsi bucket default dengan SSE-KMS dan Kunci Bucket S3 dengan menggunakan AWS CLI. Ganti `user input placeholders` dengan informasi Anda sendiri.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Menggunakan CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

Untuk informasi selengkapnya tentang mengonfigurasi Kunci Bucket S3 dengan CloudFormation, lihat [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html)di *AWS CloudFormation Panduan Pengguna*.

# Mengonfigurasi Kunci Bucket S3 pada tingkat objek
<a name="configuring-bucket-key-object"></a>

Saat Anda melakukan operasi PUT atau COPY menggunakan REST API AWS SDKs, atau AWS CLI, Anda dapat mengaktifkan atau menonaktifkan Kunci Bucket S3 di tingkat objek dengan menambahkan header `x-amz-server-side-encryption-bucket-key-enabled` permintaan dengan `false` nilai `true` atau. S3 Bucket Keys mengurangi biaya enkripsi sisi server menggunakan AWS Key Management Service (AWS KMS) (SSE-KMS) dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md). 

Saat Anda mengonfigurasi Kunci Bucket S3 untuk suatu objek menggunakan operasi PUT atau COPY, Amazon S3 hanya memperbarui pengaturan untuk objek tersebut. Pengaturan Kunci Bucket S3 untuk bucket tujuan tidak berubah. Jika Anda mengirimkan permintaan PUT atau COPY untuk objek terenkripsi KMS ke dalam bucket dengan S3 Bucket Keys diaktifkan, operasi tingkat objek Anda akan secara otomatis menggunakan S3 Bucket Keys, kecuali jika Anda menonaktifkan kunci di header permintaan. Jika Anda tidak menentukan Kunci Bucket S3 untuk objek Anda, Amazon S3 menerapkan pengaturan Kunci Bucket S3 untuk bucket tujuan ke objek.

**Prasyarat:**  
Sebelum mengonfigurasi bucket untuk menggunakan Kunci Bucket S3, tinjau  [Perubahan yang perlu diperhatikan sebelum mengaktifkan Kunci Bucket S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [

## Operasi Batch Amazon S3
](#bucket-key-object-bops)
+ [

## Penggunaan API REST
](#bucket-key-object-rest)
+ [

## Menggunakan AWS SDK for Java PutObject ()
](#bucket-key-object-sdk)
+ [

## Menggunakan AWS CLI (PutObject)
](#bucket-key-object-cli)

## Operasi Batch Amazon S3
<a name="bucket-key-object-bops"></a>

Untuk mengenkripsi objek Amazon S3 yang tidak terenkripsi, Anda dapat menggunakan Operasi Batch Amazon S3. Anda harus menyediakan Operasi Batch S3 dengan daftar objek untuk dioperasikan, dan Operasi Batch akan memanggil masing-masing API untuk melakukan operasi tertentu. 

Anda juga dapat menggunakan [Operasi Salin Operasi Batch S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) untuk menyalin objek tidak terenkripsi yang ada, dan menuliskannya kembali ke bucket yang sama sebagai objek terenkripsi. Satu tugas Operasi Batch dapat melakukan operasi tertentu pada miliaran objek yang berisi data sebesar eksabita. Untuk informasi selengkapnya, lihat [Melakukan operasi objek secara massal dengan Operasi Batch](batch-ops.md) dan [Mengenkripsi objek dengan Operasi Batch Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Penggunaan API REST
<a name="bucket-key-object-rest"></a>

Saat Anda menggunakan SSE-KMS, Anda dapat mengaktifkan Kunci Bucket S3 untuk sebuah objek menggunakan operasi API berikut ini: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)— Saat Anda mengunggah objek, Anda dapat menentukan header `x-amz-server-side-encryption-bucket-key-enabled` permintaan untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 di tingkat objek. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)— Saat Anda menyalin objek dan mengkonfigurasi SSE-KMS, Anda dapat menentukan header `x-amz-server-side-encryption-bucket-key-enabled` permintaan untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 untuk objek Anda. 
+ [Objek POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) – Saat Anda menggunakan `POST` operasi untuk mengunggah objek dan mengonfigurasi SSE-KMS, Anda dapat menggunakan bidang formulir `x-amz-server-side-encryption-bucket-key-enabled` untuk mengaktifkan atau nonaktifkan Kunci Bucket S3 untuk objek Anda.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)— Saat Anda mengunggah objek besar dengan menggunakan operasi `CreateMultipartUpload` API dan mengonfigurasi SSE-KMS, Anda dapat menggunakan header `x-amz-server-side-encryption-bucket-key-enabled` permintaan untuk mengaktifkan atau menonaktifkan Kunci Bucket S3 untuk objek Anda.

Untuk mengaktifkan Kunci Bucket S3 pada tingkat objek, termasuk header permintaan `x-amz-server-side-encryption-bucket-key-enabled`. Untuk informasi selengkapnya tentang SSE-KMS dan API REST, lihat [Penggunaan API REST](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Menggunakan AWS SDK for Java PutObject ()
<a name="bucket-key-object-sdk"></a>

Anda dapat menggunakan contoh berikut untuk mengonfigurasi Kunci Bucket S3 di tingkat objek menggunakan AWS SDK untuk Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## Menggunakan AWS CLI (PutObject)
<a name="bucket-key-object-cli"></a>

Anda dapat menggunakan AWS CLI contoh berikut untuk mengonfigurasi Kunci Bucket S3 di tingkat objek sebagai bagian dari `PutObject` permintaan.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

# Melihat pengaturan untuk Kunci Bucket S3
<a name="viewing-bucket-key-settings"></a>

Anda dapat melihat setelan untuk Kunci Bucket S3 di tingkat bucket atau objek dengan menggunakan konsol Amazon S3, REST API,AWS CLI() AWS Command Line Interface , atau. AWS SDKs

S3 Bucket Keys mengurangi lalu lintas permintaan dari Amazon S3 AWS KMS ke dan mengurangi biaya penggunaan enkripsi sisi server (SSE-KMS). AWS Key Management Service Untuk informasi selengkapnya, lihat [Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3](bucket-key.md). 

Untuk melihat pengaturan Kunci Bucket S3 untuk bucket atau objek yang mewarisi pengaturan Kunci Bucket S3 dari konfigurasi bucket, Anda memerlukan izin untuk melakukan tindakan `s3:GetEncryptionConfiguration`. Untuk informasi selengkapnya, lihat [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) dalam *Referensi API Amazon Simple Storage Service*. 

## Menggunakan konsol S3
<a name="bucket-key-settings"></a>

Di konsol S3, Anda dapat melihat pengaturan Kunci Bucket S3 untuk bucket atau objek Anda. Pengaturan Kunci Bucket S3 diwarisi dari konfigurasi bucket kecuali objek sumber sudah memiliki Kunci Bucket S3 dikonfigurasi.

Objek dan folder dalam bucket yang sama dapat memiliki pengaturan Kunci Bucket S3 yang berbeda. Misalnya, jika Anda unggah objek menggunakan API REST dan mengaktifkan Kunci Bucket S3 untuk objek, objek mempertahankan pengaturan Kunci Bucket S3 di bucket tujuan, bahkan jika Kunci Bucket S3 dinonaktifkan di bucket tujuan. Sebagai contoh lain, jika Anda mengaktifkan kunci Bucket S3 untuk bucket yang ada, objek yang sudah ada di dalam bucket tidak menggunakan Kunci Bucket S3. Namun, objek baru memiliki kunci bucket S3 yang diaktifkan. 

**Untuk melihat pengaturan Kunci Bucket S3 untuk bucket Anda**

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

1. Di panel navigasi kiri, pilih **Bucket**.

1. Di dalam daftar **Bucket**, pilih bucket yang ingin Anda aktifkan Kunci Bucket S3-nya.

1. Pilih **Properti**.

1. Di bagian **Enkripsi default**, di bawah **Kunci Bucket**, Anda melihat pengaturan Tombol Bucket S3 untuk bucket Anda.

   Jika Anda tidak dapat melihat pengaturan Kunci Bucket S3, Anda mungkin tidak memiliki izin untuk menjalankan tindakan `s3:GetEncryptionConfiguration`. Untuk informasi selengkapnya, lihat [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) dalam *Referensi API Amazon Simple Storage Service*. 

**Untuk melihat pengaturan Kunci Bucket S3 untuk bucket Anda**

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 dalam daftar **Bucket**, pilih bucket yang ingin Anda aktifkan Kunci Bucket S3-nya. 

1. Di daftar **Objek**, pilih nama objek Anda.

1. Di atas tab **Detail**, di bawah **Pengaturan enkripsi di sisi server**, memilih **Edit**. 

   Pada **Kunci Bucket**, Anda melihat pengaturan Kunci Bucket S3 untuk objek Anda. Anda tidak bisa mengedit pengaturan ini. 

## Menggunakan AWS CLI
<a name="bucket-key-settings-cli"></a>

**Untuk mengembalikan pengaturan Kunci Bucket S3 tingkat bucket**  
Untuk menggunakan contoh ini, ganti masing-masing `user input placeholder` dengan informasi Anda sendiri.

```
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
```

Untuk informasi selengkapnya, lihat [get-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-encryption.html) dalam *AWS CLI Referensi Perintah*.

**Untuk mengembalikan pengaturan Kunci Bucket S3 tingkat objek**  
Untuk menggunakan contoh ini, ganti masing-masing `user input placeholder` dengan informasi Anda sendiri.

```
aws s3api head-object --bucket amzn-s3-demo-bucket1 --key my_images.tar.bz2
```

Untuk informasi selengkapnya, lihat [head-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html) dalam *AWS CLI Referensi Perintah*.

## Penggunaan API REST
<a name="bucket-key-settings-rest"></a>

**Untuk mengembalikan pengaturan Kunci Bucket S3 tingkat bucket**  
Untuk mengembalikan informasi enkripsi untuk bucket, termasuk pengaturan untuk Kunci Bucket S3, gunakan operasi `GetBucketEncryption`. Pengaturan Kunci bucket S3 dikembalikan di badan respons di elemen `ServerSideEncryptionConfiguration` dengan pengaturan `BucketKeyEnabled`. Untuk informasi selengkapnya, lihat [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) di *Referensi API Amazon S3*. 

**Untuk mengembalikan pengaturan tingkat objek untuk Kunci Bucket S3**  
Untuk mengembalikan status Kunci Bucket S3 untuk objek, gunakan operasi `HeadObject`. `HeadObject` mengembalikan header respons `x-amz-server-side-encryption-bucket-key-enabled` untuk menunjukkan apakah Kunci Bucket S3 diaktifkan atau dinonaktifkan untuk objek. Untuk informasi selengkapnya, lihat [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) di *Referensi API Amazon S3*. 

Operasi API berikut juga mengembalikan header respons `x-amz-server-side-encryption-bucket-key-enabled` jika Kunci Bucket S3 dikonfigurasi untuk sebuah objek: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 
+ [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 
+ [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 
+ [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 
+ [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 
+ [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

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

# Menggunakan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)
<a name="ServerSideEncryptionCustomerKeys"></a>

Enkripsi sisi-server adalah tentang melindungi data diam. Enkripsi di sisi server hanya mengenkripsi data objek, bukan metadata objek. Anda dapat menggunakan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) di bucket tujuan umum Anda untuk mengenkripsi data Anda dengan kunci enkripsi Anda sendiri. Dengan kunci enkripsi yang Anda sediakan sebagai bagian dari permintaan Anda, Amazon S3 mengelola enkripsi data saat menulis ke disk dan dekripsi data saat Anda mengakses objek Anda. Oleh karena itu, Anda tidak perlu menyimpan kode apa pun untuk melakukan enkripsi dan dekripsi data. Satu-satunya hal yang perlu Anda lakukan adalah mengelola kunci enkripsi yang Anda berikan. 

Sebagian besar kasus penggunaan modern di Amazon S3 tidak lagi menggunakan SSE-C karena tidak memiliki fleksibilitas enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) atau enkripsi sisi server dengan kunci KMS (SSE-KMS). AWS Persyaratan SSE-C untuk menyediakan kunci enkripsi setiap kali Anda berinteraksi dengan data terenkripsi SSE-C Anda membuatnya tidak praktis untuk membagikan kunci SSE-C Anda dengan pengguna, peran, atau AWS layanan lain yang membaca data dari bucket S3 Anda agar dapat beroperasi pada data Anda. Karena dukungan luas untuk SSE-KMS AWS, sebagian besar beban kerja modern tidak menggunakan enkripsi SSE-C karena tidak memiliki fleksibilitas SSE-KMS. Untuk mempelajari lebih lanjut tentang SSE-KMS, lihat. [Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)](UsingKMSEncryption.md)

Jika Anda ingin mencegah enkripsi SSE-C digunakan untuk objek yang ditulis ke bucket, Anda dapat memblokir enkripsi SSE-C saat mengubah konfigurasi enkripsi default bucket Anda. Ketika SSE-C diblokir untuk bucket tujuan umum, setiap,, `PutObject` `CopyObject``PostObject`, Multipart Upload atau permintaan replikasi yang menentukan enkripsi SSE-C akan ditolak dengan kesalahan. `HTTP 403 AccessDenied` Untuk mempelajari lebih lanjut tentang memblokir SSE-C, lihat. [Memblokir atau membuka blokir SSE-C untuk bucket tujuan umum](blocking-unblocking-s3-c-encryption-gpb.md)

Tidak ada biaya tambahan untuk penggunaan SSE-C. Namun, permintaan untuk mengonfigurasi dan menggunakan SSE-C dikenakan biaya permintaan Amazon S3 standar. Untuk informasi tentang harga, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/).

**penting**  
Seperti yang [diumumkan pada 19 November 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service menerapkan pengaturan keamanan bucket default baru yang secara otomatis menonaktifkan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk semua bucket tujuan umum baru. Untuk bucket yang ada tanpa objek terenkripsi SSE-C, Amazon S3 juga akan menonaktifkan SSE-C untuk semua permintaan tulis baru. Akun AWS Untuk Akun AWS penggunaan SSE-C, Amazon S3 tidak akan mengubah konfigurasi enkripsi bucket pada bucket yang ada di akun tersebut. Penyebaran ini dimulai pada 6 April 2026, dan akan selesai selama beberapa minggu ke depan di 37 AWS Wilayah, termasuk Wilayah AWS Tiongkok dan AWS GovCloud (AS).  
Dengan perubahan ini, aplikasi yang membutuhkan enkripsi SSE-C harus sengaja mengaktifkan SSE-C dengan menggunakan operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API setelah membuat bucket baru. Untuk informasi lebih lanjut tentang perubahan ini, lihat[Pengaturan SSE-C standar untuk bucket baru FAQ](default-s3-c-encryption-setting-faq.md).

## Pertimbangan sebelum menggunakan SSE-C
<a name="considerations-before-using-sse-c"></a>
+ S3 tidak pernah menyimpan kunci enkripsi saat Anda menggunakan SSE-C. Anda harus menyediakan kunci enkripsi setiap kali Anda ingin siapa pun mengunduh data terenkripsi SSE-C Anda dari S3. 
  + Anda mengelola pemetaan kunci enkripsi mana yang digunakan untuk mengenkripsi objek yang ingin dituju. Anda bertanggung jawab untuk melacak kunci enkripsi yang Anda berikan untuk objek yang ingin dituju. Itu juga berarti jika Anda kehilangan kunci enkripsi, Anda kehilangan objek. 
  + Karena Anda mengelola kunci enkripsi di sisi klien, Anda mengelola perlindungan tambahan, seperti rotasi utama, di sisi klien. 
  + Desain ini dapat mempersulit berbagi kunci SSE-C Anda dengan pengguna, peran, atau AWS layanan lain yang Anda operasikan pada data Anda. Karena dukungan luas untuk SSE-KMS AWS, sebagian besar beban kerja modern tidak menggunakan SSE-C karena tidak memiliki fleksibilitas SSE-KMS. Untuk mempelajari lebih lanjut tentang SSE-KMS, lihat [Menggunakan enkripsi sisi server dengan kunci KMS (SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)). AWS 
  + Ini berarti bahwa objek yang dienkripsi dengan SSE-C tidak dapat didekripsi secara native oleh layanan terkelola. AWS 
+ Anda harus menggunakan HTTPS saat menentukan header SSE-C pada permintaan Anda.
  + Amazon S3 menolak permintaan apa pun yang dibuat melalui HTTP saat menggunakan SSE-C. Untuk pertimbangan keamanan, kami menyarankan Anda mempertimbangkan kunci apa pun yang salah Anda kirimkan melalui HTTP telah disusupi. Buang kuncinya dan putar seperlunya. 
+ Jika bucket Anda mengaktifkan versi, setiap versi objek yang Anda unggah dapat memiliki kunci enkripsi sendiri. Anda bertanggung jawab untuk melacak kunci enkripsi yang Anda berikan untuk objek yang ingin dituju. 
+ SSE-C tidak didukung di Konsol Amazon S3. Anda tidak dapat menggunakan konsol Amazon S3 untuk mengunggah objek dan menentukan enkripsi SSE-C. Anda juga tidak dapat menggunakan konsol untuk memperbarui (misalnya, mengubah kelas penyimpanan atau menambahkan metadata) objek yang ada yang disimpan menggunakan SSE-C. 

**Topics**
+ [

## Pertimbangan sebelum menggunakan SSE-C
](#considerations-before-using-sse-c)
+ [

# Menentukan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)
](specifying-s3-c-encryption.md)
+ [

# Memblokir atau membuka blokir SSE-C untuk bucket tujuan umum
](blocking-unblocking-s3-c-encryption-gpb.md)
+ [

# Pengaturan SSE-C standar untuk bucket baru FAQ
](default-s3-c-encryption-setting-faq.md)

# Menentukan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C)
<a name="specifying-s3-c-encryption"></a>

Untuk menggunakan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) terlebih dahulu pastikan bahwa SSE-C bukan jenis enkripsi yang diblokir dalam konfigurasi enkripsi default bucket tujuan umum Amazon S3 Anda. Jika diblokir, Anda dapat mengaktifkan jenis enkripsi ini dengan memperbarui konfigurasi enkripsi default untuk bucket. Kemudian, Anda dapat menggunakan SSE-C dalam permintaan unggahan Anda dengan meneruskan header yang diperlukan. Lihat[Tindakan Amazon S3 yang mendukung penulisan data dengan SSE-C](#amazon-s3-actions-that-support-writing-data-with-sse-c), dan pastikan untuk menyertakan[Header API S3 diperlukan untuk enkripsi objek SSE-C dan permintaan dekripsi](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

Saat Anda mengunggah objek yang menentukan SSE-C, Amazon S3 menggunakan kunci enkripsi yang Anda berikan untuk menerapkan enkripsi AES-256 ke data Anda. Amazon S3 kemudian menghapus kunci enkripsi dari memori. Saat mengambil sebuah objek, Anda harus memberikan kunci enkripsi yang sama sebagai bagian dari permintaan Anda. Amazon S3 pertama-tama memverifikasi bahwa kunci enkripsi yang Anda berikan cocok, lalu mendekripsi objek sebelum mengembalikan data objek kepada Anda. 

Sebelum menggunakan SSE-C, pastikan Anda telah meninjau. [Pertimbangan sebelum menggunakan SSE-C](ServerSideEncryptionCustomerKeys.md#considerations-before-using-sse-c)

**catatan**  
Amazon S3 tidak menyimpan kunci enkripsi yang Anda sediakan. Sebaliknya, ia menyimpan nilai Kode Autentikasi Pesan Berbasis Hash (HMAC) salted secara acak dari kunci enkripsi untuk memvalidasi permintaan di masa mendatang. Nilai HMAC salted tidak dapat digunakan untuk mendapatkan nilai kunci enkripsi atau untuk mendekripsi konten objek terenkripsi. Artinya, jika Anda kehilangan kunci enkripsi, Anda akan kehilangan objek.

**Topics**
+ [

## Tindakan SSE-C dan Header yang Diperlukan
](#sse-c-actions-and-required-headers)
+ [

## Contoh kebijakan bucket untuk menegakkan enkripsi SSE-C
](#example-bucket-policy-to-enforce-sse-c-encryption)
+ [

## Presigned URLs dan SSE-C
](#ssec-and-presignedurl)
+ [

## Membuat permintaan dengan SSE-C
](#making-requests-with-sse-c)
+ [

## Penggunaan API REST
](#using-rest-api-sse-c)
+ [

## Menggunakan AWS SDKs untuk menentukan SSE-C untuk operasi PUT, GET, Head, dan Copy
](#sse-c-using-sdks)
+ [

## Menggunakan AWS SDKs untuk menentukan SSE-C untuk unggahan multipart
](#sse-c-using-sdks-multipart-uploads)

## Tindakan SSE-C dan Header yang Diperlukan
<a name="sse-c-actions-and-required-headers"></a>

Menentukan SSE-C pada S3 yang didukung APIs memerlukan melewati parameter permintaan tertentu. 

**catatan**  
`PutBucketEncryption`API di Amazon S3 digunakan untuk mengonfigurasi enkripsi sisi server default untuk bucket. Namun, `PutBucketEncryption` tidak mendukung pengaktifan SSE-C sebagai metode enkripsi default untuk bucket. SSE-C adalah metode enkripsi tingkat objek tempat Anda memberikan kunci enkripsi ke Amazon S3 dengan setiap permintaan unggahan atau unduhan objek. Amazon S3 menggunakan kunci ini untuk mengenkripsi atau mendekripsi objek selama permintaan dan kemudian membuang kuncinya. Ini berarti SSE-C diaktifkan berdasarkan per-objek, bukan sebagai pengaturan bucket default. 

### Tindakan Amazon S3 yang mendukung penulisan data dengan SSE-C
<a name="amazon-s3-actions-that-support-writing-data-with-sse-c"></a>

Anda dapat meminta enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) saat menulis objek ke bucket tujuan umum dengan menggunakan operasi atau tindakan API berikut: 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.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_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [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_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)

**catatan**  
S3 Replication mendukung objek yang dienkripsi dengan SSE-C. Untuk informasi selengkapnya tentang mereplikasi objek terenkripsi, lihat [Mereplikasi objek terenkripsi (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

### Header API S3 diperlukan untuk enkripsi objek SSE-C dan permintaan dekripsi
<a name="s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests"></a>

Anda harus menyediakan tiga header API berikut untuk mengenkripsi atau mendekripsi objek dengan SSE-C: 
+ `x-amz-server-side-encryption-customer-algorithm`Gunakan header ini untuk menentukan algoritma enkripsi. Nilai header harus berupa AES256.
+ `x-amz-server-side-encryption-customer-key`Gunakan header ini untuk menyediakan kunci enkripsi 256-bit yang disandikan base64 untuk Amazon S3 untuk digunakan untuk mengenkripsi atau mendekripsi data Anda.
+ `x-amz-server-side-encryption-customer-key-MD5`Gunakan header ini untuk memberikan MD5 intisari 128-bit yang dikodekan base64 dari kunci enkripsi menurut RFC 1321. Amazon S3 menggunakan header ini untuk pemeriksaan integritas pesan guna memastikan bahwa kunci enkripsi dikirimkan tanpa kesalahan.

### Header API S3 diperlukan untuk permintaan untuk menyalin objek sumber yang dienkripsi dengan SSE-C
<a name="s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c"></a>

Anda harus menyediakan tiga header API berikut untuk menyalin objek sumber yang dienkripsi dengan SSE-C: 
+ `x-amz-copy-source-server-side-encryption-customer-algorithm`Sertakan header ini untuk menentukan algoritme yang harus digunakan Amazon S3 untuk mendekripsi objek sumber. Nilai ini harus berupa AES256.
+ `x-amz-copy-source-server-side-encryption-customer-key`Sertakan header ini untuk menyediakan kunci enkripsi berenkode base64 untuk Amazon S3 untuk digunakan untuk mendekripsi objek sumber. Kunci enkripsi ini harus berupa kunci yang Anda berikan kepada Amazon S3 saat membuat objek sumber. Jika tidak, Amazon S3 tidak dapat mendekripsi objeknya.
+ `x-amz-copy-source-server-side-encryption-customer-key-MD5`Sertakan header ini untuk memberikan MD5 intisari 128-bit yang dikodekan base64 dari kunci enkripsi menurut RFC 1321.

## Contoh kebijakan bucket untuk menegakkan enkripsi SSE-C
<a name="example-bucket-policy-to-enforce-sse-c-encryption"></a>

Untuk mewajibkan SSE-C untuk semua objek yang ditulis ke bucket Amazon S3, Anda dapat menggunakan kebijakan bucket. Misalnya, kebijakan bucket berikut menolak izin unggah objek (`s3:PutObject`) untuk semua permintaan yang tidak menyertakan header `x-amz-server-side-encryption-customer-algorithm` yang meminta SSE-C. 

```
{  
"Version":"2012-10-17",		 	 	                      
    "Id": "PutObjectPolicy",  
    "Statement": [  
        {  
"Sid": "RequireSSECObjectUploads",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:PutObject",  
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",  
            "Condition": {  
            "Null": {  
              "s3:x-amz-server-side-encryption-customer-algorithm": "true"  
                }  
            }  
        }  
    ]  
}
```

**penting**  
Jika Anda menggunakan kebijakan bucket untuk mengharuskan SSE-C aktif`s3:PutObject`, Anda harus menyertakan `x-amz-server-side-encryption-customer-algorithm` header di semua permintaan unggahan multibagian (CreateMultipartUpload, UploadPart, dan). CompleteMultipartUpload 

## Presigned URLs dan SSE-C
<a name="ssec-and-presignedurl"></a>

Anda dapat membuat URL yang telah ditandatangani sebelumnya yang dapat digunakan untuk operasi seperti mengunggah objek baru, mengambil objek yang sudah ada, atau mengambil metadata objek. URLsDukungan presigned SSE-C sebagai berikut:
+ Saat membuat URL yang telah ditandatangani, Anda harus menentukan algoritma dengan menggunakan header `x-amz-server-side-encryption-customer-algorithm` dalam perhitungan tanda tangan.
+ Saat menggunakan URL yang ditandatangani sebelumnya untuk mengunggah objek baru, mengambil objek yang sudah ada, atau mengambil metadata objek saja, Anda harus memberikan semua header enkripsi dalam permintaan aplikasi klien. 
**catatan**  
Untuk non-SSE-C objek, Anda dapat membuat URL yang telah ditetapkan sebelumnya dan langsung menempelkan URL tersebut ke browser untuk mengakses data.   
Namun, Anda tidak dapat melakukan ini untuk objek SSE-C, karena selain URL yang ditandatangani sebelumnya, Anda juga harus menyertakan header HTTP yang kustom untuk objek SSE-C. Oleh karena itu, Anda dapat menggunakan presigned URLs untuk objek SSE-C hanya secara terprogram.

Untuk informasi lebih lanjut tentang presigned URLs, lihat[Unduh dan unggah objek dengan presigned URLs](using-presigned-url.md).

## Membuat permintaan dengan SSE-C
<a name="making-requests-with-sse-c"></a>

 Pada saat pembuatan objek dengan API REST, Anda dapat menentukan enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C). Ketika Anda menggunakan SSE-C, Anda harus memberikan informasi kunci enkripsi menggunakan. [Header API S3 diperlukan untuk permintaan untuk menyalin objek sumber yang dienkripsi dengan SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c) Anda dapat menggunakan pustaka pembungkus AWS SDK untuk menambahkan header ini ke permintaan Anda. Jika perlu, Anda dapat melakukan panggilan API REST Amazon S3 secara langsung di aplikasi Anda.

**penting**  
Sebelum menentukan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C), pastikan bahwa enkripsi SSE-C tidak diblokir untuk bucket tujuan umum Anda. Untuk informasi selengkapnya, lihat [Memblokir atau membuka blokir SSE-C untuk bucket tujuan umum](blocking-unblocking-s3-c-encryption-gpb.md).

**catatan**  
Anda tidak dapat menggunakan konsol Amazon S3 untuk mengunggah objek dan meminta SSE-C. Anda juga tidak dapat menggunakan konsol untuk memperbarui (misalnya, mengubah kelas penyimpanan atau menambahkan metadata) objek yang ada yang disimpan menggunakan SSE-C. Untuk informasi lebih lanjut, lihat[Header API S3 diperlukan untuk enkripsi objek SSE-C dan permintaan dekripsi](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

## Penggunaan API REST
<a name="using-rest-api-sse-c"></a>

### Amazon S3 REST yang mendukung APIs SSE-C
<a name="sse-c-supported-apis"></a>

Amazon S3 berikut APIs mendukung enkripsi sisi server dengan kunci enkripsi yang disediakan pelanggan (SSE-C).
+ **GET operation**–Saat mengambil objek menggunakan API GET (lihat [GET Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)), Anda dapat menentukan header permintaan.
+ **HEAD operation**–Untuk mengambil metadata objek menggunakan API HEAD (lihat [HEAD Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)), Anda dapat menentukan header permintaan ini.
+ **PUT operation**–Saat Anda mengunggah data dengan menggunakan API PUT Objek (lihat [PUT Objek](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)), Anda dapat menentukan header permintaan ini. 
+ **Unggahan Multibagian**–Saat mengunggah objek yang berukuran besar menggunakan API unggahan multibagian, Anda dapat menentukan header ini. [Anda menentukan header ini dalam permintaan inisiat (lihat Memulai [Unggahan Multibagian) dan setiap permintaan unggahan](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) bagian berikutnya (lihat Bagian Unggah atau). [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) Untuk setiap permintaan unggahan bagian, informasi enkripsi harus sama dengan yang Anda berikan dalam permintaan unggahan multibagian.
+ **POST operation**–Saat menggunakan POST operation untuk mengunggah objek (lihat [Objek POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)), alih-alih dengan header permintaan, Anda memberikan informasi yang sama di dalam bidang formulir.
+ **Salin operasi** — Saat Anda menyalin objek (lihat [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)), Anda memiliki objek sumber dan objek target:
  + Jika Anda ingin menentukan jenis enkripsi objek target, Anda harus memberikan header `x-amz-server-side-encryption ` permintaan.
  + Jika Anda ingin objek target dienkripsi menggunakan SSE-C, Anda harus memberikan informasi enkripsi menggunakan S3 API. [Header API S3 diperlukan untuk enkripsi objek SSE-C dan permintaan dekripsi](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests)
  + Jika objek sumber dienkripsi menggunakan SSE-C, Anda harus memberikan informasi kunci enkripsi menggunakan header S3 API. [Header API S3 diperlukan untuk permintaan untuk menyalin objek sumber yang dienkripsi dengan SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c)

## Menggunakan AWS SDKs untuk menentukan SSE-C untuk operasi PUT, GET, Head, dan Copy
<a name="sse-c-using-sdks"></a>

Contoh berikut ini menunjukkan cara untuk meminta enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk objek. Contoh melakukan operasi berikut. Setiap operasi menunjukkan cara menentukan SSE-C-related header dalam permintaan:
+ **Put objek**–Mengunggah objek dan meminta enkripsi di sisi server menggunakan kunci enkripsi yang disediakan pelanggan.
+ **Get object**–Mengunduh objek yang diunggah dalam langkah sebelumnya. Dalam permintaan tersebut, Anda memberikan informasi enkripsi yang sama dengan yang Anda berikan saat unggah objek tersebut. Amazon S3 memerlukan informasi ini untuk mendekripsi objek sehingga dapat mengembalikannya kepada Anda.
+ **Get object metadata**–Mengambil metadata objek. Anda memberikan informasi enkripsi yang sama, yang digunakan saat objek tersebut dibuat.
+ **Copy object**–Membuat salinan dari objek yang diunggah sebelumnya. Karena objek sumber disimpan menggunakan SSE-C, Anda harus memberikan informasi enkripsinya dalam permintaan salinan Anda. Secara default, Amazon S3 mengenkripsi salinan objek hanya jika Anda secara eksplisit memintanya. Contoh ini mengarahkan Amazon S3 untuk menyimpan salinan objek yang dienkripsi.

------
#### [ Java ]

**catatan**  
Contoh ini menunjukkan cara untuk mengunggah objek dalam satu operasi. Saat menggunakan API Unggahan Multibagian untuk mengunggah objek besar, Anda memberikan informasi enkripsi dengan cara yang sama seperti yang ditunjukkan dalam contoh ini. Untuk contoh unggahan multipart yang menggunakan file AWS SDK untuk Java, lihat. [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md)

Untuk menambahkan informasi enkripsi yang diperlukan, Anda menyertakan `SSECustomerKey` dalam permintaan Anda. Untuk informasi selengkapnya tentang kelas `SSECustomerKey`, lihat bagian API REST.

Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat [Memulai](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) di Panduan AWS SDK untuk Java Pengembang.

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {
    private static SSECustomerKey SSE_KEY;
    private static AmazonS3 S3_CLIENT;
    private static KeyGenerator KEY_GENERATOR;

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String uploadFileName = "*** File path ***";
        String targetKeyName = "*** Target key name ***";

        // Create an encryption key.
        KEY_GENERATOR = KeyGenerator.getInstance("AES");
        KEY_GENERATOR.init(256, new SecureRandom());
        SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

        try {
            S3_CLIENT = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Upload an object.
            uploadObject(bucketName, keyName, new File(uploadFileName));

            // Download the object.
            downloadObject(bucketName, keyName);

            // Verify that the object is properly encrypted by attempting to retrieve it
            // using the encryption key.
            retrieveObjectMetadata(bucketName, keyName);

            // Copy the object into a new object that also uses SSE-C.
            copyObject(bucketName, keyName, targetKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObject(String bucketName, String keyName, File file) {
        PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSECustomerKey(SSE_KEY);
        S3_CLIENT.putObject(putRequest);
        System.out.println("Object uploaded");
    }

    private static void downloadObject(String bucketName, String keyName) throws IOException {
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(SSE_KEY);
        S3Object object = S3_CLIENT.getObject(getObjectRequest);

        System.out.println("Object content: ");
        displayTextInputStream(object.getObjectContent());
    }

    private static void retrieveObjectMetadata(String bucketName, String keyName) {
        GetObjectMetadataRequest getMetadataRequest = new GetObjectMetadataRequest(bucketName, keyName)
                .withSSECustomerKey(SSE_KEY);
        ObjectMetadata objectMetadata = S3_CLIENT.getObjectMetadata(getMetadataRequest);
        System.out.println("Metadata retrieved. Object size: " + objectMetadata.getContentLength());
    }

    private static void copyObject(String bucketName, String keyName, String targetKeyName)
            throws NoSuchAlgorithmException {
        // Create a new encryption key for target so that the target is saved using
        // SSE-C.
        SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

        CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName)
                .withSourceSSECustomerKey(SSE_KEY)
                .withDestinationSSECustomerKey(newSSEKey);

        S3_CLIENT.copyObject(copyRequest);
        System.out.println("Object copied");
    }

    private static void displayTextInputStream(S3ObjectInputStream input) throws IOException {
        // Read one line at a time from the input stream and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------
#### [ .NET ]

**catatan**  
Untuk contoh pengunggahan objek besar menggunakan API unggahan multibagian, lihat [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md) dan [Menggunakan AWS SDKs (API tingkat rendah)](mpu-upload-object.md#mpu-upload-low-level).

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat [Memulai SDK for .NET di AWSAWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SSEClientEncryptionKeyObjectOperationsTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** key name for new object created ***"; 
        private const string copyTargetKeyName = "*** key name for object copy ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            ObjectOpsUsingClientEncryptionKeyAsync().Wait();
        }
        private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
        {
            try
            {
                // Create an encryption key.
                Aes aesEncryption = Aes.Create();
                aesEncryption.KeySize = 256;
                aesEncryption.GenerateKey();
                string base64Key = Convert.ToBase64String(aesEncryption.Key);

                // 1. Upload the object.
                PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
                // 2. Download the object and verify that its contents matches what you uploaded.
                await DownloadObjectAsync(base64Key, putObjectRequest);
                // 3. Get object metadata and verify that the object uses AES-256 encryption.
                await GetObjectMetadataAsync(base64Key);
                // 4. Copy both the source and target objects using server-side encryption with 
                //    a customer-provided encryption key.
                await CopyObjectAsync(aesEncryption, base64Key);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)
        {
            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                ContentBody = "sample text",
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };
            PutObjectResponse putObjectResponse = await client.PutObjectAsync(putObjectRequest);
            return putObjectRequest;
        }
        private static async Task DownloadObjectAsync(string base64Key, PutObjectRequest putObjectRequest)
        {
            GetObjectRequest getObjectRequest = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                // Provide encryption information for the object stored in Amazon S3.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            using (GetObjectResponse getResponse = await client.GetObjectAsync(getObjectRequest))
            using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
            {
                string content = reader.ReadToEnd();
                if (String.Compare(putObjectRequest.ContentBody, content) == 0)
                    Console.WriteLine("Object content is same as we uploaded");
                else
                    Console.WriteLine("Error...Object content is not same.");

                if (getResponse.ServerSideEncryptionCustomerMethod == ServerSideEncryptionCustomerMethod.AES256)
                    Console.WriteLine("Object encryption method is AES256, same as we set");
                else
                    Console.WriteLine("Error...Object encryption method is not the same as AES256 we set");

                // Assert.AreEqual(putObjectRequest.ContentBody, content);
                // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getResponse.ServerSideEncryptionCustomerMethod);
            }
        }
        private static async Task GetObjectMetadataAsync(string base64Key)
        {
            GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest
            {
                BucketName = bucketName,
                Key = keyName,

                // The object stored in Amazon S3 is encrypted, so provide the necessary encryption information.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            GetObjectMetadataResponse getObjectMetadataResponse = await client.GetObjectMetadataAsync(getObjectMetadataRequest);
            Console.WriteLine("The object metadata show encryption method used is: {0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
            // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
        }
        private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
        {
            aesEncryption.GenerateKey();
            string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

            CopyObjectRequest copyRequest = new CopyObjectRequest
            {
                SourceBucket = bucketName,
                SourceKey = keyName,
                DestinationBucket = bucketName,
                DestinationKey = copyTargetKeyName,
                // Information about the source object's encryption.
                CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
                // Information about the target object's encryption.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = copyBase64Key
            };
            await client.CopyObjectAsync(copyRequest);
        }
    }
}
```

------

## Menggunakan AWS SDKs untuk menentukan SSE-C untuk unggahan multipart
<a name="sse-c-using-sdks-multipart-uploads"></a>

Contoh di bagian sebelumnya menunjukkan cara meminta enkripsi di sisi server dengan kunci yang disediakan pelanggan (SSE-C) dalam operasi PUT, GET, Head, dan Copy. Bagian ini menjelaskan Amazon S3 lain APIs yang mendukung SSE-C.

------
#### [ Java ]

Untuk mengunggah objek besar, Anda dapat menggunakan unggahan APIs multipart. Untuk informasi selengkapnya, lihat [Mengunggah dan menyalin objek menggunakan unggahan multipart di Amazon S3](mpuoverview.md). Anda dapat menggunakan level tinggi atau level rendah APIs untuk mengunggah objek besar. Ini APIs mendukung header terkait enkripsi dalam permintaan.
+ Saat menggunakan `TransferManager` API tingkat tinggi, Anda menyediakan header khusus enkripsi di. `PutObjectRequest` Untuk informasi selengkapnya, lihat [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md). 
+ Saat menggunakan API tingkat rendah, Anda memberikan informasi terkait enkripsi pada `InitiateMultipartUploadRequest`, diikuti dengan informasi enkripsi identik pada setiap `UploadPartRequest`. Anda tidak perlu memberikan header kustom enkripsi apa pun dalam `CompleteMultipartUploadRequest` Anda. Sebagai contoh, lihat [Menggunakan AWS SDKs (API tingkat rendah)](mpu-upload-object.md#mpu-upload-low-level). 

Contoh berikut menggunakan `TransferManager` untuk membuat objek dan menunjukkan cara memberikan informasi terkait SSE-C. Contoh ini melakukan hal berikut:
+ Membuat objek menggunakan metode `TransferManager.upload()`. Dalam `PutObjectRequest` contoh, Anda memberikan informasi kunci enkripsi dalam permintaan. Amazon S3 mengenkripsi objek menggunakan kunci yang disediakan pelanggan.
+ Membuat salinan objek dengan memanggil metode `TransferManager.copy()`. Contoh tersebut mengarahkan Amazon S3 untuk mengenkripsi salinan objek menggunakan `SSECustomerKey` yang baru. Karena objek sumber dienkripsi menggunakan SSE-C, `CopyObjectRequest` juga menyediakan kunci enkripsi objek sumber sehingga Amazon S3 dapat mendekripsi objek tersebut sebelum menyalinnya. 

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

    public static void main(String[] args) throws Exception {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String fileToUpload = "*** File path ***";
        String keyName = "*** New object key name ***";
        String targetKeyName = "*** Key name for object copy ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            TransferManager tm = TransferManagerBuilder.standard()
                    .withS3Client(s3Client)
                    .build();

            // Create an object from a file.
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, new File(fileToUpload));

            // Create an encryption key.
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256, new SecureRandom());
            SSECustomerKey sseCustomerEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());

            // Upload the object. TransferManager uploads asynchronously, so this call
            // returns immediately.
            putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
            Upload upload = tm.upload(putObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            upload.waitForCompletion();
            System.out.println("Object created.");

            // Copy the object and store the copy using SSE-C with a new key.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName);
            SSECustomerKey sseTargetObjectEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());
            copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);
            copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

            // Copy the object. TransferManager copies asynchronously, so this call returns
            // immediately.
            Copy copy = tm.copy(copyObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            copy.waitForCompletion();
            System.out.println("Copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Untuk mengunggah objek besar, Anda dapat menggunakan API unggahan multibagian (lihat[Mengunggah dan menyalin objek menggunakan unggahan multipart di Amazon S3](mpuoverview.md)). AWS SDK for .NET menyediakan level tinggi atau APIs level rendah untuk mengunggah objek besar. Ini APIs mendukung header terkait enkripsi dalam permintaan.
+ Saat menggunakan API `Transfer-Utility ` tingkat tinggi, Anda menyediakan header kustom enkripsi di `TransferUtilityUploadRequest` seperti yang ditunjukkan. Untuk contoh kode, lihat [Pengunggahan objek menggunakan unggahan multibagian](mpu-upload-object.md).

  ```
  TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
  {
      FilePath = filePath,
      BucketName = existingBucketName,
      Key = keyName,
      // Provide encryption information.
      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
      ServerSideEncryptionCustomerProvidedKey = base64Key,
  };
  ```
+ Saat menggunakan API tingkat rendah, Anda memberikan informasi terkait enkripsi dalam memulai permintaan unggahan multibagian, diikuti dengan informasi enkripsi yang sama dalam permintaan bagian unggahan berikutnya. Anda tidak perlu memberikan header kustom enkripsi apa pun dalam permintaan pengunggahan multibagian lengkap Anda. Sebagai contoh, lihat [Menggunakan AWS SDKs (API tingkat rendah)](mpu-upload-object.md#mpu-upload-low-level).

  Berikut ini adalah contoh pengunggahan multibagian tingkat rendah yang membuat salinan objek besar yang sudah ada. Pada contoh, objek yang akan disalin disimpan di Amazon S3 menggunakan SSE-C, dan Anda ingin menyimpan objek target juga menggunakan SSE-C. Dalam contoh ini, Anda melakukan hal berikut:
  + Mulai permintaan pengunggahan multibagian dengan memberikan kunci enkripsi dan informasi terkait.
  + Menyediakan kunci enkripsi objek sumber dan sasaran serta informasi terkait dalam `CopyPartRequest`.
  + Dapatkan ukuran objek sumber yang akan disalin dengan mengambil metadata objek.
  + Unggah objek ke dalam bagian 5 MB.  
**Example**  

  ```
  using Amazon;
  using Amazon.S3;
  using Amazon.S3.Model;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Security.Cryptography;
  using System.Threading.Tasks;
  
  namespace Amazon.DocSamples.S3
  {
      class SSECLowLevelMPUcopyObjectTest
      {
          private const string existingBucketName = "*** bucket name ***";
          private const string sourceKeyName      = "*** source object key name ***"; 
          private const string targetKeyName      = "*** key name for the target object ***";
          private const string filePath           = @"*** file path ***";
          // Specify your bucket region (an example region is shown).
          private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
          private static IAmazonS3 s3Client;
          static void Main()
          {
              s3Client = new AmazonS3Client(bucketRegion);
              CopyObjClientEncryptionKeyAsync().Wait();
          }
  
          private static async Task CopyObjClientEncryptionKeyAsync()
          {
              Aes aesEncryption = Aes.Create();
              aesEncryption.KeySize = 256;
              aesEncryption.GenerateKey();
              string base64Key = Convert.ToBase64String(aesEncryption.Key);
  
              await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);
  
              await CopyObjectAsync(s3Client, base64Key);
          }
          private static async Task CopyObjectAsync(IAmazonS3 s3Client, string base64Key)
          {
              List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = targetKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key,
              };
  
              InitiateMultipartUploadResponse initResponse =
                  await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
              long firstByte = 0;
              long lastByte = partSize;
  
              try
              {
                  // First find source object size. Because object is stored encrypted with
                  // customer provided key you need to provide encryption information in your request.
                  GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest()
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                      ServerSideEncryptionCustomerProvidedKey = base64Key // " * **source object encryption key ***"
                  };
  
                  GetObjectMetadataResponse getObjectMetadataResponse = await s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);
  
                  long filePosition = 0;
                  for (int i = 1; filePosition < getObjectMetadataResponse.ContentLength; i++)
                  {
                      CopyPartRequest copyPartRequest = new CopyPartRequest
                      {
                          UploadId = initResponse.UploadId,
                          // Source.
                          SourceBucket = existingBucketName,
                          SourceKey = sourceKeyName,
                          // Source object is stored using SSE-C. Provide encryption information.
                          CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          CopySourceServerSideEncryptionCustomerProvidedKey = base64Key, //"***source object encryption key ***",
                          FirstByte = firstByte,
                          // If the last part is smaller then our normal part size then use the remaining size.
                          LastByte = lastByte > getObjectMetadataResponse.ContentLength ?
                              getObjectMetadataResponse.ContentLength - 1 : lastByte,
  
                          // Target.
                          DestinationBucket = existingBucketName,
                          DestinationKey = targetKeyName,
                          PartNumber = i,
                          // Encryption information for the target object.
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
                      uploadResponses.Add(await s3Client.CopyPartAsync(copyPartRequest));
                      filePosition += partSize;
                      firstByte += partSize;
                      lastByte += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId,
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId
                  };
                  s3Client.AbortMultipartUpload(abortMPURequest);
              }
          }
          private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string base64Key, IAmazonS3 s3Client)
          {
              // List to store upload part responses.
              List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = sourceKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key
              };
  
              InitiateMultipartUploadResponse initResponse =
                 await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long contentLength = new FileInfo(filePath).Length;
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
  
              try
              {
                  long filePosition = 0;
                  for (int i = 1; filePosition < contentLength; i++)
                  {
                      UploadPartRequest uploadRequest = new UploadPartRequest
                      {
                          BucketName = existingBucketName,
                          Key = sourceKeyName,
                          UploadId = initResponse.UploadId,
                          PartNumber = i,
                          PartSize = partSize,
                          FilePosition = filePosition,
                          FilePath = filePath,
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
  
                      // Upload part and add response to our list.
                      uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));
  
                      filePosition += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId,
                      //PartETags = new List<PartETag>(uploadResponses)
  
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
  
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId
                  };
                  await s3Client.AbortMultipartUploadAsync(abortMPURequest);
              }
          }
      }
  }
  ```

------

# Memblokir atau membuka blokir SSE-C untuk bucket tujuan umum
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

Sebagian besar kasus penggunaan modern di Amazon S3 tidak lagi menggunakan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) karena tidak memiliki fleksibilitas enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) atau enkripsi sisi server dengan kunci KMS (SSE-KMS). AWS Persyaratan SSE-C untuk menyediakan kunci enkripsi setiap kali Anda berinteraksi dengan data terenkripsi SSE-C Anda membuatnya tidak praktis untuk membagikan kunci SSE-C Anda dengan pengguna, peran, atau AWS layanan lain yang membaca data dari bucket S3 Anda agar dapat beroperasi pada data Anda.

Untuk membatasi jenis enkripsi sisi server yang dapat Anda gunakan di bucket tujuan umum, Anda dapat memilih untuk memblokir permintaan penulisan SSE-C dengan memperbarui konfigurasi enkripsi default untuk bucket Anda. Konfigurasi tingkat ember ini memblokir permintaan untuk mengunggah objek yang menentukan SSE-C. Ketika SSE-C diblokir untuk bucket, setiap,, `PutObject` `CopyObject``PostObject`, atau Multipart Upload atau permintaan replikasi yang menentukan enkripsi SSE-C akan ditolak dengan kesalahan HTTP 403. `AccessDenied`

Pengaturan ini adalah parameter pada `PutBucketEncryption` API dan juga dapat diperbarui menggunakan Konsol S3, AWS CLI, AWS SDKs dan, jika Anda memiliki `s3:PutEncryptionConfiguration` izin.

Nilai yang valid adalah`SSE-C`, yang memblokir enkripsi SSE-C untuk bucket tujuan umum, dan`NONE`, yang memungkinkan penggunaan SSE-C untuk menulis ke bucket.

**penting**  
Seperti yang [diumumkan pada 19 November 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service menerapkan pengaturan keamanan bucket default baru yang secara otomatis menonaktifkan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk semua bucket tujuan umum baru. Untuk bucket yang ada tanpa objek terenkripsi SSE-C, Amazon S3 juga akan menonaktifkan SSE-C untuk semua permintaan tulis baru. Akun AWS Untuk Akun AWS penggunaan SSE-C, Amazon S3 tidak akan mengubah konfigurasi enkripsi bucket pada bucket yang ada di akun tersebut. Penyebaran ini dimulai pada 6 April 2026, dan akan selesai selama beberapa minggu ke depan di 37 AWS Wilayah, termasuk Wilayah AWS Tiongkok dan AWS GovCloud (AS).  
Dengan perubahan ini, aplikasi yang membutuhkan enkripsi SSE-C harus sengaja mengaktifkan SSE-C dengan menggunakan operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API setelah membuat bucket baru. Untuk informasi lebih lanjut tentang perubahan ini, lihat[Pengaturan SSE-C standar untuk bucket baru FAQ](default-s3-c-encryption-setting-faq.md).

## Izin
<a name="bucket-encryption-permissions"></a>

Gunakan `PutBucketEncryption` API atau Konsol S3 AWS SDKs, atau AWS CLI untuk memblokir atau membuka blokir jenis enkripsi untuk bucket tujuan umum. Anda harus memiliki izin berikut:
+ `s3:PutEncryptionConfiguration`

Gunakan `GetBucketEncryption` API atau Konsol S3 AWS SDKs, atau AWS CLI untuk melihat jenis enkripsi yang diblokir untuk bucket tujuan umum. Anda harus memiliki izin berikut:
+ `s3:GetEncryptionConfiguration`

## Pertimbangan sebelum memblokir enkripsi SSE-C
<a name="considerations-before-blocking-sse-c"></a>

Setelah Anda memblokir SSE-C untuk bucket apa pun, perilaku enkripsi berikut akan berlaku:
+ Tidak ada perubahan pada enkripsi objek yang ada di bucket sebelum Anda memblokir enkripsi SSE-C.
+ Setelah Anda memblokir enkripsi SSE-C, Anda dapat terus membuat GetObject dan HeadObject meminta objek yang sudah ada sebelumnya yang dienkripsi dengan SSE-C selama Anda memberikan header SSE-C yang diperlukan pada permintaan.
+ Ketika SSE-C diblokir untuk bucket, permintaan Unggahan`PutObject`,, `CopyObject``PostObject`, atau Multipart apa pun yang menentukan enkripsi SSE-C akan ditolak dengan kesalahan HTTP 403. `AccessDenied`
+ Jika bucket tujuan untuk replikasi telah diblokir SSE-C dan objek sumber yang direplikasi dienkripsi dengan SSE-C, replikasi akan gagal dengan kesalahan HTTP 403. `AccessDenied`

Jika Anda ingin meninjau apakah Anda menggunakan enkripsi SSE-C di salah satu bucket Anda sebelum memblokir jenis enkripsi ini, Anda dapat menggunakan alat seperti [AWS CloudTrail](https://aws.amazon.com/cloudtrail/)untuk memantau akses ke data Anda. [Posting blog](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/) ini menunjukkan kepada Anda cara mengaudit metode enkripsi untuk unggahan objek secara real time. Anda juga dapat mereferensikan [artikel re:Post](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) ini untuk memandu Anda melalui laporan Inventaris S3 kueri untuk melihat apakah Anda memiliki objek terenkripsi SSE-C.

### Langkah-langkah
<a name="block-sse-c-gpb-steps"></a>

Anda dapat memblokir atau membuka blokir enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk bucket tujuan umum dengan menggunakan konsol Amazon S3, (), Amazon S3 REST API AWS Command Line Interface ,AWS CLI dan. AWS SDKs

### Menggunakan konsol S3
<a name="block-sse-c-gpb-console"></a>

Untuk memblokir atau membuka blokir enkripsi SSE-C untuk bucket menggunakan konsol Amazon S3:

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

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

1. Pilih bucket yang ingin Anda blokir enkripsi SSE-C.

1. Pilih tab **Properties** untuk bucket.

1. Arahkan ke panel properti **Enkripsi Default** untuk bucket dan pilih **Edit**.

1. Di bagian **Jenis enkripsi yang diblokir**, centang kotak di sebelah Enkripsi **sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk memblokir enkripsi SSE-C** atau hapus centang pada kotak ini untuk mengizinkan SSE-C.

1. Pilih **Simpan Perubahan**.

### Menggunakan AWS CLI
<a name="block-sse-c-gpb-cli"></a>

*Untuk menginstal AWS CLI, lihat [Menginstal AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) di Panduan Pengguna.AWS Command Line Interface *

Contoh CLI berikut menunjukkan cara memblokir atau membuka blokir enkripsi SSE-C untuk bucket tujuan umum dengan menggunakan file. AWS CLI Untuk menggunakan perintah ganti *user input placeholders* dengan informasi Anda sendiri.

**Permintaan untuk memblokir enkripsi SSE-C untuk bucket tujuan umum:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**Permintaan untuk mengaktifkan penggunaan enkripsi SSE-C pada bucket tujuan umum:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## Menggunakan AWS SDKs
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

Contoh berikut menunjukkan kepada Anda cara memblokir atau membuka blokir enkripsi SSE-C menulis ke bucket tujuan umum Anda dengan menggunakan AWS SDKs

**Contoh - PutBucketEncryption permintaan pengaturan konfigurasi enkripsi default ke SSE-S3 dan memblokir SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**Contoh - PutBucketEncryption permintaan pengaturan konfigurasi enkripsi default ke SSE-S3 dan membuka blokir SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**Contoh - PutBucketEncryption permintaan pengaturan konfigurasi enkripsi default ke SSE-S3 dan memblokir SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**Contoh - PutBucketEncryption permintaan pengaturan konfigurasi enkripsi default ke SSE-S3 dan membuka blokir SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## Penggunaan API REST
<a name="bucket-tag-add-api"></a>

Untuk informasi tentang dukungan Amazon S3 REST API untuk memblokir atau membuka blokir enkripsi SSE-C untuk bucket tujuan umum, lihat bagian berikut di Referensi API Layanan Penyimpanan Sederhana *Amazon*:
+ [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html)tipe data yang digunakan dalam tipe [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)data operasi [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)dan [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)API.

# Pengaturan SSE-C standar untuk bucket baru FAQ
<a name="default-s3-c-encryption-setting-faq"></a>

**penting**  
Seperti yang [diumumkan pada 19 November 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service menerapkan pengaturan keamanan bucket default baru yang secara otomatis menonaktifkan enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) untuk semua bucket tujuan umum baru. Untuk bucket yang ada tanpa objek terenkripsi SSE-C, Amazon S3 juga akan menonaktifkan SSE-C untuk semua permintaan tulis baru. Akun AWS Untuk Akun AWS penggunaan SSE-C, Amazon S3 tidak akan mengubah konfigurasi enkripsi bucket pada bucket yang ada di akun tersebut. Penyebaran ini dimulai pada 6 April 2026, dan akan selesai selama beberapa minggu ke depan di 37 AWS Wilayah, termasuk Wilayah AWS Tiongkok dan AWS GovCloud (AS).  
Dengan perubahan ini, aplikasi yang membutuhkan enkripsi SSE-C harus sengaja mengaktifkan SSE-C dengan menggunakan operasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API setelah membuat bucket baru.

Bagian berikut menjawab pertanyaan tentang pembaruan ini.

**1. Pada April 2026, akankah pengaturan SSE-C baru berlaku untuk semua bucket yang baru dibuat?**

Ya. Penyebaran ini dimulai pada 6 April 2026, dan akan selesai selama beberapa minggu ke depan di 37 AWS Wilayah, termasuk Wilayah AWS Tiongkok dan AWS GovCloud (AS).

**catatan**  
Setelah penyebaran selesai, bucket yang baru dibuat di semua AWS Wilayah kecuali Timur Tengah (Bahrain) dan Timur Tengah (UEA) akan menonaktifkan SSE-C secara default.

**2. Berapa lama waktu yang dibutuhkan sebelum peluncuran ini mencakup semua Wilayah? AWS **

Penyebaran dimulai pada 6 April 2026, dan akan selesai dalam beberapa minggu.

**3. Bagaimana saya tahu bahwa pembaruan sudah selesai?**

Anda dapat dengan mudah menentukan apakah perubahan telah selesai di AWS Wilayah Anda dengan membuat bucket baru dan memanggil operasi [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)API untuk menentukan apakah enkripsi SSE-C dinonaktifkan. Setelah pembaruan selesai, semua bucket tujuan umum baru akan secara otomatis menonaktifkan enkripsi SSE-C secara default. Anda dapat menyesuaikan pengaturan ini setelah membuat bucket S3 dengan memanggil operasi [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API.

**4. Akankah Amazon S3 memperbarui konfigurasi bucket saya yang ada?**

Jika AWS akun Anda tidak memiliki objek terenkripsi SSE-C, AWS akan menonaktifkan enkripsi SSE-C pada semua bucket yang ada. Jika ada bucket di AWS akun Anda yang memiliki objek terenkripsi SSE-C, tidak AWS akan mengubah konfigurasi bucket pada bucket mana pun di akun tersebut. Setelah `CreateBucket` perubahan selesai untuk AWS Wilayah Anda, pengaturan default baru akan berlaku untuk semua bucket tujuan umum yang baru. 

 **5. Dapatkah saya menonaktifkan enkripsi SSE-C untuk bucket saya sebelum pembaruan selesai?** 

Ya. Anda dapat menonaktifkan enkripsi SSE-C untuk bucket apa pun dengan memanggil operasi [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API dan menentukan header baru. `BlockedEncryptionTypes` 

**6. Dapatkah saya menggunakan SSE-C untuk mengenkripsi data di bucket baru saya?**

Ya. Sebagian besar kasus penggunaan modern di Amazon S3 tidak lagi menggunakan SSE-C karena tidak memiliki fleksibilitas enkripsi sisi server adalah dengan kunci terkelola Amazon S3 (SSE-S3) atau enkripsi sisi server dengan kunci KMS (SSE-KMS). AWS Jika Anda perlu menggunakan enkripsi SSE-C di bucket baru, Anda dapat membuat bucket baru dan kemudian mengaktifkan penggunaan enkripsi SSE-C dalam permintaan terpisah. `PutBucketEncryption`

 **Contoh**

```
aws s3api create-bucket \  
bucket amzn-s3-demo-bucket \ 
region us-east-1 \ 
  
aws s3api put-bucket-encryption \  
-- bucket amzn-s3-demo-bucket \
-- server-side-encryption-configuration \
'{ \Rules\: [{   
   {   
   \ApplyServerSideEncryptionByDefault\: {   
     \SSEAlgorithm\: \AES256\,  
    },   
   \BlockedEncryptionTypes\: [  
     \EncryptionType\:\NONE\]   
   }   
   }]   
}'
```

**catatan**  
Anda harus memiliki `s3:PutEncryptionConfiguration` izin untuk memanggil `PutBucketEncryption` API. 

**7. Bagaimana cara memblokir SSE-C memengaruhi permintaan ke bucket saya?**

Ketika SSE-C diblokir untuk bucket, setiap,, `PutObject` `CopyObject``PostObject`, atau Multipart Upload atau permintaan replikasi yang menentukan enkripsi SSE-C akan ditolak dengan kesalahan HTTP 403. `AccessDenied` 

# Melindungi data menggunakan enkripsi di sisi klien
<a name="UsingClientSideEncryption"></a>

*Enkripsi di sisi klien* adalah tindakan mengenkripsi data Anda secara lokal untuk membantu memastikan keamanannya saat sedang transit dan saat disimpan. Untuk mengenkripsi objek Anda sebelum mengirimnya ke Amazon S3, gunakan Klien Enkripsi Amazon S3. Ketika objek Anda dienkripsi dengan cara ini, objek Anda tidak terpapar ke pihak ketiga mana pun, termasuk. AWS Amazon S3 menerima objek Anda yang sudah dienkripsi; Amazon S3 tidak berperan dalam mengenkripsi atau mendekripasi objek Anda. Anda dapat menggunakan Klien Enkripsi Amazon S3 dan [enkripsi di sisi server](serv-side-encryption.md) untuk mengenkripsi data Anda. Saat Anda mengirim objek terenkripsi ke Amazon S3, Amazon S3 tidak mengenali objek sebagai dienkripsi, hanya mendeteksi objek biasa.

Klien Enkripsi Amazon S3 berfungsi sebagai perantara antara Anda dan Amazon S3. Setelah Anda membuat instans Klien Enkripsi Amazon S3, objek Anda secara otomatis dienkripsi dan didekripsi sebagai bagian dari Amazon S3 dan permintaan `PutObject` dan `GetObject` Anda. Semua objek Anda dienkripsi dengan kunci data unik. Klien Enkripsi Amazon S3 tidak menggunakan atau berinteraksi dengan kunci bucket, meskipun Anda menentukan kunci KMS sebagai kunci pembungkus.

*Panduan Pengembang Klien Enkripsi Amazon S3* berfokus pada versi 3.0 dan yang lebih baru dari Klien Enkripsi Amazon S3. Untuk informasi selengkapnya, lihat [Apa itu Klien Enkripsi Amazon S3?](https://docs.aws.amazon.com//amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html) dalam *Panduan Pengembang Klien Enkripsi Amazon S3*.

Untuk informasi selengkapnya tentang versi klien Enkripsi Amazon S3 sebelumnya, lihat Panduan Pengembang AWS SDK untuk bahasa pemrograman Anda.
+ [AWS SDK untuk Java](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/examples-crypto.html)
+ [AWS SDK untuk .NET](https://docs.aws.amazon.com//sdk-for-net/v3/developer-guide/kms-keys-s3-encryption.html)
+ [AWS SDK untuk Go](https://docs.aws.amazon.com//sdk-for-go/v1/developer-guide/welcome.html)
+ [AWS SDK untuk PHP](https://docs.aws.amazon.com//sdk-for-php/v3/developer-guide/s3-encryption-client.html)
+ [AWS SDK untuk Ruby](https://docs.aws.amazon.com//sdk-for-ruby/v3/api/Aws/S3/Encryption.html)
+ [AWS SDK untuk C\$1\$1](https://docs.aws.amazon.com//sdk-for-cpp/v1/developer-guide/welcome.html)

# Melindungi data dalam perjalanan dengan enkripsi
<a name="UsingEncryptionInTransit"></a>

Amazon S3 mendukung protokol HTTP dan HTTPS untuk transmisi data. HTTP mentransmisikan data dalam teks biasa, sedangkan HTTPS menambahkan lapisan keamanan dengan mengenkripsi data menggunakan Transport Layer Security (TLS). TLS melindungi dari penyadapan, gangguan data, dan serangan. man-in-the-middle Sementara lalu lintas HTTP diterima, sebagian besar implementasi menggunakan enkripsi dalam perjalanan dengan HTTPS dan TLS untuk melindungi data saat bergerak antara klien dan Amazon S3.

## TLS 1.2 dan TLS 1.3 Support
<a name="UsingEncryptionInTransit.TLS-support"></a>

Amazon S3 mendukung TLS 1.2 dan TLS 1.3 untuk koneksi HTTPS di semua titik akhir API untuk semua. Wilayah AWS S3 secara otomatis menegosiasikan perlindungan TLS terkuat yang didukung oleh perangkat lunak klien Anda, dan titik akhir S3 yang Anda akses. AWS Alat saat ini (2014 atau yang lebih baru) termasuk AWS SDKs dan AWS CLI secara otomatis default ke TLS 1.3 tanpa tindakan yang diperlukan di pihak Anda. Anda dapat mengganti negosiasi otomatis ini melalui pengaturan konfigurasi klien untuk menentukan versi TLS tertentu jika kompatibilitas mundur ke TLS 1.2 diperlukan. Saat menggunakan TLS 1.3, Anda dapat secara opsional mengonfigurasi pertukaran kunci kuantum pasca hibrida (ML-KEM) untuk membuat permintaan tahan kuantum ke Amazon S3. Untuk informasi selengkapnya, lihat [Mengkonfigurasi TLS pasca-kuantum hibrida untuk klien Anda](pqtls-how-to.md). 

**catatan**  
TLS 1.3 didukung di semua titik akhir S3, kecuali untuk Amazon AWS PrivateLink S3 dan Titik Akses Multi-Wilayah.

## Memantau penggunaan TLS
<a name="UsingEncryptionInTransit.monitoring"></a>

Anda dapat menggunakan log akses server Amazon S3 atau AWS CloudTrail untuk memantau permintaan ke bucket Amazon S3. Kedua opsi logging merekam versi TLS dan cipher suite yang digunakan dalam setiap permintaan.
+ **Log akses server Amazon S3** — Pencatatan akses server menyediakan catatan terperinci untuk permintaan yang dibuat ke bucket. Misalnya, informasi log akses dapat berguna dalam audit keamanan dan akses. Untuk informasi selengkapnya, lihat [Server Amazon S3 mengakses format log](LogFormat.md).
+ **AWS CloudTrail**— [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)adalah layanan yang menyediakan catatan tindakan yang diambil oleh pengguna, peran, atau AWS layanan. CloudTrail menangkap semua panggilan API untuk Amazon S3 sebagai peristiwa. Untuk informasi selengkapnya, lihat [Acara Amazon S3 CloudTrail](cloudtrail-logging-s3-info.md).

## Memberlakukan enkripsi dalam transit
<a name="UsingEncryptionInTransit.enforcement"></a>

Ini adalah praktik terbaik keamanan untuk menegakkan enkripsi data dalam perjalanan ke Amazon S3. Anda dapat menerapkan komunikasi khusus HTTP atau penggunaan versi TLS tertentu melalui berbagai mekanisme kebijakan. [Ini termasuk kebijakan berbasis sumber daya IAM untuk bucket S3 (kebijakan [bucket), Kebijakan Kontrol Layanan (), Kebijakan](bucket-policies.md)[Kontrol](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)[Sumber Daya (SCPs), dan kebijakan titik akhir VPC](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html). RCPs](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)

### Contoh kebijakan bucket untuk menegakkan enkripsi saat transit
<a name="UsingEncryptionInTransit.bucket-policy-example"></a>

Anda dapat menggunakan [kunci kondisi S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) `s3:TlsVersion` untuk membatasi akses ke bucket Amazon S3 berdasarkan versi TLS yang digunakan oleh klien. Untuk informasi selengkapnya, lihat [Contoh 6: Membutuhkan versi TLS minimum](amazon-s3-policy-keys.md#example-object-tls-version).

**Example kebijakan bucket yang memberlakukan TLS 1.3 menggunakan kunci kondisi `S3:TlsVersion`**  

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

Anda dapat menggunakan [kunci kondisi `aws:SecureTransport` global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dalam kebijakan bucket S3 untuk memeriksa apakah permintaan dikirim melalui HTTPS (TLS). Berbeda dengan contoh sebelumnya, kondisi ini tidak memeriksa versi TLS tertentu. Untuk informasi selengkapnya, lihat [Batasi Akses Hanya ke Permintaan HTTPS](example-bucket-policies.md#example-bucket-policies-use-case-HTTP-HTTPS-1).

**Example kebijakan bucket yang menerapkan HTTPS menggunakan kunci kondisi `aws:SecureTransport` global**  

```
{
    "Version":"2012-10-17",		 	 	 		 	 	 
    "Statement": [
     {
        "Sid": "RestrictToTLSRequestsOnly",		 	 	 
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket1",
            "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }
  ]
}
```

**Contoh kebijakan berdasarkan kedua kunci dan lebih banyak contoh**  
Anda dapat menggunakan kedua jenis kunci kondisi dalam contoh sebelumnya dalam satu kebijakan. Untuk informasi selengkapnya dan pendekatan penegakan hukum tambahan, lihat artikel Blog AWS Penyimpanan [Menerapkan enkripsi saat transit TLS1 dengan.2 atau lebih tinggi dengan Amazon S3](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/).

# Menggunakan TLS pasca-kuantum hibrida dengan Amazon S3
<a name="UsingEncryptionInTransit.PQ-TLS"></a>

Amazon S3 mendukung opsi pertukaran kunci pasca-kuantum hibrida untuk protokol enkripsi jaringan TLS. Anda dapat menggunakan opsi TLS ini ketika Anda membuat permintaan ke titik akhir Amazon S3 menggunakan TLS 1.3. Suite sandi klasik yang didukung S3 untuk sesi TLS membuat serangan brute force pada mekanisme pertukaran kunci tidak layak dengan teknologi saat ini. Namun, jika komputer kuantum yang relevan secara kriptografi menjadi praktis di masa depan, rangkaian sandi klasik yang digunakan dalam mekanisme pertukaran kunci TLS akan rentan terhadap serangan ini. Saat ini, industri ini selaras dengan pertukaran kunci pasca-kuantum hibrida yang menggabungkan elemen klasik dan pasca-kuantum untuk memastikan bahwa koneksi TLS Anda setidaknya sekuat dengan suite sandi klasik. Amazon S3 mendukung hibrida PQ-TLS, sesuai dengan spesifikasi standar industri, hari ini IANA

Jika Anda mengembangkan aplikasi yang mengandalkan kerahasiaan jangka panjang data yang melewati koneksi TLS, Anda harus mempertimbangkan rencana untuk bermigrasi ke kriptografi pasca-kuantum sebelum komputer kuantum skala besar tersedia untuk digunakan. Sebagai bagian dari model tanggung jawab bersama, S3 memungkinkan kriptografi aman kuantum pada titik akhir layanan kami. Karena browser dan aplikasi mengaktifkan PQ-TLS di sisinya, S3 akan memilih konfigurasi sekuat mungkin untuk mengamankan data dalam perjalanan.

**Jenis endpoint yang didukung dan Wilayah AWS**

TLS pasca-kuantum untuk Amazon S3 tersedia di semua. Wilayah AWS Untuk daftar titik akhir S3 untuk masing-masing titik Wilayah AWS, lihat titik akhir [Amazon Simple Storage Service dan kuota](https://docs.aws.amazon.com/general/latest/gr/s3.html) di. *Referensi Umum Amazon Web Services*

**catatan**  
TLS pasca-kuantum hibrida didukung untuk semua titik akhir S3 kecuali untuk Amazon AWS PrivateLink S3, Titik Akses Multi-Wilayah, dan Vektor S3.

## Menggunakan TLS pasca-kuantum hibrida dengan Amazon S3
<a name="pqtls-details"></a>

Anda harus mengonfigurasi klien yang membuat permintaan ke Amazon S3 untuk mendukung TLS pasca-kuantum hibrida. Saat menyiapkan lingkungan pengujian klien HTTP atau lingkungan produksi Anda, perhatikan informasi berikut:

**Enkripsi dalam Transit**

Hybrid post-quantum TLS hanya digunakan untuk enkripsi saat transit. Ini melindungi data Anda saat bepergian dari klien Anda ke titik akhir S3. Dukungan baru ini dikombinasikan dengan enkripsi sisi server Amazon S3 secara default menggunakan AES-256 algoritme menawarkan enkripsi tahan kuantum kepada pelanggan baik dalam perjalanan maupun saat istirahat. Untuk informasi selengkapnya tentang enkripsi sisi server di Amazon S3, lihat [Melindungi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) data dengan enkripsi sisi server.

**Klien yang Didukung**

Penggunaan TLS pasca-kuantum hibrida membutuhkan penggunaan klien yang mendukung fungsi ini. AWS SDKs dan alat memiliki kemampuan dan konfigurasi kriptografi yang berbeda antar bahasa dan runtime. Untuk mempelajari lebih lanjut tentang kriptografi pasca-kuantum untuk alat tertentu, lihat [Mengaktifkan TLS pasca-kuantum hibrida](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

**catatan**  
Rincian pertukaran kunci PQ-TLS untuk permintaan ke Amazon S3 tidak tersedia dalam AWS CloudTrail peristiwa atau log akses server S3.

## Pelajari lebih lanjut tentang TLS pasca-kuantum
<a name="pqtls-see-also"></a>

Untuk informasi selengkapnya tentang penggunaan TLS pasca-kuantum hibrida, lihat sumber daya berikut.
+ Untuk mempelajari tentang kriptografi pasca-kuantum di AWS, termasuk tautan ke posting blog dan makalah penelitian, lihat Kriptografi [Pasca-Kuantum](https://aws.amazon.com/security/post-quantum-cryptography/) untuk. AWS
+ Untuk selengkapnyas2n-tls, lihat [Memperkenalkans2n-tls, Implementasi dan [Penggunaan s2n-tls](https://github.com/aws/s2n-tls/tree/main/docs/usage-guide) TLS Open Source Baru](https://aws.amazon.com/blogs/security/introducing-s2n-a-new-open-source-tls-implementation/).
+ *Untuk informasi tentang Klien HTTP Runtime AWS Umum, lihat [Mengonfigurasi klien HTTP AWS berbasis CRT](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) di Panduan Pengembang.AWS SDK for Java 2.x *
+ Untuk informasi tentang proyek kriptografi pasca-kuantum di National Institute for Standards and Technology (NIST), lihat [Kriptografi Pasca Kuantum](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography).
+ Untuk informasi tentang standardisasi kriptografi pasca-kuantum NIST, lihat Standardisasi Kriptografi Pasca-Kuantum [NIST](https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization).

# Mengkonfigurasi TLS pasca-kuantum hibrida untuk klien Anda
<a name="pqtls-how-to"></a>

Untuk menggunakan PQ-TLS dengan Amazon S3, Anda perlu mengonfigurasi klien Anda untuk mendukung algoritme pertukaran kunci pasca-kuantum. Juga pastikan bahwa klien Anda mendukung pendekatan hibrida, yang menggabungkan kriptografi kurva elips tradisional dengan algoritma pasca-kuantum seperti ML-KEM (Mekanisme Enkapsulasi Kunci). Module-Lattice-Based 

Konfigurasi spesifik tergantung pada pustaka klien dan bahasa pemrograman Anda. Untuk informasi lebih lanjut, lihat [Mengaktifkan TLS pasca-kuantum hibrida](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

## Contoh konfigurasi klien: AWS SDK for Java 2
<a name="UsingEncryptionInTransit.PQ-TLS.configuration.java2-sdk"></a>

Dalam prosedur ini, tambahkan dependensi Maven untuk AWS Common Runtime HTTP Client. Selanjutnya, konfigurasikan klien HTTP yang lebih memilih TLS pasca-kuantum. Kemudian, buat klien Amazon S3 yang menggunakan klien HTTP.

**catatan**  
Klien HTTP Runtime AWS Umum, yang telah tersedia sebagai pratinjau, tersedia secara umum pada Februari 2023. Dalam rilis itu, `tlsCipherPreference` kelas dan parameter `tlsCipherPreference()` metode digantikan oleh parameter `postQuantumTlsEnabled()` metode. Jika Anda menggunakan contoh ini selama pratinjau, Anda perlu memperbarui kode Anda.

1. Tambahkan klien AWS Common Runtime ke dependensi Maven Anda. Sebaiknya gunakan versi terbaru yang tersedia. 

   Misalnya, pernyataan ini menambahkan versi `2.30.22` klien AWS Common Runtime ke dependensi Maven Anda. 

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. Untuk mengaktifkan suite sandi pasca-kuantum hibrida, tambahkan AWS SDK for Java 2.x ke proyek Anda dan inisialisasi. Kemudian aktifkan suite sandi pasca-kuantum hibrida pada klien HTTP Anda seperti yang ditunjukkan pada contoh berikut.

   Kode ini menggunakan parameter `postQuantumTlsEnabled()` metode untuk mengonfigurasi [klien HTTP runtime AWS umum](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) yang lebih menyukai rangkaian sandi pasca-kuantum hibrida yang direkomendasikan, ECDH dengan. ML-KEM Kemudian menggunakan klien HTTP yang dikonfigurasi untuk membangun instance klien asinkron Amazon S3,. [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) Setelah kode ini selesai, semua permintaan API [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/) pada instance menggunakan TLS `S3AsyncClient` pasca-kuantum hibrida.
**penting**  
Mulai v2.35.11, penelepon tidak perlu lagi mengatur untuk mengaktifkan TLS pasca-kuantum hibrida `.postQuantumTlsEnabled(true)` untuk klien Anda. Semua versi yang lebih baru dari v2.35.11 mengaktifkan TLS pasca-kuantum secara default.

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the Amazon S3 async client
   S3AsyncClient s3Async = S3AsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. Uji panggilan Amazon S3 Anda dengan TLS pasca-kuantum hibrida.

   Saat Anda memanggil operasi API Amazon S3 pada klien Amazon S3 yang dikonfigurasi, panggilan Anda ditransmisikan ke titik akhir Amazon S3 menggunakan TLS pasca-kuantum hibrida. Untuk menguji konfigurasi Anda, panggil Amazon S3 API, seperti. `[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)`

   ```
   ListBucketsResponse reponse = s3Async.listBuckets();
   ```

### Uji konfigurasi TLS pasca-kuantum hibrida Anda
<a name="pqtls-testing"></a>

Pertimbangkan untuk menjalankan pengujian berikut dengan rangkaian cipher hybrid pada aplikasi Anda yang memanggil Amazon S3.
+ Jalankan uji beban dan tolok ukur. Cipher suite hibrida melakukan secara berbeda dari algoritme pertukaran kunci tradisional. Anda mungkin perlu menyesuaikan batas waktu koneksi untuk memungkinkan waktu handshake yang lebih lama. Jika Anda menjalankan di dalam suatu AWS Lambda fungsi, perpanjang pengaturan batas waktu eksekusi.
+ Coba hubungkan dari lokasi yang berbeda. Tergantung jalur jaringan yang dibutuhkan permintaannya, Anda mungkin menemukan bahwa host perantara, proksi, atau firewall dengan deep packet inspection (DPI) memblokir permintaan. Ini mungkin hasil dari penggunaan cipher suite baru di [ClientHello](https://tools.ietf.org/html/rfc5246#section-7.4.1.2)bagian jabat tangan TLS, atau dari pesan pertukaran kunci yang lebih besar. Jika Anda terkendala saat menyelesaikan masalah ini, tanyakan kepada tim keamanan atau administrator IT Anda untuk memperbarui konfigurasi yang relevan dan membuka blokir rangkaian penyandian TLS baru. 