

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

# 資料加密
<a name="data-encryption"></a>

本主題提供 Amazon Connect Decisions 有關傳輸中加密和靜態加密的特定資訊。

## 傳輸中加密
<a name="data-encryption-in-transit"></a>

客戶與 Amazon Connect Decisions 之間的所有通訊，以及 Amazon Connect Decisions 與其下游相依性之間的通訊，都會使用 TLS 1.2 或更新版本的連線進行保護。

## 靜態加密
<a name="data-encryption-at-rest"></a>

所有靜態資料都會使用伺服器端加密進行加密。不需要額外的組態，因為 服務會以透明方式處理加密。

根據預設，Amazon Connect Decisions 會使用來自 AWS Key Management Service (AWS KMS) 的 AWS 擁有加密金鑰來加密您的資料。您不需要採取任何動作來保護加密資料的 AWS 擁有金鑰。如需詳細資訊，請參閱《[AWS Key Management Service 開發人員指南》中的 AWS 擁有](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)*的金鑰 AWS Key Management Service*。

您可以選擇性地設定客戶受管 KMS 金鑰，以完全控制金鑰生命週期，包括建立、輪換、停用和存取政策管理。

### 使用客戶受管 KMS 金鑰加密靜態資料
<a name="data-encryption-customer-managed-kms-keys"></a>

#### Amazon Connect Decisions 如何使用客戶受管 KMS 金鑰
<a name="data-encryption-how-uses-cmk"></a>

當您設定客戶受管 KMS 金鑰時，Amazon Connect Decisions 會使用它來加密執行個體中的所有靜態資料。這包括跨服務基礎基礎設施存放的資料。

服務會透過三種機制存取您的金鑰：
+ **服務主體** — `scn.amazonaws.com`服務主體會直接呼叫 KMS 進行 Encrypt、Decrypt 和 GenerateDataKey 操作，傳遞加密內容和混淆代理人標頭。
+ **授予** — 服務會在您建立執行個體時，在您的金鑰上建立授予。這些授與可讓相依的 AWS 服務使用您的 金鑰來加密和解密資料。刪除執行個體時，會淘汰授與。
+ **透過 FAS 的執行個體角色** — 當您與主控台互動時，服務連結角色會透過 `scn.<region>.amazonaws.com` ViaService 條件存取您的金鑰。

**加密內容：**所有直接 KMS 操作都包含下列加密內容：

```
{"aws:scn:arn": "arn:aws:scn:<region>:<account-id>:instance/<instance-id>"}
```

**資料金鑰快取：**Amazon Connect Decisions 快取資料金鑰最多 15 分鐘。這表示在您停用或撤銷對 KMS 金鑰的存取權之後，服務可能會在操作開始失敗之前，繼續使用快取的資料金鑰最多 15 分鐘。

#### 設定客戶受管 KMS 金鑰
<a name="data-encryption-configuring-cmk"></a>

Amazon Connect Decisions 僅支援對稱加密 KMS 金鑰。支援多區域金鑰。

##### 設定使用客戶受管 KMS 金鑰的許可
<a name="data-encryption-configuring-permissions"></a>

若要使用客戶受管 KMS 金鑰，請依照下列三個步驟設定您的金鑰政策：

1. 使用以下基本政策**建立 KMS 金鑰**。

1. **建立 Amazon Connect Decisions 執行個體**，然後選取該金鑰。

1. **（選用，建議）** 使用執行個體層級限制更新金鑰政策。

##### 步驟 1 — 使用基本政策建立金鑰
<a name="data-encryption-step1-base-policy"></a>

開啟 [AWS KMS 主控台](https://console.aws.amazon.com/kms)，選擇**建立金鑰**，並以下列內容取代預設政策。`<customer-account-id>` 將 取代為您的 AWS 帳戶 ID，並將 `<region>`取代為您的 AWS 區域。

```
{
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "AllowAccountRootFullAccess",
              "Effect": "Allow",
              "Principal": {
                "AWS": "arn:aws:iam::<customer-account-id>:root"
              },
              "Action": "kms:*",
              "Resource": "*"
            },
            {
              "Sid": "AllowScnRetrievalOfKeyMetadata",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": "kms:DescribeKey",
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "<customer-account-id>"
                }
              }
            },
            {
              "Sid": "AllowScnEncryptDecryptWithContext",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey",
                "kms:GenerateDataKeyWithoutPlaintext"
              ],
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "<customer-account-id>"
                }
              }
            },
            {
              "Sid": "AllowScnCryptoViaDependencyServices",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
              ],
              "Resource": "*",
              "Condition": {
                "StringEquals": {
                  "kms:ViaService": [
                    "redshift-serverless.<region>.amazonaws.com",
                    "aoss.<region>.amazonaws.com",
                    "dynamodb.<region>.amazonaws.com",
                    "s3.<region>.amazonaws.com"
                  ]
                }
              }
            },
            {
              "Sid": "AllowScnCreateGrantForDependencyServices",
              "Effect": "Allow",
              "Principal": {
                "Service": "scn.amazonaws.com"
              },
              "Action": "kms:CreateGrant",
              "Resource": "*",
              "Condition": {
                "ForAllValues:StringEquals": {
                  "kms:GrantOperations": [
                    "Encrypt",
                    "Decrypt",
                    "GenerateDataKey",
                    "GenerateDataKeyWithoutPlaintext",
                    "DescribeKey",
                    "RetireGrant",
                    "ReEncryptFrom",
                    "ReEncryptTo",
                    "CreateGrant"
                  ]
                },
                "Bool": {
                  "kms:GrantIsForAWSResource": "true"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleDescribeKey",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": "kms:DescribeKey",
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleEncryptDecrypt",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
              ],
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                }
              }
            },
            {
              "Sid": "AllowInstanceRoleCreateGrant",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Action": "kms:CreateGrant",
              "Resource": "*",
              "Condition": {
                "ArnLike": {
                  "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*"
                },
                "StringEquals": {
                  "kms:ViaService": "scn.<region>.amazonaws.com"
                },
                "ForAllValues:StringEquals": {
                  "kms:GrantOperations": [
                    "Encrypt",
                    "Decrypt",
                    "GenerateDataKey",
                    "GenerateDataKeyWithoutPlaintext",
                    "DescribeKey",
                    "CreateGrant"
                  ]
                },
                "Bool": {
                  "kms:GrantIsForAWSResource": "true"
                }
              }
            }
          ]
        }
```

**政策陳述式說明：**
+ **AllowAccountRootFullAccess** — 確保金鑰擁有者保留完全控制。防止金鑰鎖定的必要項目。
+ **AllowScnRetrievalOfKeyMetadata** — 允許服務在執行個體建立期間驗證金鑰組態。透過 範圍限定於您的帳戶`aws:SourceAccount`。
+ **AllowScnEncryptDecryptWithContext** — 允許對資料進行直接密碼編譯操作。在步驟 3 之後，這會透過加密內容進一步範圍限定於您的特定執行個體。
+ **AllowScnCryptoViaDependencyServices** — 允許透過不支援加密內容的相依性服務進行密碼編譯操作。透過 範圍`kms:ViaService`限定於特定服務端點。
+ **AllowScnCreateGrantForDependencyServices** — 允許建立相依性服務的授予。僅限列出的操作，且僅限 AWS 資源。
+ **AllowInstanceRoleDescribeKey** — 允許執行個體的服務連結角色透過 FAS 描述金鑰。
+ **AllowInstanceRoleEncryptDecrypt** — 允許執行個體角色透過 FAS 解密和產生資料金鑰。
+ **AllowInstanceRoleCreateGrant** — 允許執行個體角色建立下游整合的授予。

##### 步驟 2 — 建立 Amazon Connect 決策執行個體
<a name="data-encryption-step2-create-instance"></a>

在建立執行個體期間，在加密設定下選取**客戶受管金鑰**，然後選擇您在步驟 1 中建立的金鑰。

**重要**  
您無法在建立執行個體後變更此選項。如果您未來需要使用不同的金鑰，則必須建立新的執行個體。

##### 步驟 3 （選用） — 新增執行個體層級限制
<a name="data-encryption-step3-instance-restrictions"></a>

建立執行個體之後，請更新金鑰政策，以限制只能存取該執行個體。這可防止相同帳戶中的其他執行個體使用 金鑰。

取代 `<customer-account-id>`、 `<region>`和 `<instance-id>`（顯示在 Amazon Connect Decisions 主控台上的 UUID)。

基本政策的變更如下：
+ 將`aws:SourceArn`條件新增至服務主體陳述式，限制為執行個體 ARN。
+ 將`kms:EncryptionContext:aws:scn:arn`條件新增至密碼編譯操作，要求加密內容與您的執行個體相符。

已更新政策 （僅顯示變更的陳述式）：

**AllowScnRetrievalOfKeyMetadata** — 新增`ArnLike`條件：

```
"Condition": {
          "StringEquals": {
            "aws:SourceAccount": "<customer-account-id>"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          }
        }
```

**AllowScnEncryptDecryptWithContext** — 新增`EncryptionContext`和`SourceArn`條件：

```
"Condition": {
          "StringEquals": {
            "aws:SourceAccount": "<customer-account-id>",
            "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>"
          }
        }
```

**AllowInstanceRoleEncryptDecrypt** — 新增`EncryptionContext`條件：

```
"Condition": {
          "ArnLike": {
            "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/scn-instance-role-*"
          },
          "StringEquals": {
            "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>",
            "kms:ViaService": "scn.<region>.amazonaws.com"
          }
        }
```

##### 使用客戶受管 KMS 金鑰建立新的執行個體
<a name="data-encryption-creating-instance-with-cmk"></a>

您可以在 Amazon Connect Decisions 主控台的執行個體建立期間選取 KMS 金鑰。如需建立執行個體的詳細資訊，請參閱[建立 Amazon Connect 決策執行個體](https://docs.aws.amazon.com/connect-decisions/latest/adminguide/creating-your-instance.html)。

##### 在現有執行個體上變更加密組態
<a name="data-encryption-changing-encryption-config"></a>

Amazon Connect Decisions 不支援變更作用中執行個體上的 KMS 金鑰。如果您需要使用不同的金鑰，您必須建立使用所需金鑰設定的新執行個體。使用上一個金鑰加密的資料不會保留在新的執行個體上。

##### 縮小對客戶受管 KMS 金鑰的存取範圍
<a name="data-encryption-scoping-down-access"></a>

您可以使用下列機制來限制對金鑰的存取：
+ **加密內容** — 在您的金鑰政策`kms:EncryptionContext:aws:scn:arn`中使用 ，將操作限制在特定執行個體 （請參閱步驟 3)。
+ **混淆代理人保護** — 服務在 KMS 呼叫`aws:SourceArn`時通過 `aws:SourceAccount`和 。使用這些條件可確保只有您的帳戶和執行個體可以存取金鑰。
+ **kms:ViaService** — 執行個體角色只會透過 存取金鑰`scn.<region>.amazonaws.com`，防止直接在服務外部使用。
+ **授予限制** — 授予的範圍為 `kms:GrantIsForAWSResource`，且僅限於明確列出的操作。

**注意**  
相依性服務 (Redshift Serverless、OpenSearch Serverless、DynamoDB) 不支援加密內容或混淆代理人標頭。這些服務的存取範圍`kms:ViaService`僅限於使用 。

### 監控 Amazon Connect Decisions 與 AWS KMS 的互動
<a name="data-encryption-monitoring-kms"></a>

您可以使用 AWS CloudTrail 來追蹤 Amazon Connect Decisions 代表您提出的 KMS 請求。尋找具有下列值的日誌項目：


| 欄位 | 預期值 | 
| --- | --- | 
| eventName | `Decrypt`, `GenerateDataKey`, `CreateGrant` | 
| userIdentity.invokedBy | `scn.amazonaws.com` | 
| requestParameters.encryptionContext | `{"aws:scn:arn": "arn:aws:scn:<region>:<account-id>:instance/<instance-id>"}` | 

您可以使用這些值篩選 CloudTrail 事件，以稽核 Amazon Connect Decisions 存取 KMS 金鑰的時間和方式。

如需詳細資訊，請參閱[使用 AWS CloudTrail 記錄 AWS KMS API 呼叫](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。