Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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 AWS CloudTrail log, S3 Inventory, S3 Storage Lens, konsol Amazon S3, dan sebagai header respons API Amazon S3 tambahan di dan. AWS Command Line Interface AWS SDKs Untuk informasi selengkapnya, lihat FAQ enkripsi default.
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 di 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 AWS Management Console
-
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 yang didukung oleh API AWS KMS, tetapi tidak oleh AWS KMSAWS Management Console
.
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 dalam AWS Key Management Service Panduan Pengguna dan AWS KMS harga
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 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.
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 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 tidak dapat dibagikan lintas akun. Jika Anda perlu membagikan data lintas akun SSE-KMS, Anda harus menggunakan kunci yang dikelola pelanggan 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 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 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 enkripsi SSE-KMS untuk operasi lintas akun
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 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?
Alur kerja enkripsi SSE-KMS
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 KMS yang ditentukan.
-
AWS KMS menghasilkan kunci data, mengenkripsinya di bawah kunci KMS, 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 KMS yang sama dan mengembalikan 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 KMS enkripsi simetris. 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 enkripsi SSE-KMS
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. 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 terenkripsi SSE-KMS Anda, Anda dapat menggunakan log. AWS CloudTrail 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 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 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.
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 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.
{ "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:
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 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 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 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.
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 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
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) dan Proses penandatanganan Tanda Tangan Versi 4.
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
.