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 AWS CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons Amazon S3 tambahan di dan. API AWS Command Line Interface AWS SDKs Untuk informasi selengkapnya, lihat Enkripsi default FAQ.
Enkripsi di sisi server adalah enkripsi data di tempat tujuan 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 menggunakan 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-) sebagai gantinya. KMS 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.
Jika Anda menggunakan KMS kunci, Anda dapat menggunakan AWS KMS melalui AWS Management Console
-
Membuat, melihat, mengedit, memantau, mengaktifkan atau menonaktifkan, memutar, dan menjadwalkan penghapusan kunci secara terpusat. KMS
-
Tentukan kebijakan yang mengontrol bagaimana dan oleh siapa KMS kunci dapat digunakan.
-
Audit penggunaannya untuk membuktikan bahwa mereka digunakan dengan benar. Audit didukung oleh AWS KMS API, tetapi tidak oleh. AWS KMSAWS Management Console
Kontrol keamanan AWS KMS dapat membantu Anda memenuhi persyaratan kepatuhan terkait enkripsi. Anda dapat menggunakan KMS kunci 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
Izin
Untuk mengunggah objek yang dienkripsi dengan Amazon S3 AWS KMS key ke Amazon, Anda kms:GenerateDataKey
memerlukan izin pada kunci. Untuk mengunduh objek yang dienkripsi dengan AWS KMS key, Anda memerlukan kms:Decrypt
izin. Untuk informasi tentang AWS KMS izin yang diperlukan untuk upload multipart, lihat. Unggahan API dan izin multibagian
penting
Tinjau izin yang diberikan dalam kebijakan KMS utama Anda dengan cermat. Selalu batasi izin kebijakan KMS kunci yang dikelola pelanggan hanya untuk IAM prinsipal dan AWS layanan yang harus mengakses tindakan kunci yang relevan. AWS KMS Untuk informasi selengkapnya, lihat Kebijakan utama di AWS KMS.
Topik
AWS KMS keys
Bila Anda menggunakan enkripsi sisi server dengan AWS KMS (SSE-KMS), Anda dapat menggunakan kunci AWS terkelola default, atau Anda dapat menentukan kunci terkelola 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 dalam Panduan Pengembang AWS Key Management Service .
Jika Anda tidak menentukan kunci terkelola pelanggan, Amazon S3 secara otomatis membuat Kunci yang dikelola AWS saat pertama kali Anda Akun AWS menambahkan objek yang dienkripsi dengan SSE - KMS ke bucket. Secara default, Amazon S3 menggunakan KMS kunci ini untuk SSE -. KMS
catatan
Objek yang dienkripsi menggunakan SSE - KMS dengan tidak Kunci yang dikelola AWSdapat 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 terkelola pelanggan enkripsi simetris sebelum Anda mengonfigurasi SSE -KMS. Kemudian, saat Anda mengonfigurasi SSE - KMS untuk bucket Anda, tentukan kunci terkelola pelanggan yang ada. Untuk informasi selengkapnya tentang kunci enkripsi simetris, lihat KMSKunci enkripsi simetris di Panduan AWS Key Management Service Pengembang.
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 pelanggan di Panduan AWS Key Management Service Pengembang.
catatan
Saat Anda menggunakan enkripsi sisi server dengan kunci terkelola pelanggan yang disimpan di toko kunci eksternal, tidak seperti KMS kunci standar, Anda bertanggung jawab untuk memastikan ketersediaan dan daya tahan materi 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 AWS KMS key Amazon Resource Name (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 AWS Identity and Access Management (IAM) prinsipal yang Akun AWS sama dengan KMS kunci 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 yang dikelola pelanggan, sebaiknya gunakan KMS kunci yang sepenuhnya memenuhi syaratKMS. ARN Jika Anda menggunakan alias KMS kunci sebagai gantinya, AWS KMS selesaikan kunci dalam akun pemohon. Perilaku ini dapat menghasilkan data yang dienkripsi dengan KMS kunci milik pemohon, dan bukan pemilik bucket.
-
Anda harus menentukan kunci yang kepada Anda (pemohon) telah diberikan izin
Encrypt
. Untuk informasi selengkapnya, lihat Mengizinkan pengguna kunci menggunakan KMS kunci untuk operasi kriptografi di Panduan AWS Key Management Service Pengembang.
Untuk informasi selengkapnya tentang kapan menggunakan kunci terkelola pelanggan dan KMS kunci AWS terkelola, lihat Haruskah saya menggunakan Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi objek saya di Amazon
SSE- alur kerja KMS enkripsi
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:
-
Amazon S3 meminta kunci data plaintext dan salinan kunci yang dienkripsi di bawah kunci yang ditentukan. KMS
-
AWS KMS menghasilkan kunci data, mengenkripsinya di bawah KMS kunci, dan mengirimkan kunci data teks biasa 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 AWS KMS dan lakukan tindakan berikut:
-
Amazon S3 mengirimkan kunci data terenkripsi ke AWS KMS dalam permintaan.
Decrypt
-
AWS KMS mendekripsi kunci data terenkripsi dengan menggunakan kunci yang sama dan mengembalikan KMS kunci data teks biasa 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 AWS KMS key untuk Amazon S3, Anda harus memilih kunci enkripsi simetris. KMS Amazon S3 hanya mendukung kunci enkripsi simetris. KMS Untuk informasi selengkapnya tentang kunci ini, lihat KMSKunci enkripsi simetris di Panduan AWS Key Management Service Pengembang.
Audit SSE - enkripsi KMS
Untuk mengidentifikasi permintaan yang menentukan SSE -KMS, Anda dapat menggunakan metrik Semua SSE KMS permintaan dan% semua SSE KMS permintaan dalam 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 count SSE - KMS enabled bucket dan% SSE - KMS enabled bucket untuk memahami jumlah bucket yang (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 KMS terenkripsi AndaSSE, 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 Kunci Bucket S3 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
Saat Anda 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. 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 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
) untuk semua orang jika permintaan tidak menyertakan x-amz-server-side-encryption-aws-kms-key-id
header yang meminta enkripsi sisi server dengan -. SSE KMS
{ "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 KMS kunci, Anda harus menggunakan kunci Amazon Resource Name (ARN) yang ada dalam arn:aws:kms:
format. AWS Identity and Access Management tidak memvalidasi jika string untuk region
:acct-id
:key/key-id
s3:x-amz-server-side-encryption-aws-kms-key-id
ada.
catatan
Saat mengunggah objek, Anda dapat menentukan KMS kunci dengan menggunakan x-amz-server-side-encryption-aws-kms-key-id
header atau mengandalkan konfigurasi enkripsi bucket default 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 di Referensi Otorisasi 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 otentikasi tambahan (AAD) untuk mendukung enkripsi yang diautentikasi. 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 secara opsional dapat memberikan pasangan konteks enkripsi tambahan dengan menggunakan x-amz-server-side-encryption-context
header dalam permintaan s3: PutObject. 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 ARN nilai konteks enkripsi default untuk melacak permintaan yang relevan AWS CloudTrail dengan melihat Amazon S3 mana yang digunakan dengan ARN 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 bucket. ARN
"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::
" }
amzn-s3-demo-bucket1
Mengirim permintaan untuk objek AWS KMS 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 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 olehHTTP. 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 HTTP400 Bad Request
.