

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

# 中的秘密加密和解密 AWS Secrets Manager
<a name="security-encryption"></a>

Secrets Manager 使用信封加密搭配 AWS KMS [金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)和[資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)來保護每個秘密值。每當機密中的機密值變更，Secrets Manager 就會請求 AWS KMS 中的新資料金鑰來進行保護。資料金鑰將在 KMS 金鑰下加密，並會存放在秘密的中繼資料中。若要解密秘密，Secrets Manager 會先使用 中的 KMS 金鑰解密加密的資料金鑰 AWS KMS。

Secrets Manager 不會直接使用 KMS 金鑰來加密秘密值。相反地，它會使用 KMS 金鑰來產生和加密 256 位元的進階加密標準 (AES) 對稱[資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)，再使用資料金鑰來加密秘密值。Secrets Manager 使用純文字資料金鑰來加密 外部的秘密值 AWS KMS，然後將其從記憶體中移除。它將加密的資料金鑰副本存放在秘密的中繼資料中。

**Topics**
+ [

## 選擇 AWS KMS 金鑰
](#security-encryption-choose-key)
+ [

## 會加密哪些資料？
](#secret-value-encrypted)
+ [

## 加密和解密程序
](#security-encryption-encrypt)
+ [

## KMS 金鑰的許可
](#security-encryption-authz)
+ [

## Secrets Manager 如何使用您的 KMS 金鑰
](#security-encryption-using-cmk)
+ [

## AWS 受管金鑰 (`aws/secretsmanager`) 的金鑰政策
](#security-encryption-policies)
+ [

## Secrets Manager 加密內容
](#security-encryption-encryption-context)
+ [

## 監控 Secrets Manager 與 的互動 AWS KMS
](#security-encryption-logs)

## 選擇 AWS KMS 金鑰
<a name="security-encryption-choose-key"></a>

建立秘密時，您可以選擇 AWS 帳戶 和 區域中的任何對稱加密客戶受管金鑰，也可以使用 AWS 受管金鑰 適用於 Secrets Manager 的 (`aws/secretsmanager`)。如果您選擇 AWS 受管金鑰 `aws/secretsmanager`且它尚未存在，Secrets Manager 會建立它並將其與秘密建立關聯。對於帳戶中的每個秘密，您可以使用相同的 KMS 金鑰或不同的 KMS 金鑰。建議您使用其他 KMS 金鑰，為一組秘密設定金鑰的自訂許可，或者如果您想要稽核這些金鑰的特定作業。Secrets Manager 只支援[對稱加密 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)。如果您在[外部金鑰存放區](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)中使用 KMS 金鑰，KMS 金鑰上的密碼編譯作業可能需要更長的時間，且較不可靠和耐用，因為請求必須在 AWS外傳輸。

如需變更秘密的加密金鑰的資訊，請參閱 [變更 AWS Secrets Manager 秘密的加密金鑰](manage_update-encryption-key.md)。

當您變更加密金鑰時，Secrets Manager 會使用新金鑰重新加密 `AWSPENDING`、 `AWSCURRENT`和 `AWSPREVIOUS`版本。為了避免將您鎖定在秘密之外，Secrets Manager 會保留所有使用上一個金鑰加密的現有版本。這表示您可以使用先前的金鑰或新的金鑰來解密 `AWSCURRENT``AWSPENDING`、 和 `AWSPREVIOUS`版本。如果您沒有前一個金鑰的`kms:Decrypt`許可，當您變更加密金鑰時，Secrets Manager 無法解密秘密版本以重新加密它們。在此情況下，現有的版本不會重新加密。

若要讓它`AWSCURRENT`只能由新的加密金鑰解密，請使用新金鑰建立新的秘密版本。然後，若要能夠解密`AWSCURRENT`秘密版本，您必須擁有新金鑰的許可。

您可以拒絕 的許可， AWS 受管金鑰 `aws/secretsmanager`並要求使用客戶受管金鑰加密秘密。如需詳細資訊，請參閱[範例：拒絕加密秘密的特定 AWS KMS 金鑰](auth-and-access_iam-policies.md#auth-and-access_examples_kmskey)。

若要尋找與密碼相關聯的 KMS 金鑰，請在主控台中檢視密碼，或呼叫 [ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) 或 [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html)。當秘密與 AWS 受管金鑰 適用於 Secrets Manager 的 (`aws/secretsmanager`) 相關聯時，這些操作不會傳回 KMS 金鑰識別符。

## 會加密哪些資料？
<a name="secret-value-encrypted"></a>

Secrets Manager 會加密機密值，但不會加密下列項目：
+ 機密名稱和說明
+ 輪換設定
+ 與秘密相關聯的 KMS 金鑰 ARN
+ 任何連接的 AWS 標籤 

## 加密和解密程序
<a name="security-encryption-encrypt"></a>

若要加密秘密中的秘密值，Secrets Manager 使用以下程序。

1. Secrets Manager 會使用秘密的 KMS 金鑰 ID 和 256 位元 AES 對稱金鑰的請求來呼叫 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 操作。 AWS KMS 會傳回純文字資料金鑰和以 KMS 金鑰加密的資料金鑰複本。

1. Secrets Manager 使用純文字資料金鑰和進階加密標準 (AES) 演算法來加密 外部的秘密值 AWS KMS。使用完畢後，它會盡快從記憶體中移除這些純文字金鑰。

1. Secrets Manager 將加密的資料金鑰存放在秘密的中繼資料，以便可以用來解密秘密值。不過，沒有 Secrets Manager API 會傳回加密的秘密或加密的資料金鑰。

若要解密加密秘密值：

1.  Secrets Manager 會呼叫 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作並傳入加密的資料金鑰。

1. AWS KMS 使用秘密的 KMS 金鑰來解密資料金鑰。它會傳回純文字資料金鑰。

1. Secrets Manager 使用純文字資料金鑰來解密秘密值。接著，它會盡快從記憶體中移除資料金鑰。

## KMS 金鑰的許可
<a name="security-encryption-authz"></a>

Secrets Manager 在密碼編譯操作中使用 KMS 金鑰時，等於是代表正在存取或更新秘密值的使用者執行動作。您可以在 IAM 政策或金鑰政策中授予許可。下列 Secrets Manager 操作需要 AWS KMS 許可。
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html)
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html)
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html)

若要允許僅將 KMS 金鑰用於源自 Secrets Manager 的請求，您可以在許可政策中使用 [kms:ViaService 條件金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)搭配 `secretsmanager.<Region>.amazonaws.com` 值。

您也可以使用[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)中的金鑰或值作為條件金鑰，以便將 KMS 金鑰用於密碼編譯操作。例如，您可以在 IAM 或金鑰政策文件中使用[字串條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)，或在授權中使用[授權限制](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)。KMS 金鑰授予傳播可能需時 5 分鐘。如需詳細資訊，請參閱 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)。

## Secrets Manager 如何使用您的 KMS 金鑰
<a name="security-encryption-using-cmk"></a>

Secrets Manager 會使用 KMS 金鑰呼叫下列 AWS KMS 操作。

**GenerateDataKey**  
Secrets Manager 會呼叫 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 操作，以回應下列 Secrets Manager 操作。  
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) – 如果新的秘密包含秘密值，Secrets Manager 會請求新的資料金鑰來加密它。
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html)– Secrets Manager 請求新的資料金鑰來加密指定的秘密值。
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) – 為加密複製的秘密，Secrets Manager 會在複寫過程中，使用複本區域中的 KMS 金鑰重新加密資料金鑰。
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) – 如果變更了秘密值或 KMS 金輪，Secrets Manager 會請求新的資料金鑰來加密新的秘密值。
[RotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 操作不會呼叫 `GenerateDataKey`，因為它不會變更秘密值。不過，如果 `RotateSecret` 調用的 Lambda 函數變更了秘密值，其對 `PutSecretValue` 操作的呼叫會觸發 `GenerateDataKey` 請求。

**解密**  
Secrets Manager 會呼叫[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)操作來回應以下 Secrets Manager 操作。  
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) 與 [BatchGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_BatchGetSecretValue.html)– Secrets Manager 在將秘密值傳回給呼叫者之前將其解密。若要解密加密的秘密值，Secrets Manager 會呼叫 AWS KMS [解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)操作來解密秘密中的加密資料金鑰。接著，使用純文字資料金鑰來解密加密的秘密值。對於批次命令，Secrets Manager 可以重複使用解密的金鑰，因此並非所有呼叫都會產生 `Decrypt` 要求。
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) 和 [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) – 大多數 `PutSecretValue` 和 `UpdateSecret` 請求不會觸發 `Decrypt` 操作。不過，當 `PutSecretValue` 或 `UpdateSecret` 請求嘗試變更現有秘密版本中的秘密值時，Secrets Manager 會解密現有的秘密值並將其與請求中的秘密值進行比較，確認它們相同。這個動作可確保 Secrets Manager 操作為等冪操作。若要解密加密的秘密值，Secrets Manager 會呼叫 AWS KMS [解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)操作來解密秘密中的加密資料金鑰。接著，使用純文字資料金鑰來解密加密的秘密值。
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) –Secrets Manager 會先在主要區域解密秘密值，然後再使用複本區域中的新 KMS 金鑰重新加密秘密值。

**加密**  
Secrets Manager 會呼叫 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 操作，回應以下 Secrets Manager 操作：  
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) – 如果您變更 KMS 金鑰，Secrets Manager 會使用新金鑰，將保護 `AWSCURRENT`、`AWSPREVIOUS` 和 `AWSPENDING` 秘密版本的資料金鑰重新加密。

**DescribeKey**  
Secrets Manager 會呼叫 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作，決定您在 Secrets Manager 主控台建立或編輯密碼時，系統是否列出 KMS 金鑰。

**驗證對 KMS 金鑰的存取**  
在建立或變更與秘密關聯的 KMS 金鑰後，Secrets Manager 會使用指定的 CMK 來呼叫 `GenerateDataKey` 和 `Decrypt` 操作。這些呼叫會確認呼叫者擁有使用 KMS 金鑰進行這些操作的許可。Secrets Manager 會捨棄這些操作的結果，不會在任何密碼編譯操作中使用它們。  
您可以識別這些驗證呼叫，因為這些請求中 `SecretVersionId` 金鑰[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)的值是 `RequestToValidateKeyAccess`。  
在過去，Secrets Manager 驗證呼叫不包含加密內容。您可能會在較舊的 AWS CloudTrail 日誌中找到沒有加密內容的呼叫。

## AWS 受管金鑰 (`aws/secretsmanager`) 的金鑰政策
<a name="security-encryption-policies"></a>

適用於 Secrets Manager (`aws/secretsmanager`) AWS 受管金鑰 的金鑰政策提供使用者許可，僅在 Secrets Manager 代表使用者提出請求時，才能將 KMS 金鑰用於指定的操作。金鑰政策不允許任何使用者直接使用 KMS 金鑰。

此金鑰政策與所有 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) 的政策一樣，都是由服務建立。您無法變更金鑰政策，但可以隨時進行檢視。如需詳細資訊，請參閱[檢視金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html)。

金鑰政策中的政策陳述式具有下列效果：
+ 只在請求來自代表使用者的 Secrets Manager 時，才允許帳戶中的使用者將 KMS 金鑰用於密碼編譯操作。`kms:ViaService` 條件金鑰會強制實施此限制。
+ 允許 AWS 帳戶建立 IAM 政策，允許使用者檢視 KMS 金鑰屬性並撤銷授予。
+ 雖然 Secrets Manager 不會使用授權來取得 KMS 金鑰的存取權，但政策也允許 Secrets Manager 代表使用者為 KMS 金鑰[建立授權](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)，並允許帳戶[撤銷任何授權](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) (該授權允許 Secrets Manager 使用 KMS 金鑰)。這些是 政策文件的標準元素 AWS 受管金鑰。

以下是 Secrets Manager 範例 AWS 受管金鑰 的金鑰政策。

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

****  

```
{
  "Id": "auto-secretsmanager-2",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:CreateGrant",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333",
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": "kms:GenerateDataKey*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333"
        },
        "StringLike": {
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow direct access to key metadata to the account",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:root"
        ]
      },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Secrets Manager 加密內容
<a name="security-encryption-encryption-context"></a>

[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)是一組金鑰/值對，其中包含任意的非秘密資料。當您在加密資料的請求中包含加密內容時， 會以 AWS KMS 加密方式將加密內容繫結至加密的資料。若要解密資料，您必須傳遞相同的加密內容。

在其 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求中 AWS KMS，Secrets Manager 會使用兩個名稱/值對的加密內容來識別秘密及其版本，如下列範例所示。名稱不會改變，但組合的加密內容值對於每個秘密值都是不同的。

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
}
```

您可以使用加密內容來識別稽核紀錄和日誌 (例如 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 和 Amazon CloudWatch Logs) 中的這些密碼編譯操作，以及在政策和授權中作為授權的條件。

Secrets Manager 加密內容包含兩個名稱值對。
+ **SecretARN** – 第一個名稱值對會識別秘密。金鑰為 `SecretARN`。值是秘密的 Amazon Resource Name (ARN)。

  ```
  "SecretARN": "ARN of an Secrets Manager secret"
  ```

  例如，如果秘密的 ARN 是 `arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3`，加密內容會包含下列對組。

  ```
  "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3"
  ```
+ **SecretVersionId** – 第二個名稱值對會識別秘密的版本。金鑰為 `SecretVersionId`。值為版本 ID。

  ```
  "SecretVersionId": "<version-id>"
  ```

  例如，如果秘密的版本 ID 是 `EXAMPLE1-90ab-cdef-fedc-ba987SECRET1`，加密內容會包含下列對組。

  ```
  "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
  ```

當您建立或變更秘密的 KMS 金鑰時，Secrets Manager 會將 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求傳送至 AWS KMS ，以驗證發起人是否具有對這些操作使用 KMS 金鑰的許可。它會捨棄回應；它不會將回應用於秘密值。

在這些驗證請求中，`SecretARN` 的值是秘密的實際 ARN，但 `SecretVersionId` 值是 `RequestToValidateKeyAccess`，如以下範例加密內容所示。這個特殊值可協助您識別日誌和稽核線索中的驗證請求。

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "RequestToValidateKeyAccess"
}
```

**注意**  
在過去，Secrets Manager 驗證請求不包含加密內容。您可能會在較舊的 AWS CloudTrail 日誌中找到沒有加密內容的呼叫。

## 監控 Secrets Manager 與 的互動 AWS KMS
<a name="security-encryption-logs"></a>

您可以使用 AWS CloudTrail 和 Amazon CloudWatch Logs 來追蹤 Secrets Manager AWS KMS 代表您傳送到 的請求。如需監控秘密使用情況的詳細資訊，請參閱 [監控 AWS Secrets Manager 秘密](monitoring.md)。

**GenerateDataKey**  
當您在秘密中建立或變更秘密值時，Secrets Manager 會將 *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)* 請求傳送至 AWS KMS ，以指定秘密的 KMS 金鑰。  
記錄 `GenerateDataKey` 操作的事件類似於以下範例事件。請求由 `secretsmanager.amazonaws.com` 呼叫。參數包括秘密 KMS 金鑰的 Amazon Resource Name (ARN)、需要 256 位元金鑰的金鑰指標，以及識別秘密和版本的[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:23:41Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:23:41Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "keySpec": "AES_256",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888",
    "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**解密**  
當您取得或變更秘密的秘密值時，Secrets Manager 會將[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求傳送至 ， AWS KMS 以解密加密的資料金鑰。對於批次命令，Secrets Manager 可以重複使用解密的金鑰，因此並非所有呼叫都會產生 `Decrypt` 要求。  
記錄 `Decrypt` 操作的事件類似於以下範例事件。使用者是您 AWS 帳戶中存取資料表的委託人。這些參數包括加密的資料表金鑰 （做為加密文字 Blob)，以及識別資料表和 AWS 帳戶的[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。 會從加密文字 AWS KMS 衍生 KMS 金鑰的 ID。  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:36:09Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:36:09Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a",
    "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**加密**  
當您變更與秘密相關聯的 KMS 金鑰時，Secrets Manager 會傳送[加密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)請求至 AWS KMS ，以使用新金鑰重新加密 `AWSCURRENT`、 `AWSPREVIOUS`和 `AWSPENDING`秘密版本。當您將秘密複寫到其他區域時，Secrets Manager 也會傳送 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 請求給 AWS KMS。  
記錄 `Encrypt` 操作的事件類似於以下範例事件。使用者是您 AWS 帳戶中存取資料表的委託人。  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "creationDate": "2023-06-09T18:11:34Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2023-06-09T18:11:34Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Encrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:ChangeKeyTest-5yKnKS",
            "SecretVersionId": "EXAMPLE1-5c55-4d7c-9277-1b79a5e8bc50"
        }
    },
    "responseElements": null,
    "requestID": "129bd54c-1975-4c00-9b03-f79f90e61d60",
    "eventID": "f7d9ff39-15ab-47d8-b94c-56586de4ab68",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```