Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Enkripsi Disk dengan KMS CMK
EMR Tanpa Server mengenkripsi semua disk yang dilampirkan ke pekerja secara default menggunakan kunci enkripsi milik layanan. Anda dapat memilih untuk mengenkripsi disk ini menggunakan kunci terkelola AWS KMS pelanggan Anda sendiri (). CMKs Ini memberi Anda kontrol lebih besar atas kunci enkripsi Anda, termasuk kemampuan untuk membuat dan memelihara kebijakan utama, dan mengaudit penggunaan kunci.
Anda dapat mengonfigurasi enkripsi disk baik saat membuat aplikasi atau saat mengirimkan pekerjaan individual. Ketika diaktifkan di tingkat aplikasi, semua pekerjaan pada aplikasi tersebut mewarisi pengaturan enkripsi. Anda juga dapat mengganti default aplikasi dengan menentukan konfigurasi enkripsi disk saat mengirimkan pekerjaan.
catatan
EMR Enkripsi disk tanpa server hanya mendukung kunci KMS simetris. Tombol KMS asimetris tidak didukung. Anda harus menggunakan kunci KMS enkripsi simetris yang dibuat di. AWS KMS Untuk informasi lebih lanjut tentang AWS KMS, lihat Apa itu AWS KMS?
Menggunakan Konteks Enkripsi
Secara opsional, EMR Serverless menggunakan konteks enkripsi untuk menyediakan data otentikasi tambahan untuk operasi enkripsi. Konteks enkripsi adalah sekumpulan pasangan kunci-nilai yang dapat berisi data otentikasi tambahan non-rahasia. Konteks enkripsi terikat secara kriptografis ke data terenkripsi, sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi data.
Di EMR Tanpa Server, Anda dapat menentukan konteks enkripsi khusus saat mengonfigurasi enkripsi disk. Konteks enkripsi ini disertakan dalam AWS CloudTrail log untuk membantu Anda mengidentifikasi dan memahami operasi KMS Anda.
catatan
Jangan menyimpan informasi sensitif dalam konteks enkripsi seperti yang muncul di plaintext di AWS CloudTrail log.
Mengkonfigurasi Enkripsi Disk dengan Kunci yang Dikelola Pelanggan
CreateApplication
Untuk mengenkripsi disk dengan kunci KMS Anda sendiri, sertakan diskEncryptionConfiguration parameter saat membuat aplikasi EMR Tanpa Server.
aws emr-serverless create-application \ --type TYPE \ --name APPLICATION_ID \ --release-label RELEASE_LABEL \ --region AWS_REGION \ --disk-encryption-configuration '{ "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } }'
UpdateApplication
Untuk memperbarui konteks enkripsi and/or ARN kunci KMS, tentukan diskEncryptionConfiguration parameter dengan nilai baru saat memperbarui aplikasi.
aws emr-serverless update-application \ --name APPLICATION_ID \ --region AWS_REGION \ --disk-encryption-configuration '{ "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } }'
catatan
Untuk menghapus enkripsi disk yang dikonfigurasi pada aplikasi, berikan kosong diskEncryptionConfiguration selama pembaruan aplikasi.
StartJobRun
Untuk mengenkripsi disk dengan kunci KMS Anda sendiri, gunakan diskEncryptionConfiguration konfigurasi saat Anda mengirimkan pekerjaan.
--configuration-overrides '{ "diskEncryptionConfiguration": { "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } } }'
Titik akhir Public Livy
Untuk mengenkripsi disk dengan kunci KMS Anda sendiri saat membuat sesi Spark melalui titik akhir Livy publik, tentukan konfigurasi enkripsi di objek sesi. conf
data = { "kind": "pyspark", "heartbeatTimeoutInSecond": 60, "conf": { "emr-serverless.session.executionRoleArn": "role_arn", "spark.emr-serverless.disk.encryptionKeyArn": "key-arn", "spark.emr-serverless.disk.encryptionContext": "key1:value1,key2:value2" # Optional } } # Send request to create a session with the Livy API endpoint request = AWSRequest(method='POST', url=endpoint + "/sessions", data=json.dumps(data), headers=headers)
Izin yang diperlukan untuk enkripsi disk
Izin kunci enkripsi untuk EMR Tanpa Server
Ketika Anda mengenkripsi disk dengan kunci enkripsi Anda sendiri, Anda harus mengkonfigurasi izin kunci KMS berikut untuk prinsipal: emr-serverless.amazonaws.com
-
kms:GenerateDataKey: Untuk menghasilkan kunci data untuk mengenkripsi volume disk -
kms:Decrypt: Untuk mendekripsi kunci data saat mengakses konten disk terenkripsi
{ "Effect": "Allow", "Principal":{ "Service": "emr-serverless.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id" }, "StringEquals": { "kms:EncryptionContext:applicationId": "application-id", "aws:SourceAccount": "aws-account-id" } } }
Sebagai praktik keamanan terbaik, kami menyarankan Anda menambahkan kunci aws:SourceArn kondisi ke kebijakan kunci KMS. Kunci kondisi global IAM aws:SourceArn membantu memastikan bahwa EMR Tanpa Server menggunakan kunci KMS hanya untuk ARN aplikasi. Selain itu, termasuk kunci aws:SourceAccount kondisi menyediakan lapisan keamanan lain dengan membatasi penggunaan kunci KMS Anda untuk permintaan yang berasal dari ID AWS akun yang ditentukan dalam kondisi.
Peran runtime pekerjaan harus memiliki izin berikut dalam kebijakan IAM-nya:
{ "Sid": "Enable GDK and Decrypt", "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }
Izin pengguna yang diperlukan
Pengguna yang mengirimkan pekerjaan harus memiliki izin untuk menggunakan kunci. Anda dapat menentukan izin dalam kebijakan kunci KMS atau kebijakan IAM untuk pengguna, grup, atau peran. Jika pengguna yang mengirimkan pekerjaan tidak memiliki izin kunci KMS, EMR Tanpa Server menolak pengiriman job run.
Contoh kebijakan kunci
Kebijakan utama berikut memberikan izin untukkms:DescribeKey, kms:GenerateDataKey dankms:Decrypt:
-
kms:DescribeKey: Untuk memverifikasi bahwa kunci KMS yang dikelola pelanggan diaktifkan dan SIMETRIS sebelum menggunakannya.
{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal":{ "AWS": "arn:aws:iam::111122223333:user/user-name" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Enable GDK and Decrypt", "Effect": "Allow", "Principal":{ "AWS": "arn:aws:iam::111122223333:user/user-name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "emr-serverless.region.amazonaws.com", "kms:EncryptionContext:key": "value" } } }
Sebagai praktik keamanan terbaik, kami menyarankan Anda menambahkan kunci kms:viaService kondisi ke kebijakan kunci KMS. Ini membatasi penggunaan kunci KMS untuk permintaan validasi hanya dari emr-serverless.
Contoh kebijakan IAM
Kebijakan IAM berikut memberikan izin untukkms:DescribeKey, kms:GenerateDataKey dan. kms:Decrypt
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }
Pemantauan Penggunaan Kunci
Anda dapat memantau penggunaan kunci terkelola pelanggan Anda di EMR Tanpa Server melalui. AWS CloudTrail AWS CloudTrail menangkap semua panggilan API ke AWS KMS sebagai peristiwa, termasuk panggilan dari konsol EMR Tanpa Server, EMR API Tanpa Server, CLI, atau SDK. AWS AWS
Informasi yang diambil mencakup konteks enkripsi yang Anda tentukan, yang dapat membantu Anda mengidentifikasi dan mengaudit sumber daya EMR Tanpa Server tertentu yang menggunakan kunci KMS Anda. Misalnya, Anda mungkin melihat peristiwa yang mirip dengan yang berikut ini di AWS CloudTrail. Untuk informasi selengkapnya tentang penggunaan AWS CloudTrail, lihat Panduan AWS CloudTrail Pengguna.
GenerateDataKey
Contoh peristiwa untuk GenerateDataKey operasi saat EMR Serverless membuat volume disk terenkripsi
{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "principalId": "user", "invokedBy": "AWS Internal" }, "eventTime": "2025-07-28T21:43:51Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "ipAddress", "userAgent": "userAgent", "requestParameters": { "encryptionContext": { "applicationId": "test" }, "keyId": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample", "keySpec": "AES_256" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "145c963debe558dfb01848d2a4539da940f3478852f86cfe2f52d5df796a5a02" }, "requestID": "cc9d1c5e-97c4-4a4f-ae7a-e576sample", "eventID": "0b0fef09-f28d-4da8-a5a1-17b74sample", "readOnly": true, "resources": [ { "accountId": "account", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "accountId", "eventCategory": "Management" }
Dekripsi
Contoh peristiwa untuk operasi Dekripsi saat EMR Tanpa Server mengakses data terenkripsi.
{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "principalId": "user", "invokedBy": "AWS Internal" }, "eventTime": "2025-07-28T21:43:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "ipAddress", "userAgent": "userAgent", "requestParameters": { "encryptionContext": { "applicationId": "test" }, "keyId": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample", "keySpec": "AES_256" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "145c963debe558dfb01848d2a4539da940f3478852f86cfe2f52d5df796a5a02" }, "requestID": "cc9d1c5e-97c4-4a4f-ae7a-e576sample", "eventID": "0b0fef09-f28d-4da8-a5a1-17b74sample", "readOnly": true, "resources": [ { "accountId": "account", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "accountId", "eventCategory": "Management" }
Pelajari Lebih Lanjut
Sumber daya berikut memberikan informasi lebih lanjut tentang enkripsi data saat istirahat.
-
Untuk informasi selengkapnya tentang konsep AWS KMS dasar, lihat Panduan AWS KMS Pengembang.
-
Untuk informasi selengkapnya tentang praktik terbaik Keamanan AWS KMS, lihat Panduan AWS KMS Pengembang.