

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
<a name="disk-encryption-cmk"></a>

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?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)

## Menggunakan Konteks Enkripsi
<a name="disk-encryption-context"></a>

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
<a name="disk-encryption-configure"></a>

### CreateApplication
<a name="disk-encryption-create-app"></a>

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
<a name="disk-encryption-update-app"></a>

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
<a name="disk-encryption-start-job"></a>

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
<a name="disk-encryption-livy"></a>

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
<a name="disk-encryption-permissions"></a>

### Izin kunci enkripsi untuk EMR Tanpa Server
<a name="disk-encryption-key-permissions"></a>

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
<a name="disk-encryption-user-permissions"></a>

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
<a name="disk-encryption-example-key-policy"></a>

Kebijakan utama berikut memberikan izin untuk`kms:DescribeKey`, `kms:GenerateDataKey` dan`kms: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
<a name="disk-encryption-example-iam-policy"></a>

Kebijakan IAM berikut memberikan izin untuk`kms: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
<a name="disk-encryption-monitoring"></a>

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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

### GenerateDataKey
<a name="disk-encryption-monitoring-gdk"></a>

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
<a name="disk-encryption-monitoring-decrypt"></a>

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
<a name="disk-encryption-learn-more"></a>

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](https://docs.aws.amazon.com/kms/latest/developerguide/).
+ Untuk informasi selengkapnya tentang praktik terbaik Keamanan AWS KMS, lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html).