

• AWS Systems Manager CloudWatch Dasbor tidak akan lagi tersedia setelah 30 April 2026. Pelanggan dapat terus menggunakan CloudWatch konsol Amazon untuk melihat, membuat, dan mengelola CloudWatch dasbor Amazon mereka, seperti yang mereka lakukan hari ini. Untuk informasi selengkapnya, lihat [dokumentasi CloudWatch Dasbor Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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

# AWS KMS enkripsi untuk AWS Systems ManagerParameter Store SecureString parameter
<a name="secure-string-parameter-kms-encryption"></a>

Dengan AWS Systems Manager Parameter Store, Anda dapat membuat [SecureString parameter](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter), yang merupakan parameter yang memiliki nama parameter plaintext dan nilai parameter terenkripsi. Parameter Storemenggunakan AWS KMS untuk mengenkripsi dan mendekripsi nilai parameter parameter. `SecureString`

DenganParameter Store, Anda dapat membuat, menyimpan, dan mengelola data sebagai parameter dengan nilai. Anda dapat membuat parameter Parameter Store dan menggunakannya di beberapa aplikasi dan layanan yang tunduk pada kebijakan dan izin yang Anda desain. Ketika Anda perlu mengubah nilai parameter, Anda mengubah satu contoh, daripada mengelola perubahan rawan kesalahan ke berbagai sumber. Parameter Storemendukung struktur hierarkis untuk nama parameter, sehingga Anda dapat memenuhi syarat parameter untuk penggunaan tertentu. 

Untuk mengelola data sensitif, Anda dapat membuat `SecureString` parameter. Parameter Storemenggunakan AWS KMS keys untuk mengenkripsi nilai parameter `SecureString` parameter saat Anda membuat atau mengubahnya. Ini juga menggunakan kunci KMS untuk mendekripsi nilai parameter saat Anda mengaksesnya. Anda dapat menggunakan [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)yang Parameter Store membuat untuk akun Anda atau menentukan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) Anda sendiri. 

**penting**  
Parameter Storehanya mendukung tombol [KMS simetris](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks). Anda tidak dapat menggunakan [kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) untuk mengenkripsi parameter Anda. *Untuk bantuan menentukan apakah kunci KMS simetris atau asimetris, lihat [Mengidentifikasi tipe kunci yang berbeda dalam Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html)AWS Key Management Service .*

Parameter Storemendukung dua tingkatan `SecureString` parameter: *standar* dan *lanjutan*. Parameter standar, yang tidak dapat melebihi 4096 byte, dienkripsi dan didekripsi langsung di bawah kunci KMS yang Anda tentukan. Untuk mengenkripsi dan mendekripsi `SecureString` parameter lanjutan, Parameter Store gunakan enkripsi amplop dengan file. [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) Anda dapat mengonversi `SecureString` parameter standar ke parameter lanjutan, tetapi Anda tidak dapat mengonversi parameter lanjutan ke parameter standar. Untuk informasi selengkapnya tentang perbedaan antara `SecureString` parameter standar dan lanjutan, lihat[Mengelola tingkatan parameter](parameter-store-advanced-parameters.md).

**Topics**
+ [Melindungi SecureString parameter standar](#kms-encryption-securestring-standard)
+ [Melindungi SecureString parameter lanjutan](#kms-encryption-securestring-advanced)
+ [Menetapkan izin untuk mengenkripsi dan mendekripsi nilai parameter](#parameter-policy-kms-encryption)
+ [Parameter Storekonteks enkripsi](#parameter-store-kms-encryption-context)
+ [Memecahkan masalah utama KMS di Parameter Store](#parameter-store-kms-cmk-troubleshooting)

## Melindungi SecureString parameter standar
<a name="kms-encryption-securestring-standard"></a>

Parameter Storetidak melakukan operasi kriptografi apa pun. Sebaliknya, ia bergantung pada AWS KMS untuk mengenkripsi dan mendekripsi nilai parameter`SecureString`. Saat Anda membuat atau mengubah nilai `SecureString` parameter standar, Parameter Store memanggil operasi AWS KMS [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). [Operasi ini menggunakan kunci KMS enkripsi simetris secara langsung untuk mengenkripsi nilai parameter alih-alih menggunakan kunci KMS untuk menghasilkan kunci data.](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html) 

Anda dapat memilih kunci KMS yang Parameter Store digunakan untuk mengenkripsi nilai parameter. Jika Anda tidak menentukan kunci KMS, Parameter Store gunakan Kunci yang dikelola AWS yang secara otomatis dibuat oleh Systems Manager di akun Anda. Kunci KMS ini memiliki `aws/ssm` alias.

Untuk melihat kunci `aws/ssm` KMS default untuk akun Anda, gunakan [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operasi di AWS KMS API. Contoh berikut menggunakan `describe-key` perintah di AWS Command Line Interface (AWS CLI) dengan nama `aws/ssm` alias.

```
aws kms describe-key \
    --key-id alias/aws/ssm
```

Untuk membuat `SecureString` parameter standar, gunakan [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)operasi di Systems Manager API. Abaikan parameter `Tier` atau tentukan nilai `Standard`, yang merupakan default. Sertakan parameter `Type` dengan nilai dari `SecureString`. Untuk menentukan kunci KMS, gunakan `KeyId` parameter. Defaultnya adalah Kunci yang dikelola AWS untuk akun Anda`aws/ssm`. 

Parameter Storekemudian memanggil AWS KMS `Encrypt` operasi dengan kunci KMS dan nilai parameter plaintext. AWS KMS mengembalikan nilai parameter terenkripsi, yang Parameter Store menyimpan dengan nama parameter.

Contoh berikut menggunakan perintah Systems Manager [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) dan `--type` parameternya dalam AWS CLI untuk membuat `SecureString` parameter. Karena perintah menghilangkan opsional `--tier` dan `--key-id` parameter, Parameter Store membuat `SecureString` parameter standar dan mengenkripsi di bawah. Kunci yang dikelola AWS

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString
```

Contoh serupa berikut menggunakan `--key-id` parameter untuk menentukan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Contoh menggunakan ID kunci KMS untuk mengidentifikasi kunci KMS, tetapi Anda dapat menggunakan pengidentifikasi kunci KMS yang valid. Karena perintah menghilangkan `Tier` parameter (`--tier`), Parameter Store membuat `SecureString` parameter standar, bukan parameter lanjutan.

```
aws ssm put-parameter \
    --name param1 \
    --value "secret" \
    --type SecureString \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```

Ketika Anda mendapatkan `SecureString` parameter dariParameter Store, nilainya dienkripsi. Untuk mendapatkan parameter, gunakan [GetParameter ](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)operasi di Systems Manager API.

Contoh berikut menggunakan perintah Systems Manager [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) dalam AWS CLI untuk mendapatkan `MyParameter` parameter dari Parameter Store tanpa mendekripsi nilainya.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Untuk mendekripsi nilai parameter sebelum mengembalikannya, atur parameter `WithDecryption` dari `GetParameter` ke `true`. Saat Anda menggunakan`WithDecryption`, Parameter Store memanggil operasi AWS KMS [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) atas nama Anda untuk mendekripsi nilai parameter. Akibatnya, permintaan `GetParameter` akan mengembalikan parameter dengan nilai parameter plaintext, seperti yang ditunjukkan dalam contoh berikut.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

Alur kerja berikut menunjukkan bagaimana Parameter Store menggunakan kunci KMS untuk mengenkripsi dan mendekripsi parameter standar. `SecureString`

### Mengenkripsi parameter standar
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. Saat Anda menggunakan `PutParameter` untuk membuat `SecureString` parameter, Parameter Store kirimkan `Encrypt` permintaan ke AWS KMS. [Permintaan tersebut mencakup nilai parameter plaintext, kunci KMS yang Anda pilih, dan konteks enkripsi. Parameter Store](#parameter-store-kms-encryption-context) Selama transmisi ke AWS KMS, nilai plaintext dalam `SecureString` parameter dilindungi oleh Transport Layer Security (TLS).

1. AWS KMS mengenkripsi nilai parameter dengan kunci KMS dan konteks enkripsi yang ditentukan. Ia mengembalikan ciphertext keParameter Store, yang menyimpan nama parameter dan nilai terenkripsi.  
![\[Mengenkripsi nilai parameter standar SecureString\]](http://docs.aws.amazon.com/id_id/systems-manager/latest/userguide/images/service-pstore-standard.png)

### Dekripsi parameter standar
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. Saat Anda menyertakan `WithDecryption` parameter dalam `GetParameter` permintaan, Parameter Store kirimkan `Decrypt` permintaan ke AWS KMS dengan nilai `SecureString` parameter terenkripsi dan konteks [Parameter Storeenkripsi](#parameter-store-kms-encryption-context).

1. AWS KMS menggunakan kunci KMS yang sama dan konteks enkripsi yang disediakan untuk mendekripsi nilai terenkripsi. Ia mengembalikan nilai parameter plaintext (didekripsi) ke. Parameter Store Selama transmisi, data plaintext dilindungi oleh TLS.

1. Parameter Storemengembalikan nilai parameter plaintext kepada Anda dalam respons. `GetParameter`

## Melindungi SecureString parameter lanjutan
<a name="kms-encryption-securestring-advanced"></a>

Ketika Anda menggunakan `PutParameter` untuk membuat `SecureString` parameter lanjutan, Parameter Store menggunakan [enkripsi amplop](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption) dengan AWS Encryption SDK dan enkripsi simetris AWS KMS key untuk melindungi nilai parameter. Setiap nilai parameter lanjutan dienkripsi di bawah kunci data unik, dan kunci data dienkripsi di bawah kunci KMS. Anda dapat menggunakan [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)for the account (`aws/ssm`) atau kunci yang dikelola pelanggan.

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) adalah pustaka sisi klien sumber terbuka yang membantu Anda mengenkripsi dan mendekripsi data menggunakan standar industri dan praktik terbaik. Ini didukung pada beberapa platform dan dalam beberapa bahasa pemrograman, termasuk antarmuka baris perintah. Anda dapat melihat kode sumber dan berkontribusi pada pengembangannya di GitHub. 

Untuk setiap nilai `SecureString` parameter, Parameter Store memanggil AWS Encryption SDK untuk mengenkripsi nilai parameter menggunakan kunci data unik yang AWS KMS menghasilkan ([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)). AWS Encryption SDK Kembali ke [pesan Parameter Store terenkripsi](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) yang mencakup nilai parameter terenkripsi dan salinan terenkripsi dari kunci data unik. Parameter Storemenyimpan seluruh pesan terenkripsi dalam nilai `SecureString` parameter. Kemudian, ketika Anda mendapatkan nilai `SecureString` parameter lanjutan, Parameter Store gunakan AWS Encryption SDK untuk mendekripsi nilai parameter. Ini membutuhkan panggilan AWS KMS untuk mendekripsi kunci data terenkripsi.

Untuk membuat `SecureString` parameter lanjutan, gunakan [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)operasi di Systems Manager API. Atur nilai parameter `Tier` ke `Advanced`. Sertakan parameter `Type` dengan nilai dari `SecureString`. Untuk menentukan kunci KMS, gunakan `KeyId` parameter. Defaultnya adalah Kunci yang dikelola AWS untuk akun Anda`aws/ssm`. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced
```

Contoh serupa berikut menggunakan `--key-id` parameter untuk menentukan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Contoh menggunakan Nama Sumber Daya Amazon (ARN) dari kunci KMS, tetapi Anda dapat menggunakan pengidentifikasi kunci KMS yang valid. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced \
    --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

Ketika Anda mendapatkan `SecureString` parameter dariParameter Store, nilainya adalah pesan terenkripsi yang dikembalikan. AWS Encryption SDK Untuk mendapatkan parameter, gunakan [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)operasi di Systems Manager API.

Contoh berikut menggunakan `GetParameter` operasi Systems Manager untuk mendapatkan `MyParameter` parameter dari Parameter Store tanpa mendekripsi nilainya.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Untuk mendekripsi nilai parameter sebelum mengembalikannya, atur parameter `WithDecryption` dari `GetParameter` ke `true`. Saat Anda menggunakan`WithDecryption`, Parameter Store memanggil operasi AWS KMS [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) atas nama Anda untuk mendekripsi nilai parameter. Akibatnya, permintaan `GetParameter` akan mengembalikan parameter dengan nilai parameter plaintext, seperti yang ditunjukkan dalam contoh berikut.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

Anda tidak dapat mengonversi `SecureString` parameter lanjutan ke parameter standar, tetapi Anda dapat mengonversi standar `SecureString` ke parameter lanjutan. Untuk mengonversi `SecureString` parameter standar ke lanjutan`SecureString`, gunakan `PutParameter` operasi dengan `Overwrite` parameter. `Type` harus `SecureString` dan nilai `Tier` harus `Advanced`. `KeyId`Parameter, yang mengidentifikasi kunci yang dikelola pelanggan, adalah opsional. Jika Anda menghilangkannya, Parameter Store gunakan Kunci yang dikelola AWS untuk akun. Anda dapat menentukan kunci KMS yang memiliki izin untuk digunakan oleh prinsipal, bahkan jika Anda menggunakan kunci KMS yang berbeda untuk mengenkripsi parameter standar.

Bila Anda menggunakan `Overwrite` parameter, Parameter Store menggunakan AWS Encryption SDK untuk mengenkripsi nilai parameter. Kemudian menyimpan pesan yang baru dienkripsi di. Parameter Store

```
aws ssm put-parameter \
    --name myStdParameter \
    --value "secret_value"  \
    --type SecureString \
    --tier Advanced \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --overwrite
```

Alur kerja berikut menunjukkan bagaimana Parameter Store menggunakan kunci KMS untuk mengenkripsi dan mendekripsi parameter lanjutan. `SecureString`

### Mengenkripsi parameter lanjutan
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. Saat Anda menggunakan `PutParameter` untuk membuat `SecureString` parameter lanjutan, Parameter Store gunakan AWS Encryption SDK dan AWS KMS untuk mengenkripsi nilai parameter. Parameter Storememanggil AWS Encryption SDK dengan nilai parameter, kunci KMS yang Anda tentukan, dan [konteks Parameter Store enkripsi](#parameter-store-kms-encryption-context).

1.  AWS Encryption SDK Mengirim [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)permintaan ke AWS KMS dengan pengenal kunci KMS yang Anda tentukan dan konteks Parameter Store enkripsi. AWS KMS mengembalikan dua salinan kunci data unik: satu di plaintext dan satu dienkripsi di bawah kunci KMS. (Konteks enkripsi digunakan saat mengenkripsi kunci data.)

1.  AWS Encryption SDK Menggunakan kunci data plaintext untuk mengenkripsi nilai parameter. Ia mengembalikan [pesan terenkripsi](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) yang mencakup nilai parameter terenkripsi, kunci data terenkripsi, dan data lainnya, termasuk konteks enkripsi. Parameter Store

1. Parameter Storemenyimpan pesan terenkripsi sebagai nilai parameter.  
![\[Mengenkripsi nilai parameter lanjutan SecureString\]](http://docs.aws.amazon.com/id_id/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### Dekripsi parameter lanjutan
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. Anda dapat menyertakan `WithDecryption` parameter dalam `GetParameter` permintaan untuk mendapatkan `SecureString` parameter lanjutan. Ketika Anda melakukannya, Parameter Store meneruskan [pesan terenkripsi](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) dari nilai parameter ke metode dekripsi. AWS Encryption SDK

1.  AWS Encryption SDK Panggilan operasi AWS KMS [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Ini melewati kunci data terenkripsi dan konteks Parameter Store enkripsi dari pesan terenkripsi.

1. AWS KMS menggunakan kunci KMS dan konteks Parameter Store enkripsi untuk mendekripsi kunci data terenkripsi. Kemudian ini mengembalikan plaintext (didekripsi) kunci data ke AWS Encryption SDK.

1.  AWS Encryption SDK Menggunakan kunci data plaintext untuk mendekripsi nilai parameter. Ia mengembalikan nilai parameter plaintext ke. Parameter Store 

1. Parameter Storememverifikasi konteks enkripsi dan mengembalikan nilai parameter plaintext kepada Anda dalam respons. `GetParameter`

## Menetapkan izin untuk mengenkripsi dan mendekripsi nilai parameter
<a name="parameter-policy-kms-encryption"></a>

Untuk mengenkripsi nilai `SecureString` parameter standar, pengguna memerlukan `kms:Encrypt` izin. Untuk mengenkripsi nilai `SecureString` parameter lanjutan, pengguna memerlukan `kms:GenerateDataKey` izin. Untuk mendekripsi salah satu jenis nilai `SecureString` parameter, pengguna memerlukan `kms:Decrypt` izin. 

Anda dapat menggunakan kebijakan AWS Identity and Access Management (IAM) untuk mengizinkan atau menolak izin bagi pengguna untuk memanggil Systems Manager `PutParameter` dan `GetParameter` operasi.

Jika Anda menggunakan kunci yang dikelola pelanggan untuk mengenkripsi nilai `SecureString` parameter Anda, Anda dapat menggunakan kebijakan IAM dan kebijakan kunci untuk mengelola enkripsi dan mendekripsi izin. Namun, Anda tidak dapat membuat kebijakan kontrol akses untuk kunci `aws/ssm` KMS default. Untuk informasi rinci tentang mengontrol akses ke kunci terkelola pelanggan, lihat [akses kunci KMS dan izin di Panduan AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) *Pengembang*.

Contoh berikut menunjukkan kebijakan IAM yang dirancang untuk `SecureString` parameter standar. Ini memungkinkan pengguna untuk memanggil operasi `PutParameter` Systems Manager pada semua parameter dalam jalur `FinancialParameters`. Kebijakan ini juga memungkinkan pengguna untuk memanggil AWS KMS `Encrypt` operasi pada contoh kunci yang dikelola pelanggan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/FinancialParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

Contoh berikutnya menunjukkan kebijakan IAM yang dirancang untuk `SecureString` parameter lanjutan. Ini memungkinkan pengguna untuk memanggil operasi `PutParameter` Systems Manager pada semua parameter dalam jalur `ReservedParameters`. Kebijakan ini juga memungkinkan pengguna untuk memanggil AWS KMS `GenerateDataKey` operasi pada contoh kunci yang dikelola pelanggan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ReservedParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ]
}
```

------

Contoh terakhir juga menunjukkan kebijakan IAM yang dapat digunakan untuk `SecureString` parameter standar atau lanjutan. Ini memungkinkan pengguna untuk memanggil operasi `GetParameter` Systems Manager (dan operasi terkait) pada semua parameter dalam jalur `ITParameters`. Kebijakan ini juga memungkinkan pengguna untuk memanggil AWS KMS `Decrypt` operasi pada contoh kunci yang dikelola pelanggan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ITParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Parameter Storekonteks enkripsi
<a name="parameter-store-kms-encryption-context"></a>

*Konteks enkripsi* adalah seperangkat pasangan kunci-nilai yang berisi data non-rahasia yang arbitrer. Ketika Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, secara AWS KMS kriptografis mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda harus meneruskan konteks enkripsi yang sama. 

Anda juga dapat menggunakan konteks enkripsi untuk mengidentifikasi operasi kriptografi dalam audit catatan dan log. Konteks enkripsi muncul di plaintext dalam log, seperti log [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). 

Ini AWS Encryption SDK juga mengambil konteks enkripsi, meskipun menanganinya secara berbeda. Parameter Storememasok konteks enkripsi ke metode enkripsi. AWS Encryption SDK Secara kriptografi mengikat konteks enkripsi ke data terenkripsi. Ini juga mencakup konteks enkripsi dalam teks polos di header pesan terenkripsi yang dikembalikan. Namun, tidak seperti AWS KMS, metode AWS Encryption SDK dekripsi tidak mengambil konteks enkripsi sebagai input. Sebaliknya, ketika mendekripsi data, AWS Encryption SDK mendapatkan konteks enkripsi dari pesan terenkripsi. Parameter Storememverifikasi bahwa konteks enkripsi menyertakan nilai yang diharapkan sebelum mengembalikan nilai parameter plaintext kepada Anda. 

Parameter Storemenggunakan konteks enkripsi berikut dalam operasi kriptografinya:
+ Kunci: `PARAMETER_ARN`
+ Nilai: Amazon Resource Name (ARN) dari parameter yang sedang dienkripsi. 

Format konteks penyulitan adalah seperti berikut:

```
"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"
```

Misalnya, Parameter Store sertakan konteks enkripsi ini dalam panggilan untuk mengenkripsi dan mendekripsi `MyParameter` parameter dalam contoh Akun AWS dan wilayah.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"
```

Jika parameter berada di jalur Parameter Store hierarkis, jalur dan nama disertakan dalam konteks enkripsi. Misalnya, konteks enkripsi ini digunakan saat mengenkripsi dan mendekripsi `MyParameter` parameter di `/ReadableParameters` jalur dalam contoh dan wilayah. Akun AWS 

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/ReadableParameters/MyParameter"
```

Anda dapat mendekripsi nilai `SecureString` parameter terenkripsi dengan memanggil AWS KMS `Decrypt` operasi dengan konteks enkripsi yang benar dan nilai parameter terenkripsi yang dikembalikan oleh operasi Systems Manager. `GetParameter` Namun, kami mendorong Anda untuk mendekripsi nilai Parameter Store parameter dengan menggunakan `GetParameter` operasi dengan parameter. `WithDecryption` 

Anda juga dapat menyertakan konteks enkripsi dalam kebijakan IAM. Misalnya, Anda dapat mengizinkan pengguna untuk mendekripsi hanya satu nilai parameter tertentu atau set nilai parameter.

Contoh berikut pernyataan kebijakan IAM memungkinkan pengguna untuk mendapatkan nilai `MyParameter` parameter dan untuk mendekripsi nilainya menggunakan kunci KMS tertentu. Namun izin hanya berlaku ketika konteks enkripsi cocok dengan string tertentu. Izin ini tidak berlaku untuk parameter lain atau kunci KMS, dan panggilan `GetParameter` gagal jika konteks enkripsi tidak cocok dengan string.

Sebelum menggunakan pernyataan kebijakan seperti ini, ganti *example ARNs* dengan nilai yang valid.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
                }
            }
        }
    ]
}
```

------

## Memecahkan masalah utama KMS di Parameter Store
<a name="parameter-store-kms-cmk-troubleshooting"></a>

Untuk melakukan operasi apa pun pada `SecureString` parameter, Parameter Store harus dapat menggunakan kunci AWS KMS KMS yang Anda tentukan untuk operasi yang dimaksud. Sebagian besar Parameter Store kegagalan yang terkait dengan kunci KMS disebabkan oleh masalah berikut:
+ Kredensyal yang digunakan aplikasi tidak memiliki izin untuk melakukan tindakan yang ditentukan pada kunci KMS. 

  Untuk memperbaiki kesalahan ini, jalankan aplikasi dengan kredensial yang berbeda atau merevisi IAM atau kebijakan kunci yang mencegah operasi. *Untuk bantuan terkait AWS KMS IAM dan kebijakan utama, lihat [akses kunci KMS dan izin](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) di Panduan Pengembang AWS Key Management Service .*
+ Kunci KMS tidak ditemukan. 

  Ini biasanya terjadi ketika Anda menggunakan pengenal yang salah untuk kunci KMS. [Temukan pengidentifikasi yang benar](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) untuk kunci KMS dan coba perintahnya lagi. 
+ Kunci KMS tidak diaktifkan. Ketika ini terjadi, Parameter Store mengembalikan InvalidKeyIdpengecualian dengan pesan kesalahan rinci dari AWS KMS. Jika status kunci KMS adalah`Disabled`, [aktifkan](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html). Jika status `Pending Import`, selesaikan [prosedur impor](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html). Jika status kuncinya`Pending Deletion`, [batalkan penghapusan kunci](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html) atau gunakan kunci KMS yang berbeda.

  Untuk menemukan [status kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) dari kunci KMS, gunakan [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operasi. 