

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS KMS SecureString 參數的 AWS Systems Manager Parameter Store加密
<a name="secure-string-parameter-kms-encryption"></a>

您可以使用 AWS Systems Manager Parameter Store建立 [SecureString 參數](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter)，這些參數具有純文字參數名稱和加密參數值。 Parameter Store使用 AWS KMS 來加密和解密`SecureString`參數的參數值。

使用 Parameter Store 可以將資料當做具有值的參數來建立、存放和管理。您可以在 Parameter Store 中建立參數，並將它用在遵守您設計之政策和許可的多個應用程式和服務。需要變更參數值時，您只需變更一個執行個體，而不用管理容易出錯的多個來源變更。Parameter Store 支援層級結構的參數名稱，所以您可以限定參數用於特定用途。

若要管理敏感資料，您可以建立`SecureString`參數。當您建立或變更參數時， Parameter Store會使用 AWS KMS keys 來加密`SecureString`參數的參數值。當您存取這些參數時，它也使用 KMS 金鑰來解密參數值。使用 Parameter Store 為帳戶建立的 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)，或指定自己的[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**重要**  
Parameter Store 僅支援[對稱 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)。您無法使用[非對稱 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)來加密您的參數。如需判斷 KMS 金鑰是對稱金鑰還是非對稱金鑰的說明，請參閱《AWS Key Management Service 開發人員指南》**中的 [Identify different key types](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html)。

Parameter Store 支援兩種層級的`SecureString`參數：*標準*和*進階*。標準參數，不能超過 4096 個位元組，直接在您指定的 KMS 金鑰下加密和解密。為了加密和解密進階`SecureString`參數，Parameter Store 會使用信封加密搭配 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)。您可以將標準`SecureString`參數轉換成進階參數，但無法將進階參數轉換成標準參數。如需有關標準和進階 `SecureString` 參數之間差異的詳細資訊，請參閱[管理參數層](parameter-store-advanced-parameters.md)。

**Topics**
+ [保護標準 SecureString 參數](#kms-encryption-securestring-standard)
+ [保護進階 SecureString 參數](#kms-encryption-securestring-advanced)
+ [設定許可來加密和解密參數值](#parameter-policy-kms-encryption)
+ [Parameter Store 加密內容](#parameter-store-kms-encryption-context)
+ [對 Parameter Store 中的 KMS 金鑰問題進行疑難排解](#parameter-store-kms-cmk-troubleshooting)

## 保護標準 SecureString 參數
<a name="kms-encryption-securestring-standard"></a>

Parameter Store 不會執行任何密碼編譯操作。而是倚賴 AWS KMS 來加密和解密`SecureString`參數值。當您建立或變更標準`SecureString`參數值時， 會Parameter Store呼叫 AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 操作。這個操作會直接使用對稱加密 KMS 金鑰來加密參數值，而不使用 KMS 金鑰產生[資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html)。

您可以選擇 Parameter Store 用來加密參數值的 KMS 金鑰。如果未指定 KMS 金鑰，Parameter Store 會使用 Systems Manager 在帳戶中自動建立的 AWS 受管金鑰 。此 KMS 金鑰具有 `aws/ssm` 別名。

若要檢視您帳戶的預設 `aws/ssm` KMS 金鑰，請使用 AWS KMS API 中的 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作。下列範例使用 AWS Command Line Interface (AWS CLI) 中的 `aws/ssm` `describe-key`命令搭配別名名稱。

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

若要建立標準 `SecureString` 參數，請使用 Systems Manager API 中的 [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) 操作。省略 `Tier` 參數，或指定值為 `Standard` (預設值)。加入值為 `SecureString` 的 `Type` 參數。若要指定 KMS 金鑰，請使用 `KeyId` 參數。預設為 AWS 受管金鑰 您帳戶的 `aws/ssm`。

Parameter Store 然後， 會使用 KMS 金鑰和純文字參數值呼叫 AWS KMS `Encrypt`操作。 AWS KMS 會傳回加密的參數值，以參數名稱Parameter Store存放。

下列範例使用 Systems Manager [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) 命令及其在 中的`--type`參數 AWS CLI 來建立`SecureString`參數。由於命令會省略選用 `--tier` 和 `--key-id` 參數，Parameter Store 會建立標準 `SecureString` 參數，並在 AWS 受管金鑰下加密此參數。

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

以下類似範例使用 `--key-id` 參數來指定[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。此範例使用 KMS 金鑰 ID 來識別 KMS 金鑰，但您可以使用任何有效的 KMS 金鑰識別符。由於命令省略 `Tier` 參數 (`--tier`)，Parameter Store 會建立標準`SecureString`參數，而不是進階參數。

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

當您從 Parameter Store 取得`SecureString`參數時，它的值會加密。若要取得參數，請使用 Systems Manager API 中的 [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) 操作。

下列範例使用 中的 Systems Manager [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) 命令 AWS CLI ，從 取得 `MyParameter` 參數，Parameter Store而不解密其值。

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

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

若要在傳回參數值之前先解密，請將 `GetParameter` 的 `WithDecryption` 參數設定為 `true`。當您使用 時`WithDecryption`， 會代表您Parameter Store呼叫 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作來解密參數值。因此，`GetParameter` 請求會傳回具有純文字參數值的參數，如以下範例所示。

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

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

以下工作流程說明 Parameter Store 如何使用 KMS 金鑰來加密和解密標準 `SecureString` 參數。

### 加密標準參數
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. 當您使用 `PutParameter` 建立`SecureString` 參數時，Parameter Store 會傳送 `Encrypt` 請求給 AWS KMS。該請求包含純文字參數值、選定的 KMS 金鑰，以及 [Parameter Store 加密內容](#parameter-store-kms-encryption-context)。在傳輸到 期間 AWS KMS， `SecureString` 參數中的純文字值受到 Transport Layer Security (TLS) 的保護。

1. AWS KMS 會使用指定的 KMS 金鑰和加密內容來加密參數值。它將加密文字傳回給 Parameter Store 來儲存參數名稱及其加密的值。  
![\[加密標準 SecureString 參數值\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/service-pstore-standard.png)

### 解密標準參數
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. 當您在`GetParameter`請求中包含 `WithDecryption` 參數時， 會使用加密 AWS KMS 參數`SecureString`值和[Parameter Store加密內容](#parameter-store-kms-encryption-context)將`Decrypt`請求Parameter Store傳送至 。

1. AWS KMS 使用相同的 KMS 金鑰和提供的加密內容來解密加密值。它將純文字 (解密的) 參數值傳回給 Parameter Store。在傳輸過程中，純文字資料受到 TLS 保護。

1. Parameter Store 在 `GetParameter` 回應中傳回純文字參數值給您。

## 保護進階 SecureString 參數
<a name="kms-encryption-securestring-advanced"></a>

當您使用 `PutParameter`建立進階`SecureString`參數時， Parameter Store會使用[信封加密](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption)搭配 AWS Encryption SDK 和對稱加密 AWS KMS key 來保護參數值。每個進階參數值都在唯一的資料金鑰下加密，而資料金鑰是在 KMS 金鑰下加密。您可以使用帳戶 (`aws/ssm`) 的 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)，或任何客戶受管金鑰。

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) 是開放原始碼的用戶端程式庫，可協助您使用產業標準和最佳實務來加密和解密資料。它支援多種平台和多種程式設計語言，包括命令列界面。您可以檢視原始程式碼，並在 GitHub 中對其開發做出貢獻。

對於每個`SecureString`參數值，Parameter Store 會呼叫 AWS Encryption SDK ，並使用 AWS KMS 產生的唯一資料金鑰 ([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)) 來加密參數值。會 AWS Encryption SDK 傳回Parameter Store[加密訊息](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)，其中包含加密的參數值和唯一資料金鑰的加密副本。 會將整個加密訊息Parameter Store存放在`SecureString`參數值中。然後，當您取得進階`SecureString`參數值時， Parameter Store會使用 AWS Encryption SDK 來解密參數值。這需要呼叫 AWS KMS 來解密加密的資料金鑰。

若要建立進階 `SecureString` 參數，請使用 Systems Manager API 中的 [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) 操作。將 `Tier` 參數的值設為 `Advanced`。加入值為 `SecureString` 的 `Type` 參數。若要指定 KMS 金鑰，請使用 `KeyId` 參數。預設為 AWS 受管金鑰 您帳戶的 `aws/ssm`。

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

以下類似範例使用 `--key-id` 參數來指定[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。此範例使用 KMS 金鑰的 Amazon Resource Name (ARN)，但您可以使用任何有效的 KMS 金鑰識別符。

```
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
```

當您從 取得`SecureString`參數時Parameter Store，其值是 AWS Encryption SDK 傳回的加密訊息。若要取得參數，請使用 Systems Manager API 中的 [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) 操作。

以下範例使用 Systems Manager `GetParameter` 操作從 Parameter Store 取得 `MyParameter` 參數，無需解密其值。

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

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

若要在傳回參數值之前先解密，請將 `GetParameter` 的 `WithDecryption` 參數設定為 `true`。當您使用 時`WithDecryption`， 會代表您Parameter Store呼叫 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作來解密參數值。因此，`GetParameter` 請求會傳回具有純文字參數值的參數，如以下範例所示。

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

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

您無法將進階`SecureString`參數轉換成標準參數，但可以將標準`SecureString`轉換成進階參數。若要將標準`SecureString`參數轉換成進階`SecureString`，請使用 `PutParameter` 操作搭配 `Overwrite` 參數。`Type` 必須是 `SecureString`，`Tier` 值必須是 `Advanced`。識別客戶受管金鑰的 `KeyId` 參數是選用的。如果您省略它， Parameter Store會使用 AWS 受管金鑰 帳戶的 。即使您使用不同的 KMS 金鑰來加密標準參數，您也可以指定委託人有權使用的任何 KMS 金鑰。

當您使用 `Overwrite` 參數時，Parameter Store 會使用 AWS Encryption SDK 來加密參數值。然後，它會將新加密的訊息存放在 Parameter Store 中。

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

以下工作流程說明 Parameter Store 如何使用 KMS 金鑰來加密和解密進階 `SecureString` 參數。

### 加密進階參數
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. 當您使用 `PutParameter`建立進階`SecureString`參數時， Parameter Store會使用 AWS Encryption SDK 和 AWS KMS 來加密參數值。 AWS Encryption SDK 會使用 參數值、您指定的 KMS 金鑰和[Parameter Store加密內容](#parameter-store-kms-encryption-context)來Parameter Store呼叫 。

1.  AWS Encryption SDK 會將 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求傳送至 ， AWS KMS 其中包含您指定之 KMS 金鑰的識別符和Parameter Store加密內容。 AWS KMS 會傳回唯一資料金鑰的兩個副本：一個是純文字，另一個是在 KMS 金鑰下加密。(加密資料金鑰時會使用加密內容。)

1.  AWS Encryption SDK 使用純文字資料金鑰來加密參數值。它會傳回 [加密的訊息](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)，其中包含加密的參數值、加密的資料金鑰和其他資料 (包括 Parameter Store 加密內容)。

1. Parameter Store 將加密的訊息儲存為參數值。  
![\[加密進階 SecureString 參數值\]](http://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### 解密進階參數
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. 您可以在 `GetParameter` 請求中包含 `WithDecryption` 參數，以取得進階`SecureString`參數。當您這麼做時，Parameter Store 會從參數值中將[加密的訊息](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)傳遞到 AWS Encryption SDK的解密方法。

1. 會 AWS Encryption SDK 呼叫 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作。它從加密的訊息傳入加密的資料金鑰和 Parameter Store 加密內容。

1. AWS KMS 使用 KMS 金鑰和Parameter Store加密內容來解密加密的資料金鑰。然後，它將純文字 (解密的) 資料金鑰傳回給 AWS Encryption SDK。

1.  AWS Encryption SDK 使用純文字資料金鑰來解密參數值。它將純文字參數值傳回給 Parameter Store。

1. Parameter Store 驗證加密內容，並在 `GetParameter` 回應中將純文字參數值傳回給您。

## 設定許可來加密和解密參數值
<a name="parameter-policy-kms-encryption"></a>

若要加密標準`SecureString`參數值，使用者需要 `kms:Encrypt` 許可。若要加密進階`SecureString`參數值，使用者需要 `kms:GenerateDataKey` 許可。若要解密任一類型的`SecureString`參數值，使用者需要 `kms:Decrypt` 許可。

您可以使用 AWS Identity and Access Management (IAM) 政策來允許或拒絕使用者呼叫 Systems Manager `PutParameter`和 `GetParameter`操作的許可。

如果使用客戶自管金鑰來加密 `SecureString` 參數值，則可以使用 IAM 政策和金鑰政策來管理加密和解密許可。不過，您無法為預設 `aws/ssm` KMS 金鑰建立存取控制政策。如需有關控制客戶自管金鑰存取的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的 [KMS key access and permissions](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。

以下範例顯示專為標準 `SecureString` 參數設計的 IAM 政策。它可讓使用者在 `FinancialParameters` 路徑中的所有參數上呼叫 Systems Manager `PutParameter` 操作。此政策也允許使用者在 AWS KMS `Encrypt`範例客戶受管金鑰上呼叫 操作。

------
#### [ 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"
        }
    ]
}
```

------

以下範例顯示專為進階 `SecureString` 參數設計的 IAM 政策。它可讓使用者在 `ReservedParameters` 路徑中的所有參數上呼叫 Systems Manager `PutParameter` 操作。此政策也允許使用者在 AWS KMS `GenerateDataKey`範例客戶受管金鑰上呼叫 操作。

------
#### [ 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"
        }
    ]
}
```

------

最後一個範例還顯示可用於標準或進階`SecureString`參數的 IAM 政策。它可讓使用者在 `ITParameters` 路徑中的所有參數上呼叫 Systems Manager `GetParameter` 操作 (以及相關操作)。此政策也允許使用者在 AWS KMS `Decrypt`範例客戶受管金鑰上呼叫 操作。

------
#### [ 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 Store 加密內容
<a name="parameter-store-kms-encryption-context"></a>

*加密內容*是一組金鑰/值對，其中包含任意非私密資料。當您在加密資料的請求中包含加密內容時， 會以 AWS KMS 加密方式將加密內容繫結至加密的資料。若要解密資料，您必須傳遞相同的加密內容。

您也可以使用加密內容來識別稽核記錄和日誌中的密碼編譯操作。加密內容會以純文字形式出現在日誌中，例如 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 日誌。

 AWS Encryption SDK 也會採用加密內容，雖然其處理方式不同。 會將加密內容Parameter Store提供給加密方法。 AWS Encryption SDK 密碼編譯會將加密內容繫結至加密的資料。它在傳回的已加密訊息的標頭中，還會包含純文字形式的加密內容。不過，與解密方法不同 AWS KMS， AWS Encryption SDK 解密方法不會將加密內容視為輸入。反之，當它解密資料時， 會從加密的訊息 AWS Encryption SDK 取得加密內容。 Parameter Store 會驗證加密內容是否包含預期的值，然後再將純文字參數值傳回給您。

Parameter Store 在其密碼編譯操作中使用下列加密內容：
+ 索引鍵：`PARAMETER_ARN`
+ 值：要加密之參數的 Amazon Resource Name (ARN)。

加密內容的格式如下：

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

例如， 會在呼叫中Parameter Store包含此加密內容，以加密和解密範例 AWS 帳戶 和區域中的 `MyParameter` 參數。

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

如果參數位於 Parameter Store 階層路徑，則路徑和名稱會包含在加密內容中。例如，在範例和區域中的 `/ReadableParameters` 路徑中加密 AWS 帳戶 和解密 `MyParameter` 參數時，會使用此加密內容。

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

您可以使用正確的加密內容和 Systems Manager 操作傳回的加密`SecureString`參數值，呼叫 AWS KMS `Decrypt``GetParameter`操作來解密加密的參數值。不過，我們建議您使用 `GetParameter` 操作搭配 `WithDecryption` 參數來解密 Parameter Store 參數值。

您也可以在 IAM 政策包含加密內容。例如，您可以允許使用者只解密一個特定的參數值或一組參數值。

以下範例 IAM 政策陳述式允許使用者取得 `MyParameter` 參數的值和使用指定的 KMS 金鑰來解密其值。不過，只有在加密內容符合指定的字串時，才會套用許可。這些許可不適用於任何其他參數或 KMS 金鑰，如果加密內容不符合字串，則呼叫 `GetParameter` 會失敗。

使用這類政策陳述式之前，請使用有效值取代*範例 ARN*。

------
#### [ 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"
                }
            }
        }
    ]
}
```

------

## 對 Parameter Store 中的 KMS 金鑰問題進行疑難排解
<a name="parameter-store-kms-cmk-troubleshooting"></a>

若要對`SecureString`參數執行任何操作， Parameter Store 必須能夠使用您為預期操作指定的 AWS KMS KMS 金鑰。KMS 金鑰相關的大部分 Parameter Store 失敗是由下列問題引起：
+ 應用程式使用的登入資料無權在 KMS 金鑰上執行指定的動作。

  若要修正此錯誤，請使用不同的登入資料來執行應用程式，或修改防止操作的 IAM 或金鑰政策。如需 IAM AWS KMS 和金鑰政策的說明，請參閱《 *AWS Key Management Service 開發人員指南*》中的 [KMS 金鑰存取和許可](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。
+ 找不到 KMS 金鑰。

  這種情況通常發生在您為 KMS 金鑰使用不正確的識別符。為 KMS 金鑰[尋找正確的識別符](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)，再試一次命令。
+ 未啟用 KMS 金鑰。發生這種情況時， 會Parameter Store傳回 InvalidKeyId 例外狀況，其中包含來自 的詳細錯誤訊息 AWS KMS。如果 KMS 金鑰狀態為 `Disabled`，請[啟用](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)。如果是 `Pending Import`，請完成[匯入程序](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)。如果金鑰狀態為 `Pending Deletion`，請[取消金鑰刪除](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html)或使用不同的 KMS 金鑰。

  若要尋找 KMS 金鑰的[金鑰狀態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)，請使用 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作。