

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Enkripsi data saat istirahat di Step Functions
<a name="encryption-at-rest"></a>

**Baca blognya**  
Baca tentang kunci yang dikelola pelanggan dalam [Memperkuat keamanan data dengan kunci yang dikelola pelanggan AWS KMS](https://aws.amazon.com/blogs/compute/strengthening-data-security-in-aws-step-functions-with-a-customer-managed-aws-kms-key/)

AWS Step Functions selalu mengenkripsi data Anda saat istirahat menggunakan enkripsi sisi server transparan. Enkripsi data saat istirahat secara default mengurangi overhead operasional dan kompleksitas yang terlibat dalam melindungi data sensitif. Anda dapat membangun aplikasi yang sensitif terhadap keamanan yang memenuhi kepatuhan enkripsi dan persyaratan peraturan yang ketat.

Meskipun Anda tidak dapat menonaktifkan lapisan enkripsi ini atau memilih jenis enkripsi alternatif, Anda dapat menambahkan lapisan enkripsi kedua di atas kunci enkripsi AWS milik yang ada dengan memilih kunci yang dikelola pelanggan saat Anda membuat mesin status dan sumber daya aktivitas:
+ **Kunci terkelola pelanggan** — Step Functions mendukung penggunaan kunci terkelola pelanggan simetris yang Anda buat, miliki, dan kelola untuk menambahkan lapisan enkripsi kedua melalui enkripsi AWS milik yang ada. Karena Anda memiliki kontrol penuh atas lapisan enkripsi ini, Anda dapat melakukan tugas-tugas seperti: 
  + Menetapkan dan memelihara kebijakan utama
  + Menetapkan dan memelihara kebijakan dan hibah IAM
  + Mengaktifkan dan menonaktifkan kebijakan utama
  + Memutar bahan kriptografi kunci
  + Menambahkan tanda
  + Membuat alias kunci
  + Kunci penjadwalan untuk penghapusan

  Untuk selengkapnya, lihat [kunci terkelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) di *Panduan AWS Key Management Service Pengembang*. 

Anda dapat mengenkripsi data menggunakan **kunci yang dikelola pelanggan** untuk mesin dan aktivitas AWS Step Functions status. **Anda dapat mengonfigurasi periode penggunaan kembali AWS KMS kunci simetris dan kunci data saat membuat atau memperbarui **State Machine**, dan saat membuat Aktivitas.** Riwayat eksekusi dan definisi mesin status akan dienkripsi dengan kunci yang diterapkan ke State Machine. Input aktivitas akan dienkripsi dengan kunci yang diterapkan ke Aktivitas. 

Dengan AWS KMS kunci yang dikelola pelanggan, Anda dapat mengamankan data pelanggan yang mencakup **informasi kesehatan yang dilindungi (PHI) dari akses** yang tidak sah. Step Functions terintegrasi dengan CloudTrail, sehingga Anda dapat melihat dan mengaudit peristiwa terbaru di CloudTrail konsol dalam riwayat acara.

Untuk informasi tentang AWS KMS, lihat [Apa itu AWS Key Management Service?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 

**catatan**  
Step Functions secara otomatis mengaktifkan enkripsi saat istirahat menggunakan kunci yang AWS dimiliki tanpa biaya. Namun, AWS KMS biaya berlaku saat menggunakan kunci yang dikelola pelanggan. Untuk informasi lebih lanjut tenngenai harga, lihat [harga AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

## Mengenkripsi dengan kunci yang dikelola pelanggan
<a name="enable-custom-encryption"></a>

 Step Functions mendekripsi data payload dengan AWS KMS kunci terkelola pelanggan Anda sebelum meneruskannya ke layanan lain untuk melakukan tugas. Data dienkripsi dalam perjalanan menggunakan Transport Layer Security (TLS). 

 Ketika data dikembalikan dari layanan terintegrasi, Step Functions mengenkripsi data dengan kunci terkelola AWS KMS pelanggan Anda. Anda dapat menggunakan kunci yang sama untuk menerapkan enkripsi secara konsisten di banyak AWS layanan. 

Anda dapat menggunakan kunci yang dikelola pelanggan dengan sumber daya berikut:
+ **State Machine** - tipe alur kerja Standar dan Ekspres
+ **Aktivitas**

Anda dapat menentukan kunci data dengan memasukkan **ID kunci KMS**, yang digunakan Step Functions untuk mengenkripsi data Anda.
+ **ID kunci KMS** — [pengidentifikasi kunci](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) untuk kunci yang dikelola AWS KMS pelanggan dalam bentuk ID kunci, ARN kunci, nama alias, atau alias ARN.

## Buat State Machine dengan kunci yang dikelola pelanggan
<a name="create-state-machine-with-cmk"></a>

**Prasyarat:** Sebelum Anda dapat membuat mesin status dengan AWS KMS kunci yang dikelola pelanggan, pengguna atau peran Anda harus memiliki AWS KMS izin untuk dan. `DescribeKey` `GenerateDataKey`

Anda dapat melakukan langkah-langkah berikut di AWS konsol, melalui API, atau dengan menyediakan infrastruktur melalui CloudFormation sumber daya. (CloudFormation contoh disajikan nanti dalam panduan ini.)

### Langkah 1: Buat AWS KMS kunci
<a name="create-key"></a>

 Anda dapat membuat kunci terkelola pelanggan simetris dengan AWS KMS konsol atau AWS KMS APIs.

**Untuk membuat kunci terkelola pelanggan simetris**

Ikuti langkah-langkah untuk [Membuat kunci terkelola pelanggan simetris](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan AWS Key Management Service Pengembang*.

**catatan**  
*Opsional*: Saat membuat kunci, Anda dapat memilih **Administrator kunci**. Pengguna atau peran yang dipilih akan diberikan akses mengelola kunci, seperti mengaktifkan atau menonaktifkan kunci melalui API. Anda juga dapat memilih **Pengguna kunci**. Pengguna atau peran ini akan diberikan kemampuan untuk menggunakan AWS KMS kunci dalam operasi kriptografi.

### Langkah 2: Tetapkan kebijakan AWS KMS utama
<a name="create-key-policy"></a>

Kebijakan utama mengontrol akses ke kunci yang dikelola pelanggan Anda. Setiap kunci yang dikelola pelanggan harus memiliki persis satu kebijakan utama, yang berisi pernyataan yang menentukan siapa yang dapat menggunakan kunci dan bagaimana mereka dapat menggunakannya. Saat membuat kunci terkelola pelanggan, Anda dapat menentukan kebijakan kunci. Untuk selengkapnya, lihat [Mengelola akses ke kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access) di *Panduan AWS Key Management Service Pengembang*.

Berikut ini adalah contoh kebijakan AWS KMS kunci dari konsol, tanpa **administrator Key** atau **pengguna Key**:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-consolepolicy-1",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions for the key",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}
```

Lihat *Panduan AWS Key Management Service Pengembang* untuk informasi tentang [menentukan izin dalam kebijakan dan akses kunci](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements) [pemecahan masalah](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam). 

### Langkah 3: Tambahkan kebijakan kunci untuk mengenkripsi log CloudWatch
<a name="encrypt-logs"></a>

 Step Functions terintegrasi dengan CloudWatch untuk logging dan monitoring. Ketika Anda mengaktifkan enkripsi sisi server untuk mesin status Anda menggunakan kunci KMS Anda sendiri dan mengaktifkan integrasi CloudWatch Log, Anda harus mengizinkan `delivery.logs.amazonaws.com` untuk melakukan `kms:Decrypt` tindakan dari kebijakan kunci Anda: AWS KMS 

```
{
  "Sid": "Enable log service delivery for integrations",
  "Effect": "Allow",
  "Principal": {
    "Service": "delivery.logs.amazonaws.com"
  },
  "Action": "kms:Decrypt",
  "Resource": "*"
}
```

Jika Anda mengaktifkan enkripsi mesin status dengan AWS KMS kunci, dan mesin status Anda mengaktifkan integrasi CloudWatch Log, peran eksekusi mesin status memerlukan kebijakan berikut:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowKMSPermissionForCloudWatchLogGroup",
      "Effect": "Allow",
      "Action": "kms:GenerateDataKey",
      "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{keyId}}",
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:SourceArn": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:*"
        }
      }
    }
  ]
}
```

### Langkah 4: Enkripsi Grup CloudWatch Log *(Opsional)*
<a name="encrypt-cloudwatch-log-group"></a>

Anda dapat mengaktifkan enkripsi log di Grup CloudWatch Log menggunakan AWS KMS kunci Anda sendiri. Untuk melakukan itu, Anda juga harus menambahkan kebijakan berikut ke AWS KMS kunci itu.

**catatan**  
Anda dapat memilih AWS KMS kunci yang sama atau berbeda untuk mengenkripsi log dan definisi mesin status Anda.

****  

```
{
  "Id": "key-consolepolicy-logging",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Enable log service for a single log group",
      "Effect": "Allow",
      "Principal": {
        "Service": "logs.{{us-east-1}}.amazonaws.com"
      },
      "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnEquals": {
          "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:{{LOG_GROUP_NAME}}"
        }
      }
    }
  ]
}
```

**catatan**  
`Condition`Bagian ini membatasi AWS KMS kunci ke ARN grup log tunggal.

**catatan**  
Lihat [dokumentasi CloudWatch log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html#cmk-permissions) untuk mempelajari selengkapnya tentang menyetel izin pada AWS KMS kunci untuk grup log Anda.

### Langkah 5: Buat mesin negara
<a name="create-state-machine"></a>

Setelah Anda membuat kunci dan menyiapkan kebijakan, Anda dapat menggunakan kunci untuk membuat mesin status baru.

Saat membuat mesin status, pilih **Konfigurasi tambahan**, lalu pilih untuk mengenkripsi dengan kunci yang dikelola pelanggan. Anda kemudian dapat memilih kunci Anda dan mengatur periode penggunaan kembali kunci data dari 1 menit hingga 15 menit.

Secara opsional, Anda dapat mengaktifkan logging dengan mengatur tingkat log dan memilih untuk mengenkripsi grup log dengan kunci Anda AWS KMS .

**catatan**  
Anda hanya dapat mengaktifkan enkripsi pada **grup log baru** di konsol Step Functions. Untuk mempelajari cara mengaitkan AWS KMS kunci dengan grup log yang ada, lihat [Mengaitkan AWS KMS kunci dengan grup log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html#associate-cmk).

Agar berhasil memulai eksekusi untuk alur kerja Standar dan alur kerja Asynchronous Express dengan kunci terkelola pelanggan, peran eksekusi Anda memerlukan dan izin. `kms:Decrypt` `kms:GenerateDataKey` Peran eksekusi untuk eksekusi Synchronous Express membutuhkan`kms:Decrypt`. Saat Anda membuat mesin status di konsol dan memilih **Buat peran baru**, izin ini secara otomatis disertakan untuk Anda.

Berikut ini adalah contoh kebijakan peran eksekusi:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowKMSPermissionsForStepFunctionsWorkflowExecutions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/keyId"
      ],
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:states:stateMachineArn": [
            "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:stateMachineName"
          ]
        }
      }
    }
  ]
}
```

### Langkah 6: Panggil mesin status yang dienkripsi dengan kunci Anda AWS KMS
<a name="invoke-encrypted-state-machine"></a>

Anda dapat memanggil mesin status terenkripsi seperti biasanya, dan data Anda akan dienkripsi dengan kunci yang dikelola pelanggan Anda.

## Membuat Aktivitas dengan kunci terkelola pelanggan
<a name="create-activity-with-cmk"></a>

Membuat Step Functions Activity dengan kunci yang dikelola pelanggan mirip dengan membuat mesin status dengan kunci yang dikelola pelanggan. Sebelum Anda dapat membuat aktivitas dengan AWS KMS kunci terkelola pelanggan, pengguna atau peran Anda hanya memerlukan AWS KMS izin untuk`DescribeKey`. Selama pembuatan Aktivitas, Anda memilih kunci dan mengatur parameter konfigurasi enkripsi.

Perhatikan bahwa sumber daya Step Functions Activity tetap **tidak dapat diubah**. Anda tidak dapat memperbarui ARN `encryptionConfiguration` untuk aktivitas aktivitas yang ada; Anda harus membuat sumber daya Aktivitas baru. Penelepon ke titik akhir API Aktivitas harus memiliki `kms:DescribeKey` izin untuk berhasil membuat aktivitas dengan kunci. AWS KMS 

Saat enkripsi kunci terkelola pelanggan diaktifkan pada Tugas Aktivitas, peran eksekusi mesin status akan memerlukan `kms:GenerateDataKey` dan `kms:Decrypt` izin untuk kunci aktivitas. Jika Anda membuat mesin status ini dari konsol Step Functions, fitur pembuatan peran otomatis akan menambahkan izin ini. 

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowKMSPermissionsForStepFunctionsActivities",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/keyId"
      ],
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:states:activityArn": [
            "arn:aws:states:{{us-east-1}}:{{123456789012}}:activity:activityName"
          ]
        }
      }
    }
  ]
}
```

## Cakupan kebijakan AWS KMS izin dengan ketentuan
<a name="scope-down-kms-permission-policies-with-conditions"></a>

Anda dapat menggunakan *konteks enkripsi* dalam kebijakan utama dan kebijakan IAM `conditions` untuk mengontrol akses ke kunci terkelola pelanggan simetris Anda. Untuk membatasi penggunaan AWS KMS kunci ke permintaan dari Step Functions atas nama peran tertentu, Anda dapat menggunakan `kms:ViaService` kondisi tersebut.

### Pelingkupan dengan konteks enkripsi
<a name="stepfunctions-encryption-context"></a>

[Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) adalah kumpulan opsional pasangan kunci-nilai yang berisi informasi kontekstual tambahan tentang data.

AWS KMS menggunakan konteks enkripsi sebagai data otentikasi tambahan untuk mendukung enkripsi yang diautentikasi. Bila Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, AWS KMS mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda menyertakan konteks enkripsi yang sama dalam permintaan.

Step Functions menyediakan konteks enkripsi dalam operasi AWS KMS kriptografi, di mana kuncinya adalah `aws:states:stateMachineArn` untuk State Machines atau `aws:states:activityArn` untuk Aktivitas, dan nilainya adalah sumber daya [Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (ARN).

**Example**  

```
"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:{{region}}:{{account-id}}:stateMachine:stateMachineName"}
```

**Example**  

```
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:{{region}}:{{account-id}}:activity:activityName"}
```

Contoh berikut menunjukkan cara membatasi penggunaan AWS KMS kunci untuk peran eksekusi ke mesin status tertentu dengan `kms:EncryptionContext` dan kunci `aws:states:stateMachineArn` konteks: 

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowKeyManagement",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/keyId"
      ],
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:stateMachineName"
        }
      }
    }
  ]
}
```

### Pelingkupan dengan kms: ViaService
<a name="stepfunctions-via-service"></a>

Kunci `kms:ViaService` kondisi membatasi penggunaan AWS Key Management Service kunci untuk permintaan dari AWS layanan tertentu.

Kebijakan contoh berikut menggunakan `kms:ViaService` kondisi untuk mengizinkan AWS KMS kunci digunakan untuk tindakan tertentu hanya jika permintaan berasal dari Step Functions di `us-east-1` wilayah tersebut, bertindak atas nama: ExampleRole 

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow access for Key Administrators in a region",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:role/ExampleRole"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "states.us-east-1.amazonaws.com"
        }
      }
    }
  ]
}
```

**catatan**  
`kms:ViaService`Kondisi ini hanya berlaku ketika AWS KMS izin diperlukan oleh pemanggil API (misalnya,,, `CreateStateMachine` `CreateActivity``GetActivityTask`, dll.). Menambahkan `kms:ViaService` kondisi ke **peran eksekusi** dapat mencegah eksekusi baru dimulai atau menyebabkan eksekusi berjalan gagal.

## Izin yang diperlukan untuk penelepon API
<a name="using-api-with-encryption-required-permissions"></a>

Untuk memanggil tindakan Step Functions API yang mengembalikan data terenkripsi, penelepon memerlukan izin. AWS KMS Atau, beberapa tindakan API memiliki opsi (`METADATA_ONLY`) untuk mengembalikan hanya metadata, menghapus persyaratan izin AWS KMS . Lihat Step Functions API untuk informasi.

Agar eksekusi berhasil diselesaikan saat menggunakan enkripsi kunci terkelola pelanggan, peran eksekusi harus diberikan `kms:GenerateDataKey` dan `kms:Decrypt` izin untuk AWS KMS kunci yang digunakan oleh mesin status.

Tabel berikut menunjukkan AWS KMS izin yang perlu Anda berikan kepada pemanggil Step Functions API untuk APIs menggunakan kunci **State Machine**. AWS KMS Anda dapat memberikan izin ke kebijakan utama atau kebijakan IAM untuk peran tersebut. 


|  |  | 
| --- |--- |
|  APIs menggunakan AWS KMS kunci State Machine  |  Diperlukan oleh Penelepon  | 
|  CreateStateMachine  |  kms:DescribeKey, kms:GenerateDataKey  | 
|  UpdateStateMachine  |  kms:DescribeKey, kms:GenerateDataKey  | 
|  DescribeStateMachine  |  kms:Dekripsi  | 
|  DescribeStateMachineForExecution  |  kms:Dekripsi  | 
|  StartExecution  |  --  | 
|  StartSyncExecution  |  kms:Dekripsi  | 
|  SendTaskSuccess  |  --  | 
|  SendTaskFailure  |  --  | 
|  StopExecution  |  --  | 
|  RedriveExecution  |  --  | 
|  DescribeExecution  |  kms:Dekripsi  | 
|  GetExecutionHistory  |  kms:Dekripsi  | 

 Tabel berikut menunjukkan AWS KMS izin yang perlu Anda berikan kepada pemanggil Step Functions API untuk APIs menggunakan kunci **Aktivitas**. AWS KMS Anda dapat memberikan izin dalam kebijakan utama atau kebijakan IAM untuk peran tersebut. 


|  |  | 
| --- |--- |
|  APIs menggunakan AWS KMS kunci Aktivitas  |  Diperlukan oleh Penelepon  | 
|  CreateActivity  |  kms:DescribeKey  | 
|  GetActivityTask  |  kms:Dekripsi  | 

**Kapan saya memberikan izin kepada Penelepon atau peran Eksekusi?**  
Ketika peran IAM atau pengguna memanggil Step Functions API, layanan Step Functions akan memanggil AWS KMS atas nama pemanggil API. Dalam hal ini, Anda harus memberikan AWS KMS izin kepada pemanggil API. Ketika peran eksekusi memanggil AWS KMS secara langsung, Anda harus memberikan AWS KMS izin pada peran eksekusi.

## CloudFormation sumber daya untuk konfigurasi enkripsi
<a name="cfn-resources-for-encryption-configuration"></a>

 CloudFormation tipe sumber daya untuk Step Functions dapat menyediakan mesin status dan sumber daya aktivitas dengan konfigurasi enkripsi. 

 Secara default, Step Functions menyediakan enkripsi sisi server transparan. Keduanya [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html)dan [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html)menerima `EncryptionConfiguration` properti opsional yang dapat mengonfigurasi AWS KMS kunci yang dikelola pelanggan untuk enkripsi sisi server. 

**Prasyarat:** Sebelum Anda dapat membuat mesin status dengan AWS KMS kunci yang dikelola pelanggan, pengguna atau peran Anda harus memiliki AWS KMS izin untuk dan. `DescribeKey` `GenerateDataKey`

 Pembaruan untuk StateMachine membutuhkan [Tidak ada gangguan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt). Pembaruan sumber daya Aktivitas membutuhkan: [Penggantian](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement). 

 Untuk mendeklarasikan **`EncryptionConfiguration`**properti di CloudFormation template Anda, gunakan sintaks berikut: 

 **JSON**

```
{
  "KmsKeyId" : String,
  "KmsDataKeyReusePeriodSeconds" : Integer,
  "Type" : String
}
```

 **YAML**

```
KmsKeyId: String
KmsDataKeyReusePeriodSeconds: Integer
Type: String
```

 **Sifat-sifat**
+ **Jenis** - Opsi enkripsi untuk mesin atau aktivitas negara. *Nilai yang diizinkan*: `CUSTOMER_MANAGED_KMS_KEY` \| `AWS_OWNED_KEY`
+ **KmsKeyId**- Alias, alias ARN, ID kunci, atau kunci ARN dari kunci enkripsi simetris yang mengenkripsi AWS KMS kunci data. Untuk menentukan AWS KMS kunci di AWS akun yang berbeda, pelanggan harus menggunakan kunci ARN atau alias ARN. Untuk informasi mengenai kmsKeyId, lihat [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters)di AWS KMS dokumen.
+ **KmsDataKeyReusePeriodSeconds**- Durasi maksimum dimana SFN akan menggunakan kembali kunci data. Ketika periode berakhir, Step Functions akan memanggil`GenerateDataKey`. Pengaturan ini hanya dapat diatur ketika **Type** adalah`CUSTOMER_MANAGED_KMS_KEY`. Nilainya bisa berkisar antara 60-900 detik. Defaultnya adalah 300 detik.

### CloudFormation contoh
<a name="cfn-examples"></a>

#### Contoh: StateMachine dengan kunci yang dikelola pelanggan
<a name="statemachine-with-managed-key"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: An example template for a Step Functions State Machine.
Resources:
  MyStateMachine:
    Type: AWS::StepFunctions::StateMachine
    Properties:
      StateMachineName: HelloWorld-StateMachine
      Definition:
        StartAt: PassState
        States:
          PassState:
            Type: Pass
            End: true
      RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/example"
      EncryptionConfiguration:
        KmsKeyId: !Ref MyKmsKey
        KmsDataKeyReusePeriodSeconds: 100
        Type: CUSTOMER_MANAGED_KMS_KEY

  MyKmsKey:
    Type: AWS::KMS::Key
    Properties:
      Description: Symmetric KMS key used for encryption/decryption
```

#### Contoh: Aktivitas dengan kunci yang dikelola pelanggan
<a name="activity-with-managed-key"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: An example template for a Step Functions Activity.
Resources:
  Activity:
    Type: AWS::StepFunctions::Activity
    Properties:
      Name: ActivityWithKmsEncryption
      EncryptionConfiguration:
        KmsKeyId: !Ref MyKmsKey
        KmsDataKeyReusePeriodSeconds: 100
        Type: CUSTOMER_MANAGED_KMS_KEY

  MyKmsKey:
    Type: AWS::KMS::Key
    Properties:
      Description: Symmetric KMS key used for encryption/decryption
```

#### Memperbarui enkripsi untuk Aktivitas memerlukan pembuatan sumber daya baru
<a name="updating-encryption-for-an-activity-requires-creating-a-new-resource"></a>

 Konfigurasi aktivitas tidak dapat diubah, dan nama sumber daya harus unik. Untuk mengatur kunci terkelola pelanggan untuk enkripsi, Anda harus membuat **Aktivitas baru**. Jika Anda mencoba mengubah konfigurasi di template CFN Anda untuk aktivitas yang ada, Anda akan menerima `ActivityAlreadyExists` pengecualian. 

 Untuk memperbarui aktivitas Anda agar menyertakan kunci terkelola pelanggan, tetapkan nama aktivitas baru dalam templat CFN Anda. Berikut ini menunjukkan contoh yang membuat aktivitas baru dengan konfigurasi kunci terkelola pelanggan: 

 **Definisi aktivitas yang ada**

```
AWSTemplateFormatVersion: '2010-09-09'
  Description: An example template for a new Step Functions Activity.
  Resources:
    Activity:
    Type: AWS::StepFunctions::Activity
    Properties:
      Name: ActivityName
      EncryptionConfiguration:
        Type: AWS_OWNED_KEY
```

 **Definisi aktivitas baru**

```
AWSTemplateFormatVersion: '2010-09-09'
  Description: An example template for a Step Functions Activity.
  Resources:
    Activity:
      Type: AWS::StepFunctions::Activity
      Properties:
        Name: ActivityWithKmsEncryption
        EncryptionConfiguration:
          KmsKeyId: !Ref MyKmsKey
          KmsDataKeyReusePeriodSeconds: 100
          Type: CUSTOMER_MANAGED_KMS_KEY

    MyKmsKey:
      Type: AWS::KMS::Key
      Properties:
        Description: Symmetric KMS key used for encryption/decryption
```

## Memantau penggunaan kunci enkripsi Anda
<a name="monitoring-encryption-keys"></a>

Saat Anda menggunakan kunci yang dikelola AWS KMS pelanggan untuk mengenkripsi sumber daya Step Functions, Anda dapat menggunakannya CloudTrail untuk melacak permintaan yang dikirim Step Functions. AWS KMS

Anda juga dapat menggunakan konteks enkripsi dalam catatan audit dan log untuk mengidentifikasi bagaimana kunci yang dikelola pelanggan digunakan. Konteks enkripsi juga muncul di log yang dihasilkan oleh [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html).

Contoh berikut adalah CloudTrail peristiwa untuk`Decrypt`,`DescribeKey`, dan `GenerateDataKey` untuk memantau AWS KMS operasi yang disebut oleh Step Functions untuk mengakses data yang dienkripsi oleh kunci yang dikelola pelanggan Anda:

------
#### [ Decrypt ]

Saat Anda mengakses mesin atau aktivitas status terenkripsi, Step Functions memanggil `Decrypt` operasi untuk menggunakan kunci data terenkripsi yang disimpan untuk mengakses data terenkripsi. 

Contoh peristiwa berikut mencatat `Decrypt` operasi:

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "111122223333:Sampleuser01",
    "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
    "accountId": "111122223333",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "111122223333:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "userName": "Admin"
      },
      "attributes": {
        "creationDate": "2024-07-05T21:06:27Z",
        "mfaAuthenticated": "false"
      }
    },
    "invokedBy": "states.amazonaws.com"
  },
  "eventTime": "2024-07-05T21:12:21Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "Decrypt",
  "awsRegion": "aa-example-1",
  "sourceIPAddress": "states.amazonaws.com",
  "userAgent": "states.amazonaws.com",
  "requestParameters": {
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "encryptionContext": {
            "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1"
        }
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ DescribeKey ]

Step Functions menggunakan `DescribeKey` operasi untuk memverifikasi apakah kunci terkelola AWS KMS pelanggan yang terkait dengan Mesin Negara atau Aktivitas Anda ada di akun dan wilayah.

Contoh peristiwa berikut mencatat `DescribeKey` operasi:

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "111122223333:Sampleuser01",
    "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
    "accountId": "111122223333",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "111122223333:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "userName": "Admin"
      },
      "attributes": {
        "creationDate": "2024-07-05T21:06:27Z",
        "mfaAuthenticated": "false"
      }
    },
    "invokedBy": "states.amazonaws.com"
  },
  "eventTime": "2024-07-05T21:12:21Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "DescribeKey",
  "awsRegion": "aa-example-1",
  "sourceIPAddress": "states.amazonaws.com",
  "userAgent": "states.amazonaws.com",
  "requestParameters": {
    "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
  },
  "responseElements": null,
  "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
  "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
  "readOnly": true,
  "resources": [
    {
      "accountId": "111122223333",
      "type": "AWS::KMS::Key",
      "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "111122223333",
  "eventCategory": "Management",
  "sessionCredentialFromConsole": "true"
}
```

------
#### [ GenerateDataKey ]

Saat Anda mengaktifkan kunci terkelola AWS KMS pelanggan untuk State Machine atau Activity Anda, Step Functions mengirimkan `GenerateDataKey` permintaan untuk mendapatkan kunci data ke definisi mesin status enkripsi atau data eksekusi.

Contoh peristiwa berikut mencatat `GenerateDataKey` operasi:

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "111122223333:Sampleuser01",
    "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
    "accountId": "111122223333",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "111122223333:Sampleuser01",
        "arn": "arn:aws:iam::111122223333:role/Admin",
        "accountId": "111122223333",
        "userName": "Admin"
      },
      "attributes": {
        "creationDate": "2024-07-05T21:06:27Z",
        "mfaAuthenticated": "false"
      }
    },
    "invokedBy": "states.amazonaws.com"
  },
  "eventTime": "2024-07-05T21:12:21Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "GenerateDataKey",
  "awsRegion": "aa-example-1",
  "sourceIPAddress": "states.amazonaws.com",
  "userAgent": "states.amazonaws.com",
  "requestParameters": {
    "keySpec": "AES_256",
    "encryptionContext": {
      "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1"
    },
    "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
  },
  "responseElements": null,
  "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
  "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
  "readOnly": true,
  "resources": [
    {
      "accountId": "111122223333",
      "type": "AWS::KMS::Key",
      "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "111122223333",
  "eventCategory": "Management"
}
```

------

## FAQs
<a name="faqs"></a>

### Apa yang terjadi jika kunci saya ditandai untuk dihapus atau dihapus? AWS KMS
<a name="what-happens-if-my-key-is-marked-for-deletion-or-deleted-in-kms-"></a>

 Jika kunci dihapus atau ditandai untuk dihapus AWS KMS, eksekusi berjalan terkait akan gagal. Eksekusi baru tidak dapat dimulai sampai Anda menghapus atau mengubah kunci yang terkait dengan alur kerja. ***Setelah AWS KMS kunci dihapus, semua data terenkripsi yang terkait dengan eksekusi alur kerja akan tetap dienkripsi dan tidak dapat lagi didekripsi, membuat data tidak dapat dipulihkan.*** 

### Apa yang terjadi jika AWS KMS kunci dinonaktifkan AWS KMS?
<a name="what-happens-if-a-kms-key-is-disabled-in-kms-"></a>

 Jika AWS KMS kunci dinonaktifkan AWS KMS, eksekusi berjalan terkait akan gagal. Eksekusi baru tidak dapat dimulai. Anda tidak dapat lagi mendekripsi data yang dienkripsi di bawah AWS KMS kunci yang dinonaktifkan itu hingga diaktifkan kembali. 

### Apa yang terjadi pada peristiwa perubahan Status Eksekusi yang dikirim ke EventBridge?
<a name="what-happens-to-execution-status-change-events-sent-to-ev-"></a>

 Input Eksekusi, Output, Kesalahan, dan Penyebab tidak akan disertakan untuk peristiwa perubahan status eksekusi untuk alur kerja yang dienkripsi menggunakan kunci terkelola pelanggan Anda. AWS KMS 

## Pelajari selengkapnya
<a name="learn-more-data-at-rest-encryption"></a>

Untuk informasi tentang enkripsi data saat istirahat, lihat [AWS Key Management Service konsep](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) dan [praktik terbaik keamanan AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) di *Panduan AWS Key Management Service Pengembang*.