Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan enkripsi sisi server dengan AWS KMS kunci (SSE-KMS)
penting
Amazon S3 sekarang menerapkan enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) sebagai tingkat dasar enkripsi untuk 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 Amazon S3 API tambahan di AWS SDK AWS CLI dan. Untuk informasi selengkapnya, lihat FAQ enkripsi default.
Server-side enkripsi adalah enkripsi data di tujuannya oleh aplikasi atau layanan yang menerimanya.
Amazon S3 secara otomatis mengaktifkan enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) untuk unggahan objek baru.
Kecuali Anda menentukan sebaliknya, bucket digunakan SSE-S3 secara default untuk mengenkripsi objek. Namun, Anda dapat memilih untuk mengonfigurasi bucket untuk menggunakan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) keys (SSE-KMS) sebagai gantinya. Untuk informasi selengkapnya, lihat Menentukan enkripsi sisi server dengan AWS KMS (SSE-KMS).
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.
Jika Anda menggunakan kunci KMS, Anda dapat menggunakan AWS KMS melalui Konsol Manajemen AWS
-
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 tetapi tidak oleh Kon AWS KMS sol;
.
Kontrol keamanan di dalam 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 SSE-KMS enkripsi 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 dalam AWS Key Management Service Panduan Pengguna dan AWS KMS harga
Untuk petunjuk tentang cara mengizinkan pengguna IAM mengakses KMS-encrypted bucket, lihat Bucket Amazon S3 saya memiliki enkripsi default menggunakan AWS KMS kunci khusus. Bagaimana cara mengizinkan pengguna mengunduh dan mengunggah ke bucket?
Perizinan
Agar berhasil membuat PutObject permintaan untuk mengenkripsi objek dengan AWS KMS kunci ke Amazon S3, Anda memerlukan kms:GenerateDataKey izin pada kunci tersebut. Untuk mengunduh objek yang dienkripsi dengan a AWS KMS key, Anda memerlukan kms:Decrypt izin untuk kunci tersebut. Untuk melakukan upload multipart untuk mengenkripsi objek dengan sebuah AWS KMS key, Anda harus memiliki kms:Decrypt izin kms:GenerateDataKey dan untuk kunci tersebut.
penting
-
Tinjau izin yang diberikan dalam kebijakan kunci KMS Anda dengan cermat. Selalu batasi izin kebijakan kunci KMS yang dikelola pelanggan hanya untuk prinsipal dan AWS layanan IAM yang harus mengakses tindakan kunci yang relevan. AWS KMS Untuk informasi selengkapnya, lihat Kebijakan utama di AWS KMS.
-
Jika bucket digunakan sebagai tujuan untuk logging akses server Amazon S3, bucket tujuan harus menggunakan kunci terkelola Amazon S3 (SSE-S3). Jika bucket tujuan menggunakan enkripsi SSE-KMS default, Amazon S3 mungkin mengirimkan objek log yang dienkripsi dengan kunci yang tidak dapat Anda akses. Untuk mengatasi masalah ini, ubah enkripsi default bucket tujuan menjadi SSE-S3. Untuk informasi selengkapnya, lihat Mengaktifkan pencatatan akses server Amazon S3.
Topik
AWS KMS keys
Saat Anda menggunakan enkripsi sisi server dengan AWS KMS (SSE-KMS), Anda dapat menggunakan kunci terkel AWS ola default, atau Anda dapat menentukan kunci yang dikelola pelanggan 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 di Panduan Developer AWS Key Management Service .
Jika Anda tidak menentukan kunci yang dikelola pelanggan, Amazon S3 secara otomatis Kunci yang dikelola AWS membuat kunci saat Akun AWS pertama kali Anda menambahkan objek yang dienkripsi SSE-KMS ke bucket. Secara default, Amazon S3 menggunakan kunci KMS ini untuk SSE-KMS.
catatan
Objek yang dienkripsi menggunakan SSE-KMS dengan tidak Kunci yang dikelola AWS dapat dibagikan lintas akun. Jika Anda perlu berbagi SSE-KMS data lintas akun, Anda harus menggunakan kunci yang dikelola pelanggan dari AWS KMS.
Jika Anda ingin menggunakan kunci yang dikelola pelanggan untuk SSE-KMS, buat kunci yang dikelola pelanggan enkripsi simetris sebelum Anda mengonfigurasi SSE-KMS. Kemudian, saat Anda mengonfigurasi SSE-KMS untuk bucket Anda, tentukan kunci yang dikelola pelanggan yang ada. Untuk informasi selengkapnya tentang kunci enkripsi simetris, lihat Kunci KMS enkripsi simetris 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 dikel AWS ola dan dikelola pelanggan, lihat Kunci dan AWS kunci 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 di Panduan AWS Key Management Service Pengembang.
Menggunakan SSE-KMS enkripsi untuk operasi lintas akun
Saat menggunakan enkripsi untuk operasi lintas akun, perhatikan hal berikut:
-
Jika Nama AWS KMS key Sumber Daya Amazon (ARN) atau alias tidak disediakan pada waktu permintaan atau melalui konfigurasi enkripsi default bucket, Kunci yang dikelola AWS (
aws/s3) dari akun upload digunakan untuk enkripsi dan diperlukan untuk dekripsi. -
Kunci yang dikelola AWS (
aws/s3) dapat digunakan sebagai kunci KMS Anda untuk operasi lintas akun ketika prinsipal 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, sebaiknya gunakan kunci KMS ARN yang sepenuhnya memenuhi syarat. Jika Anda menggunakan alias kunci KMS sebagai gantinya AWS KMS , menyelesaikan 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 di Panduan Pengembang AWS Key Management Service .
Untuk informasi selengkapnya tentang kapan menggunakan kunci yang dikelola pelanggan dan kunci KMS terkel AWS ola, lihat Haruskah saya menggunakan kunci Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi objek saya di Amazon S3?
SSE-KMS alur kerja enkripsi
Jika Anda memilih untuk mengenkripsi data menggunakan kunci Kunci yang dikelola AWS atau kunci yang dikelola pelanggan, AWS KMS dan Amazon S3 lakukan tindakan enkripsi amplop berikut:
-
Amazon S3 meminta kunci data plaintext dan salinan kunci yang dienkripsi di bawah kunci KMS yang ditentukan.
-
AWS KMS menghasilkan kunci data, mengenkripsinya di bawah kunci KMS, dan mengirimkan kunci data plaintext dan kunci data terenkripsi ke Amazon S3.
-
Amazon S3 mengenkripsi data menggunkaan kunci data dan menghapus kunci plaintext dari memori sesegera mungkin setelah digunakan.
-
Amazon S3 menyimpan kunci data terenkripsi sebagai metadata dengan data terenkripsi.
Saat Anda meminta agar data Anda didekripsi, Amazon S3 dan AWS KMS lakukan tindakan berikut:
-
Amazon S3 mengirimkan kunci data terenkripsi ke AWS KMS dalam
Decryptpermintaan. -
AWS KMS mendekripsi kunci data terenkripsi dengan menggunakan kunci KMS yang sama dan mengembalikan kunci data plaintext ke Amazon S3.
-
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 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 .
Mengaudit SSE-KMS enkripsi
Untuk mengidentifikasi permintaan yang ditentukan SSE-KMS, Anda dapat menggunakan metrik Semua SSE-KMS permintaan dan% semua SSE-KMS permintaan di metrik Amazon S3 Storage Lens. 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 bucket SSE-KMS count yang diaktifkan dan bucket% SSE-KMS enabled untuk memahami jumlah bucket that (SSE-KMS) untuk enkripsi bucket default. Untuk informasi selengkapnya, lihat Menilai aktivitas penyimpanan dan penggunaan Anda dengan Lensa Penyimpanan S3. Untuk daftar lengkap metrik, lihat Glosarium metrik Lensa Penyimpanan S3.
Untuk mengaudit penggunaan AWS KMS kunci Anda untuk data SSE-KMS terenkripsi Anda, Anda dapat menggunakan AWS CloudTrail log. Anda bisa mendapatkan wawasan tentang operasi kriptografi Anda, seperti GenerateDataKey dan Decrypt. CloudTrail mendukung banyak nilai atribut untuk memfilter pencarian Anda, termasuk nama acara, nama pengguna, dan sumber acara.
Kunci Bucket Amazon S3
Saat mengonfigurasi enkripsi sisi server menggunakan AWS KMS (SSE-KMS), Anda dapat mengonfigurasi bucket untuk menggunakan S3 Bucket Keys. SSE-KMS Menggunakan kunci tingkat bucket untuk SSE-KMS dapat mengurangi biaya AWS KMS permintaan Anda hingga 99 persen dengan mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS
Saat Anda mengonfigurasi bucket untuk menggunakan S3 Bucket Key SSE-KMS pada objek baru, AWS KMS menghasilkan kunci tingkat bucket yang digunakan untuk membuat kunci data unik untuk objek dalam bucket. S3 Bucket Key ini digunakan untuk jangka waktu terbatas di Amazon S3, yang selanjutnya 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 Amazon S3 Bucket Keys.
Membutuhkan enkripsi di sisi server
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 upload object (s3:PutObject) kepada semua orang jika permintaan tidak menyertakan x-amz-server-side-encryption-aws-kms-key-id header yang meminta enkripsi sisi server dengan. SSE-KMS
Untuk mengharuskan suatu benda tertentu AWS KMS key digunakan untuk mengenkripsi objek dalam bucket, Anda dapat menggunakan kunci s3:x-amz-server-side-encryption-aws-kms-key-id kondisi. Untuk menentukan kunci KMS, Anda harus menggunakan kunci Nama Sumber Daya Amazon (ARN) yang ada dalam arn:aws:kms: format. AWS Identity and Access Management tidak memvalidasi jika string untuk region:acct-id:key/key-ids3:x-amz-server-side-encryption-aws-kms-key-id ada.
catatan
Saat Anda 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 Anda. Jika PutObject permintaan Anda aws:kms ditentukan 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 sesuai 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 di Referensi O torisasi Layanan.
Konteks enkripsi
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 oten tikasi tambahan (AAD) untuk mendukung enkripsi yang di autentikasi. Untuk informasi umum tentang konteks enkripsi, lihat Konteks enkripsi 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 S3 Bucket Key, objek ARN digunakan sebagai konteks enkripsi.
arn:aws:s3:::object_ARN -
Jika Anda menggunakan SSE-KMS dan mengaktifkan S3 Bucket Key, bucket ARN digunakan sebagai konteks enkripsi. Untuk informasi selengkapnya tentang Kunci Bucket S3, lihat Mengurangi biaya SSE-KMS dengan Amazon S3 Bucket Keys.
arn:aws:s3:::bucket_ARN
Anda dapat secara opsional menyediakan pasangan konteks enkripsi tambahan dengan menggunakan x-amz-server-side-encryption-context header dalam PutObject permintaan s3:. 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 ini.
"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::" }amzn-s3-demo-bucket1/file_name
Bila Anda menggunakan fitur S3 Bucket Key SSE-KMS s opsional, nilai konteks enkripsi adalah ARN dari bucket.
"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::" }amzn-s3-demo-bucket1
Mengirim permintaan untuk AWS KMS objek terenkripsi
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 kredenSIAL yang valid, seperti T AWS anda Tangan Versi 4 (atau AWS Tangan Versi 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) dan Proses penandatanganan Tanda Tangan Versi 4.
penting
Jika objek Anda menggunakan SSE-KMS, jangan mengirim header permintaan enkripsi untuk GET permintaan dan HEAD permintaan. Jika tidak, Anda akan mendapatkan kesalahan HTTP 400 Bad Request.