View a markdown version of this page

Menentukan enkripsi sisi server dengan AWS KMS (SSE-KMS) untuk unggahan objek baru di bucket direktori - Amazon Simple Storage Service

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

Menentukan enkripsi sisi server dengan AWS KMS (SSE-KMS) untuk unggahan objek baru di bucket direktori

Untuk bucket direktori, untuk mengenkripsi data Anda dengan enkripsi sisi server, Anda dapat menggunakan enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) (default) atau enkripsi sisi server dengan AWS Key Management Service kunci () ().AWS KMS SSE-KMS Sebaiknya enkripsi default bucket menggunakan konfigurasi enkripsi yang diinginkan dan Anda tidak mengganti enkripsi default bucket dalam CreateSession permintaan atau permintaan PUT objek. Kemudian, objek baru secara otomatis dienkripsi dengan pengaturan enkripsi yang diinginkan. Untuk informasi selengkapnya tentang perilaku penggantian enkripsi dalam bucket direktori, lihat Menentukan enkripsi sisi server dengan AWS KMS untuk unggahan objek baru.

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat diam. Server-side enkripsi dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Jika Anda ingin menentukan jenis enkripsi yang berbeda untuk bucket direktori, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) keys (SSE-KMS). Untuk mengenkripsi objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Kunci yang dikelola AWS (aws/s3) tidak didukung. SSE-KMS Konfigurasi Anda hanya dapat mendukung 1 kunci yang dikelola pelanggan per bucket direktori selama masa pakai bucket. Setelah menentukan kunci yang dikelola pelanggan untuk SSE-KMS, Anda tidak dapat mengganti kunci yang dikelola pelanggan untuk SSE-KMS konfigurasi bucket. Kemudian, ketika Anda menentukan pengaturan enkripsi sisi server untuk objek baru dengan SSE-KMS, Anda harus memastikan kunci enkripsi adalah kunci yang dikelola pelanggan yang sama dengan yang Anda tentukan untuk konfigurasi enkripsi default bucket direktori. Untuk menggunakan kunci baru yang dikelola pelanggan untuk data Anda, sebaiknya menyalin objek yang ada ke bucket direktori baru dengan kunci yang dikelola pelanggan baru.

Anda dapat menerapkan enkripsi saat mengunggah objek baru, atau menyalin objek yang sudah ada. Jika Anda mengubah enkripsi objek, sebuah objek baru akan dibuat untuk menggantikan objek yang lama.

Anda dapat menentukan SSE-KMS dengan menggunakan operasi REST API, AWS SDK, dan AWS Command Line Interface (AWS CLI).

catatan
  • Untuk bucket direktori, perilaku penggantian enkripsi adalah sebagai berikut:

    • Saat Anda menggunakan RES CreateSession T API untuk mengotentikasi dan mengotorisasi permintaan API titik akhir Zonal kecuali CopyObject dan UploadPartCopy, Anda dapat mengganti setelan enkripsi ke SSE-S3 atau SSE-KMS hanya jika Anda menentukan enkripsi default bucket dengan sebelumnya. SSE-KMS

    • Saat Anda menggunakan CreateSession dengan AWS CLI atau SDK untuk mengo AWS tentikasi dan mengotorisasi permintaan API titik akhir Zonal kecuali CopyObject dan UploadPartCopy, Anda tidak dapat mengganti pengaturan enkripsi sama sekali.

    • Saat membuat CopyObject permintaan, Anda dapat mengganti pengaturan enkripsi ke SSE-S3 atau ke SSE-KMS hanya jika Anda menentukan enkripsi default bucket dengan SSE-KMS sebelumnya. Saat membuat UploadPartCopy permintaan, Anda tidak dapat mengganti pengaturan enkripsi.

  • 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 di Panduan Pengembang AWS Key Management Service .

  • 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 di Panduan Pengembang AWS Key Management Service .

catatan

Hanya 1 kunci yang dikelola pelanggan yang didukung per bucket direktori selama masa pakai bucket. Kunci yang dikelola AWS (aws/s3) tidak didukung. Setelah menentukan SSE-KMS konfigurasi enkripsi default bucket dengan kunci yang dikelola pelanggan, Anda tidak dapat mengubah kunci yang dikelola pelanggan untuk SSE-KMS konfigurasi bucket.

Untuk operasi API titik akhir Zonal (tingkat objek) kecuali CopyObject dan UploadPartCopy, Anda mengotentikasi dan mengotorisasi permintaan untuk latensi rendah. CreateSession Sebaiknya enkripsi default bucket menggunakan konfigurasi enkripsi yang diinginkan dan Anda tidak mengganti enkripsi default bucket dalam CreateSession permintaan atau permintaan PUT objek. Kemudian, objek baru secara otomatis dienkripsi dengan pengaturan enkripsi yang diinginkan. Untuk mengenkripsi objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Kemudian, ketika sesi dibuat untuk operasi API titik akhir Zonal, objek baru secara otomatis dienkripsi dan didekripsi dengan SSE-KMS dan S3 Bucket Keys selama sesi berlangsung. Untuk informasi selengkapnya tentang perilaku penggantian enkripsi dalam bucket direktori, lihat Menentukan enkripsi sisi server dengan AWS KMS untuk unggahan objek baru.

Dalam panggilan API titik akhir Zonal (kecuali CopyObject dan UploadPartCopy) menggunakan REST API, Anda tidak dapat mengganti nilai pengaturan enkripsi (x-amz-server-side-encryption,, x-amz-server-side-encryption-aws-kms-key-idx-amz-server-side-encryption-context, danx-amz-server-side-encryption-bucket-key-enabled) dari permintaan. CreateSession Anda tidak perlu secara eksplisit menentukan nilai setelan enkripsi ini dalam panggilan API titik akhir Zonal, dan Amazon S3 akan menggunakan nilai setelan enkripsi dari CreateSession permintaan untuk melindungi objek baru di bucket direktori.

catatan

Saat Anda menggunakan AWS CLI atau AWS SDK, forCreateSession, token sesi disegarkan secara otomatis untuk menghindari gangguan layanan saat sesi berakhir. SDK AWS CLI atau menggunakan konfigurasi enkripsi default bucket untuk CreateSession permintaan. AWS Tidak didukung untuk mengganti nilai pengaturan enkripsi dalam CreateSession permintaan. Selain itu, dalam panggilan API titik akhir Zonal (kecuali CopyObject dan UploadPartCopy), tidak didukung untuk mengganti nilai pengaturan enkripsi dari permintaan. CreateSession

Untuk CopyObject, untuk mengenkripsi salinan objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Kemudian, ketika Anda menentukan pengaturan enkripsi sisi server untuk salinan objek baru SSE-KMS, Anda harus memastikan kunci enkripsi adalah kunci yang dikelola pelanggan yang sama dengan yang Anda tentukan untuk konfigurasi enkripsi default bucket direktori. Untuk UploadPartCopy, untuk mengenkripsi salinan bagian objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS sebagai konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Anda tidak dapat menentukan pengaturan enkripsi sisi server untuk salinan bagian objek baru dengan SSE-KMS header UploadPartCopy permintaan. Selain itu, pengaturan enkripsi yang Anda berikan dalam CreateMultipartUpload permintaan harus sesuai dengan konfigurasi enkripsi default dari bucket tujuan.

Operasi REST API Amazon S3 yang mendukung SSE-KMS

Operasi REST API tingkat objek berikut dalam bucket direktori menerima headerx-amz-server-side-encryption,x-amz-server-side-encryption-aws-kms-key-id, dan x-amz-server-side-encryption-context permintaan.

  • CreateSession- Saat Anda menggunakan operasi API titik akhir Zonal (tingkat objek) (kecuali CopyObject dan UploadPartCopy), Anda dapat menentukan header permintaan ini.

  • PutObject–Saat Anda mengunggah data dengan menggunakan operasi API PUT, Anda dapat menentukan header permintaan ini.

  • CopyObject–Saat Anda menyalin objek, Anda memiliki objek sumber dan objek target. Ketika Anda mener SSE-KMS uskan header dengan CopyObject operasi, mereka hanya diterapkan ke objek target.

  • CreateMultipartUpload- Saat Anda mengunggah objek besar dengan menggunakan operasi API upload multipart, 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.

penting
  • Semua GET dan PUT permintaan untuk objek yang dilindungi oleh AWS KMS gagal jika Anda tidak membuat permintaan ini dengan menggunakan 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 BadRequest kesalahan HTTP 400.

Konteks enkripsi (x-am z-server-side-encryption-context)

Jika Anda menentukanx-amz-server-side-encryption:aws:kms, API Amazon S3 mendukung Anda untuk secara opsional menyediakan konteks enkripsi eksplisit dengan x-amz-server-side-encryption-context header. Untuk bucket direktori, konteks enkripsi adalah sekumpulan pasangan kunci-nilai yang berisi informasi kontekstual tentang data. Nilai harus sesuai dengan konteks enkripsi default — bucket Amazon Resource Name (ARN). Nilai konteks enkripsi tambahan tidak didukung.

Untuk informasi tentang konteks enkripsi dalam bucket direktori, lihatKonteks enkripsi. Untuk informasi umum tentang konteks enkripsi, lihat AWS Key Management Service Konsep-Konteks enkripsi dalam Panduan Pengembang AWS Key Management Service .

AWS KMS ID kunci (x-am z-server-side-encryption-aws-kms-key-id)

Anda dapat menggunakan header x-amz-server-side-encryption-aws-kms-key-id untuk menentukan ID CMK, yang digunakan untuk melindungi data.

SSE-KMS Konfigurasi Anda hanya dapat mendukung 1 kunci yang dikelola pelanggan per bucket direktori selama masa pakai bucket. Kunci yang dikelola AWS (aws/s3) tidak didukung. Selain itu, setelah Anda menentukan kunci yang dikelola pelanggan untuk SSE-KMS, Anda tidak dapat mengganti kunci yang dikelola pelanggan untuk SSE-KMS konfigurasi bucket.

Anda dapat mengidentifikasi kunci yang dikelola pelanggan yang Anda tentukan untuk SSE-KMS konfigurasi bucket, dengan cara berikut:

  • Anda membuat permintaan operasi HeadObject API untuk menemukan nilai x-amz-server-side-encryption-aws-kms-key-id dalam respons Anda.

Untuk menggunakan kunci baru yang dikelola pelanggan untuk data Anda, sebaiknya menyalin objek yang ada ke bucket direktori baru dengan kunci yang dikelola pelanggan baru.

Untuk informasi tentang konteks enkripsi dalam bucket direktori, lihatAWS KMS keys.

Kunci Bucket S3 (x-am z-server-side-enkription-aws-bucket-key-diaktifkan)

S3 Bucket Keys selalu diaktifkan untuk PUT operasi GET dan dalam bucket direktori dan tidak dapat dinonaktifkan. S3 Bucket Keys tidak didukung, saat Anda menyalin objek SSE-KMS terenkripsi dari bucket tujuan umum ke bucket direktori, dari bucket direktori ke bucket tujuan umum, atau antara bucket direktori CopyObject, melalui UploadPartCopy, Copy operasi dalam Operasi Batch, atau import pekerjaan. Dalam hal ini, Amazon S3 melakukan panggilan ke AWS KMS setiap kali permintaan salinan dibuat untuk suatu KMS-encrypted objek. Untuk informasi tentang S3 Bucket Keys di bucket direktori, lihatKonteks enkripsi.

catatan

Saat Anda menggunakan AWS CLI, forCreateSession, token sesi disegarkan secara otomatis untuk menghindari gangguan layanan saat sesi berakhir. Tidak didukung untuk mengganti nilai pengaturan enkripsi untuk CreateSession permintaan. Selain itu, dalam panggilan API titik akhir Zonal (kecuali CopyObject dan UploadPartCopy), tidak didukung untuk mengganti nilai pengaturan enkripsi dari permintaan. CreateSession

Untuk mengenkripsi objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Kemudian, ketika sesi dibuat untuk operasi API titik akhir Zonal, objek baru secara otomatis dienkripsi dan didekripsi dengan SSE-KMS dan S3 Bucket Keys selama sesi berlangsung.

Untuk menggunakan AWS CLI perintah contoh 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 melakukan ini, gunakan put-bucket-encryption perintah untuk mengatur konfigurasi enkripsi default bucket direktori sebagai SSE-KMS (aws:kms). Secara khusus, tambahkan --server-side-encryption aws:kms header ke permintaan. Gunakan --ssekms-key-id example-key-id untuk menambahkan AWS KMS kunci yang dikelola pelanggan yang Anda buat. Jika Anda menentukan--server-side-encryption aws:kms, Anda harus memberikan ID AWS KMS kunci dari kunci yang dikelola pelanggan Anda. Bucket direktori tidak menggunakan kunci ter AWS kelola. Untuk contoh perintah, lihat Menggunakan AWS CLI.

Kemudian, saat Anda mengunggah objek baru dengan perintah berikut, Amazon S3 menggunakan pengaturan bucket untuk enkripsi default untuk mengenkripsi objek secara default.

aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key example-object-key --body filepath

Anda tidak perlu menambahkan -\-bucket-key-enabled secara eksplisit dalam perintah operasi API titik akhir Zonal Anda. S3 Bucket Keys selalu diaktifkan untuk PUT operasi GET dan dalam bucket direktori dan tidak dapat dinonaktifkan. S3 Bucket Keys tidak didukung, saat Anda menyalin objek SSE-KMS terenkripsi dari bucket tujuan umum ke bucket direktori, dari bucket direktori ke bucket tujuan umum, atau antara bucket direktori CopyObject, melalui UploadPartCopy, Copy operasi dalam Operasi Batch, atau import pekerjaan. Dalam hal ini, Amazon S3 melakukan panggilan ke AWS KMS setiap kali permintaan salinan dibuat untuk suatu KMS-encrypted objek.

Anda dapat menyalin objek dari bucket sumber (misalnya, bucket tujuan umum) ke bucket baru (misalnya, bucket direktori) dan menggunakan SSE-KMS enkripsi untuk objek tujuan. Untuk melakukan ini, gunakan put-bucket-encryption perintah untuk mengatur konfigurasi enkripsi default dari bucket tujuan (misalnya, bucket direktori) sebagai SSE-KMS (aws:kms). Untuk contoh perintah, lihat Menggunakan AWS CLI. Kemudian, saat Anda menyalin objek dengan perintah berikut, Amazon S3 menggunakan pengaturan bucket untuk enkripsi default untuk mengenkripsi objek secara default.

aws s3api copy-object --copy-source amzn-s3-demo-bucket/example-object-key --bucket bucket-base-name--zone-id--x-s3 --key example-object-key

Saat menggunakan AWS SDK, Anda dapat meminta Amazon S3 untuk digunakan AWS KMS keys untuk enkripsi sisi server. Contoh berikut menunjukkan cara menggunakan SSE-KMS dengan AWS SDK untuk Java dan .NET. Untuk informasi tentang SDK lain, lihat Contoh kode dan pustaka di Pusat Peng AWS embang.

catatan

Saat Anda menggunakan AWS SDK, forCreateSession, token sesi disegarkan secara otomatis untuk menghindari gangguan layanan saat sesi berakhir. Tidak didukung untuk mengganti nilai pengaturan enkripsi untuk CreateSession permintaan. Selain itu, dalam panggilan API titik akhir Zonal (kecuali CopyObject dan UploadPartCopy), tidak didukung untuk mengganti nilai pengaturan enkripsi dari permintaan. CreateSession

Untuk mengenkripsi objek baru dalam bucket direktori dengan SSE-KMS, Anda harus menentukan SSE-KMS konfigurasi enkripsi default bucket direktori dengan kunci KMS (khususnya, kunci yang dikelola pelanggan). Kemudian, ketika sesi dibuat untuk operasi API titik akhir Zonal, objek baru secara otomatis dienkripsi dan didekripsi dengan SSE-KMS dan S3 Bucket Keys selama sesi berlangsung.

Untuk informasi selengkapnya tentang menggunakan AWS SDK untuk mengatur konfigurasi enkripsi default dari bucket direktori seperti SSE-KMS, lihatMenggunakan AWS SDK.

penting

Saat Anda menggunakan enkripsi sisi server di Amazon S3, Anda harus memilih kunci KMS enkripsi simetris. AWS KMS key Amazon S3 hanya mendukung kunci KMS enkripsi simetris. Untuk informasi selengkapnya terkait kunci ini, lihat Membuat kunci enkripsi simetris KMS dalam Panduan Pengembang AWS Key Management Service .

Untuk informasi selengkapnya tentang membuat kunci yang dikelola pelanggan, lihat Mem AWS KMS program API di Panduan AWS Key Management Service Pengembang.