

# Amazon Aurora DSQL 的数据加密
<a name="data-encryption"></a>

Amazon Aurora DSQL 可对所有用户静态数据进行加密。为了增强安全性，此加密使用 AWS Key Management Service（AWS KMS）。此功能减少保护敏感数据时涉及的操作负担和复杂性。静态加密有助于：
+ 减少保护敏感数据的运营负担
+ 构建符合严格的加密合规性和法规要求的安全敏感型应用程序
+ 通过始终在加密集群中保护数据，增加额外的一层数据保护
+ 遵守组织策略、行业或政府法规以及合规性要求

使用 Aurora DSQL，可以构建符合严格的加密合规性和法规要求的安全敏感型应用程序。以下各节说明如何为新的和现有 Aurora DSQL 数据库配置加密以及如何管理加密密钥。

**Topics**
+ [Aurora DSQL 的 KMS 密钥类型](#kms-key-types)
+ [Aurora DSQL 中的静态加密](#encryption-at-rest)
+ [将 AWS KMS 和数据密钥与 Aurora DSQL 结合使用](#using-kms-and-data-keys)
+ [授权将 AWS KMS key用于 Aurora DSQL](#authorizing-kms-key-use)
+ [Aurora DSQL 加密上下文](#dsql-encryption-context)
+ [监控 Aurora DSQL 与 AWS KMS 的交互](#monitoring-dsql-kms-interaction)
+ [创建加密的 Aurora DSQL 集群](#creating-encrypted-cluster)
+ [移除或更新 Aurora DSQL 集群的密钥](#updating-encryption-key)
+ [使用 Aurora DSQL 进行加密的注意事项](#considerations-with-encryption)

## Aurora DSQL 的 KMS 密钥类型
<a name="kms-key-types"></a>

Aurora DSQL 与 AWS KMS 集成，以管理集群的加密密钥。要了解有关密钥类型和状态的更多信息，请参阅《AWS Key Management Service Developer Guide》**中的 [AWS Key Management Service concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts-intro.html)。创建新集群时，可以从以下 KMS 密钥类型中进行选择来对集群进行加密：

**AWS 拥有的密钥**  
默认加密类型。Aurora DSQL 拥有密钥，不向您收取额外费用。当您访问加密集群时，Amazon Aurora DSQL 会透明地解密集群数据。您无需更改代码或应用程序即可使用或管理加密集群，并且所有 Aurora DSQL 查询都将处理加密的数据。

**客户自主管理型密钥**  
您可以在 AWS 账户中创建、拥有和管理密钥。您对 KMS 密钥拥有完全控制权。将收取 AWS KMS 费用。

使用 AWS 拥有的密钥进行静态加密不另行收费。但是，使用客户自主管理型密钥需支付 AWS KMS 费用。有关更多信息，请参阅 [AWS KMS 定价](https://aws.amazon.com/kms/pricing/)页面。

您可以随时在这些密钥类型之间切换。有关密钥类型的更多信息，请参阅《AWS Key Management Service Developer Guide》**中的 [Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) 和 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

**注意**  
Aurora DSQL 静态加密可在所有提供 Aurora DSQL 的 AWS 区域中使用。

## Aurora DSQL 中的静态加密
<a name="encryption-at-rest"></a>

Amazon Aurora 使用 256 位高级加密标准（AES-256）对静态数据进行加密。这种加密功能有助于保护您的数据，来防止对底层存储进行未经授权的访问。AWS KMS 管理集群的加密密钥。您可以使用默认 [AWS 拥有的密钥](#aws-owned-keys)，也可以选择使用您自己的 AWS KMS [客户管理密钥](#customer-managed-keys)。要了解有关为 Aurora DSQL 集群指定和管理密钥的更多信息，请参阅[创建加密的 Aurora DSQL 集群](#creating-encrypted-cluster)和[移除或更新 Aurora DSQL 集群的密钥](#updating-encryption-key)。

**Topics**
+ [AWS 拥有的密钥](#aws-owned-keys)
+ [客户管理密钥](#customer-managed-keys)

### AWS 拥有的密钥
<a name="aws-owned-keys"></a>

默认情况下，Aurora DSQL 使用 AWS 拥有的密钥对所有集群进行加密。这些密钥可免费使用，并且每年轮换，以保护您的账户资源。您无需查看、管理、使用或审计这些密钥，因此无需采取任何措施来保护数据。有关 AWS 拥有的密钥 的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

### 客户管理密钥
<a name="customer-managed-keys"></a>

您可以在 AWS 账户中创建、拥有和管理客户自主管理型密钥。您完全控制这些 KMS 密钥，包括其策略、加密材料、标签和别名。有关管理权限的更多信息，请参阅《AWS Key Management Service Developer Guide》**中的 [Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

当您指定客户自主管理型密钥来进行集群级加密时，Aurora DSQL 使用该密钥对集群及其所有区域数据进行加密。为了防止数据丢失和维护集群访问权限，Aurora DSQL 需要访问您的加密密钥。如果您禁用客户自主管理型密钥、计划删除密钥或具有限制服务访问权限的策略，则集群的加密状态将更改为 `KMS_KEY_INACCESSIBLE`。当 Aurora DSQL 无法访问密钥时，用户无法连接到集群，集群的加密状态更改为 `KMS_KEY_INACCESSIBLE`，而服务将无法访问集群数据。

对于多区域集群，客户可以单独配置每个区域的 AWS KMS 加密密钥，而每个区域集群均使用自己的集群级加密密钥。如果 Aurora DSQL 无法访问多区域集群中某个对等集群的加密密钥，则该对等集群的状态将变为 `KMS_KEY_INACCESSIBLE`，而不可用于读取和写入操作。其它对等集群继续正常运行。

**注意**  
如果 Aurora DSQL 无法访问客户自主管理型密钥，则集群加密状态将变为 `KMS_KEY_INACCESSIBLE`。还原密钥访问权限后，服务将在 15 分钟内自动检测到还原情况。有关更多信息，请参阅“集群闲置”。  
对于多区域集群，如果长时间丢失密钥访问权限，则集群还原时间取决于当密钥无法访问时写入了多少数据。

## 将 AWS KMS 和数据密钥与 Aurora DSQL 结合使用
<a name="using-kms-and-data-keys"></a>

Aurora DSQL 静态加密功能使用 AWS KMS key和数据密钥的层次结构来保护集群数据。

建议您在 Aurora DSQL 中实施集群之前先制定加密策略计划。如果您要在 Aurora DSQL 中存储敏感或机密数据，请考虑在计划中包括客户端加密。这样，您就可以尽量靠近数据源来加密数据，确保其在整个生命周期中受到保护。

**Topics**
+ [将 AWS KMS key与 Aurora DSQL 结合使用](#aws-kms-key)
+ [将集群密钥与 Aurora DSQL 结合使用](#cluster-keys)
+ [集群密钥缓存](#cluster-key-caching)

### 将 AWS KMS key与 Aurora DSQL 结合使用
<a name="aws-kms-key"></a>

静态加密使用 AWS KMS key保护 Aurora DSQL 集群。默认情况下，Aurora DSQL 使用 AWS 拥有的密钥，即在 Aurora DSQL 服务账户中创建并管理的多租户加密密钥。但是，您可以使用 AWS 账户中的客户自主管理型密钥对 Aurora DSQL 集群进行加密。您可以为每个集群选择不同的 KMS 密钥，即使集群参与多区域设置。

您可以在创建或更新集群时为集群选择 KMS 密钥。您可以通过以下方式随时更改集群的 KMS 密钥：在 Aurora DSQL 控制台中或使用 `UpdateCluster` 操作。切换密钥的过程不需要停机或降低服务质量。

**重要**  
Aurora DSQL 仅支持对称 KMS 密钥。不能使用非对称 KMS 密钥来加密 Aurora DSQL 集群。

客户自主管理型密钥提供以下优势。
+ 您可以创建和管理 KMS 密钥，包括设置密钥策略和 IAM 策略来控制对 KMS 密钥的访问。您可以启用和禁用 KMS 密钥、启用和禁用自动密钥轮换，以及当 KMS 密钥不再使用时删除 KMS 密钥。
+ 您可以使用具有导入的密钥材料的客户托管密钥，或者您拥有和管理的自定义密钥存储中的客户托管密钥。
+ 您可以通过检查 AWS CloudTrail 日志中对 AWS KMS 的 Aurora DSQL API 调用来审计 Aurora DSQL 集群的加密和解密。

但是，AWS 拥有的密钥是免费的，其使用不会计入 AWS KMS 资源或请求配额。客户自主管理型密钥会针对每次 API 调用产生费用，并且对于此类密钥具有 AWS KMS 配额。

### 将集群密钥与 Aurora DSQL 结合使用
<a name="cluster-keys"></a>

Aurora DSQL 对集群使用 AWS KMS key来为集群生成并加密一个唯一的数据密钥，称为**集群密钥**。

该集群密钥用作密钥加密密钥。Aurora DSQL 使用此集群密钥来保护用于加密集群数据的数据加密密钥。Aurora DSQL 为集群中的每个底层结构生成唯一的数据加密密钥，但多个集群项目可能受相同的数据加密密钥保护。

为了解密集群密钥，Aurora DSQL 会在您首次访问加密集群时向 AWS KMS 发送请求。为保持集群可用，Aurora DSQL 会定期验证对 KMS 密钥的解密访问权限，即使您没有积极地访问集群也是如此。

Aurora DSQL 在 AWS KMS 外部存储和使用集群密钥与数据加密密钥。它会借助高级加密标准 (AES) 加密和 256 位加密密钥保护所有密钥。然后，它存储加密密钥及加密数据，以便它们可根据需要用于解密集群数据。

如果您更改集群的 KMS 密钥，Aurora DSQL 会使用新的 KMS 密钥重新加密现有集群密钥。

### 集群密钥缓存
<a name="cluster-key-caching"></a>

为了避免针对每个 Aurora DSQL 操作调用 AWS KMS，Aurora DSQL 会针对每个调用方将明文集群密钥缓存在内存中。如果 Aurora DSQL 在处于不活动状态 15 分钟后获取对缓存集群密钥的请求，它会向 AWS KMS 发送新请求来解密集群密钥。此调用将捕获在上次请求解密集群密钥之后对 AWS KMS 或 AWS Identity and Access Management（IAM）中 AWS KMS key的访问策略所做的任何更改。

## 授权将 AWS KMS key用于 Aurora DSQL
<a name="authorizing-kms-key-use"></a>

如果您使用您账户中的客户自主管理型密钥来保护 Aurora DSQL 集群，则该密钥的策略必须向 Aurora DSQL 授予代表您使用该密钥的权限。

您可以全面控制有关客户自主管理型密钥的策略。Aurora DSQL 无需额外授权，即可使用默认 AWS 拥有的密钥来保护您 AWS 账户中的 Aurora DSQL 集群。

### 客户托管密钥的密钥策略
<a name="key-policy-customer-managed-key"></a>

当您选择客户自主管理型密钥来保护 Aurora DSQL 集群时，Aurora DSQL 需要相应的权限，以便代表做出选择的主体使用 AWS KMS key。该主体（用户或角色）必须对 Aurora DSQL 所需的 AWS KMS key拥有权限。您可以在密钥策略或 IAM 策略中提供这些权限。

Aurora DSQL 对客户自主管理型密钥至少需要具备以下权限：
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:ReEncrypt*`（适用于 kms:ReEncryptFrom 和 kms:ReEncryptTo）
+ `kms:GenerateDataKey`
+ `kms:DescribeKey`

例如，以下示例密钥策略仅提供所需的权限。该策略具有以下效果：
+ 支持 Aurora DSQL 在加密操作中使用 AWS KMS key，但仅当它代表账户中有权使用 Aurora DSQL 的主体行事时才可如此。如果在策略语句中指定的主体无权使用 Aurora DSQL，调用将失败，即使调用来自 Aurora DSQL 服务也是如此。
+ `kms:ViaService` 条件密钥仅当 Aurora DSQL 代表策略语句中所列主体发出请求时，才支持此类权限。这些主体不能直接调用这些操作。

在使用示例密钥策略之前，请将示例委托人替换为 AWS 账户 中的实际委托人。

```
{
  "Sid": "Enable dsql IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "dsql.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:Encrypt",
    "kms:ReEncryptFrom",
    "kms:ReEncryptTo"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:aws:dsql:ClusterId": "w4abucpbwuxx",
      "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx"
    }
  }
},
{
  "Sid": "Enable dsql IAM User Describe Permissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "dsql.amazonaws.com"
  },
  "Action": "kms:DescribeKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx"
    }
  }
}
```

## Aurora DSQL 加密上下文
<a name="dsql-encryption-context"></a>

加密上下文 是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时，AWS KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据，您必须传入相同的加密上下文。

Aurora DSQL 在所有 AWS KMS 加密操作中使用相同的加密上下文。如果您使用客户自主管理型密钥来保护 Aurora DSQL 集群，则可使用加密上下文在审计记录和日志中确定 AWS KMS key的使用情况。它也以明文形式显示在日志中，例如 AWS CloudTrail 中的那些日志。

加密上下文还可用作在策略中进行授权的条件。

在向 AWS KMS 发出的请求中，Aurora DSQL 使用具有密钥/值对的加密上下文：

```
"encryptionContext": {
  "aws:dsql:ClusterId": "w4abucpbwuxx"
},
```

密钥/值对标识 Aurora DSQL 要加密的集群。键是 `aws:dsql:ClusterId`。值是集群的标识符。

## 监控 Aurora DSQL 与 AWS KMS 的交互
<a name="monitoring-dsql-kms-interaction"></a>

如果您使用客户自主管理型密钥来保护 Aurora DSQL 集群，则可以使用 AWS CloudTrail 日志来跟踪 Aurora DSQL 代表您发送到 AWS KMS 的请求。

展开以下各节，了解 Aurora DSQL 如何使用 AWS KMS 操作 `GenerateDataKey` 和 `Decrypt`。

### `GenerateDataKey`
<a name="GenerateDataKey"></a>

当您对集群启用静态加密时，Aurora DSQL 会创建一个唯一的集群密钥。它向 AWS KMS 发送 `GenerateDataKey` 请求，以便为集群指定 AWS KMS key。

记录 `GenerateDataKey` 操作的事件与以下示例事件类似。该用户是 Aurora DSQL 服务账户。参数包括 AWS KMS key的 Amazon 资源名称（ARN）、需要 256 位密钥的密钥说明符以及标识集群的加密上下文。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "dsql.amazonaws.com"
    },
    "eventTime": "2025-05-16T18:41:24Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "dsql.amazonaws.com",
    "userAgent": "dsql.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dsql:ClusterId": "w4abucpbwuxx"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e"
    },
    "responseElements": null,
    "requestID": "2da2dc32-d3f4-4d6c-8a41-aff27cd9a733",
    "eventID": "426df0a6-ba56-3244-9337-438411f826f4",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "sharedEventID": "f88e0dd8-6057-4ce0-b77d-800448426d4e",
    "vpcEndpointId": "AWS Internal",
    "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3",
    "eventCategory": "Management"
}
```

### Decrypt
<a name="Decrypt"></a>

当您访问加密的 Aurora DSQL 集群时，Aurora DSQL 需要解密集群密钥，以便它可以解密层次结构中位于其下方的密钥。然后，它解密集群中的数据。为了解密集群密钥，Aurora DSQL 向 AWS KMS 发送 `Decrypt` 请求，以便为集群指定 AWS KMS key。

记录 `Decrypt` 操作的事件与以下示例事件类似。用户是您的 AWS 账户中正在访问集群的主体。参数包括加密的集群密钥（作为加密文字 blob）以及标识集群的加密上下文。AWS KMS 从加密文字中得出 AWS KMS key的 ID。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AWSService",
    "invokedBy": "dsql.amazonaws.com"
  },
  "eventTime": "2018-02-14T16:42:39Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "Decrypt",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "dsql.amazonaws.com",
  "userAgent": "dsql.amazonaws.com",
  "requestParameters": {
    "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "encryptionContext": {
      "aws:dsql:ClusterId": "w4abucpbwuxx"
    },
    "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
  },
  "responseElements": null,
  "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
  "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3",
  "readOnly": true,
  "resources": [
    {
      "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "accountId": "AWS Internal",
      "type": "AWS::KMS::Key"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "111122223333",
  "sharedEventID": "d99f2dc5-b576-45b6-aa1d-3a3822edbeeb",
  "vpcEndpointId": "AWS Internal",
  "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3",
  "eventCategory": "Management"
}
```

## 创建加密的 Aurora DSQL 集群
<a name="creating-encrypted-cluster"></a>

所有 Aurora DSQL 集群都已静态加密。默认情况下，集群免费使用 AWS 拥有的密钥，您也可以指定自定义 AWS KMS 密钥。按照以下步骤从 AWS 管理控制台或 AWS CLI 创建加密集群。

------
#### [ Console ]

**在 AWS 管理控制台中创建加密集群**

1. 登录 AWS 管理控制台并打开 Aurora DSQL 控制台，网址为 [https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql/)。

1. 在控制台左侧的导航窗格中，选择**集群**。

1. 选择右上角的**创建集群**，然后选择**单区域**。

1. 在**集群加密设置**中，选择以下选项之一。
   + 接受默认设置，无需支付额外费用即可使用 AWS 拥有的密钥进行加密。
   + 选择**自定义加密设置（高级）**以指定自定义 KMS 密钥。然后，搜索或输入 KMS 密钥的 ID 或别名。或者，选择**创建 AWS KMS 密钥**以便在 AWS KMS 控制台中创建新密钥。

1. 选择**创建集群**。

要确认集群的加密类型，请导航到**集群**页面，并选择集群的 ID 以查看集群详细信息。查看**集群设置**选项卡，**集群 KMS 密钥**设置会对使用 AWS 拥有的密钥的集群显示 **Aurora DSQL 默认密钥**，或对于其它加密类型显示密钥 ID。

**注意**  
如果您选择拥有和管理您自己的密钥，请确保适当地设置 KMS 密钥策略。有关示例和更多信息，请参阅 [客户托管密钥的密钥策略](#key-policy-customer-managed-key)。

------
#### [ CLI ]

**创建使用默认 AWS 拥有的密钥加密的集群**
+ 使用以下命令创建 Aurora DSQL 集群。

  ```
  aws dsql create-cluster
  ```

如以下加密详细信息所示，默认情况下，集群的加密状态为启用，默认加密类型为 AWS 拥有的密钥。现在，该集群已使用 Aurora DSQL 服务账户中的默认 AWS 拥有的密钥进行加密。

```
"encryptionDetails": {
  "encryptionType" : "AWS_OWNED_KMS_KEY",
  "encryptionStatus" : "ENABLED"
}
```

**创建使用客户自主管理型密钥加密的集群**
+ 使用以下命令创建 Aurora DSQL 集群，同时将红色文本的密钥 ID 替换为客户自主管理型密钥的 ID。

  ```
  aws dsql create-cluster \
  --kms-encryption-key d41d8cd98f00b204e9800998ecf8427e
  ```

如以下加密详细信息所示，默认情况下，集群的加密状态为启用，加密类型为客户自主管理型 KMS 密钥。集群现在已使用您的密钥进行加密。

```
"encryptionDetails": {
  "encryptionType" : "CUSTOMER_MANAGED_KMS_KEY",
  "kmsKeyArn" : "arn:aws:kms:us-east-1:111122223333:key/d41d8cd98f00b204e9800998ecf8427e",
  "encryptionStatus" : "ENABLED"
}
```

------

## 移除或更新 Aurora DSQL 集群的密钥
<a name="updating-encryption-key"></a>

可以使用 AWS 管理控制台或 AWS CLI 在 Amazon Aurora DSQL 中更新或移除现有集群上的加密密钥。如果您移除密钥而不替换它，Aurora DSQL 将使用默认的 AWS 拥有的密钥。按照以下步骤从 Aurora DSQL 控制台或 AWS CLI 更新现有集群的加密密钥。

------
#### [ Console ]

**在 AWS 管理控制台中更新或移除加密密钥**

1. 登录 AWS 管理控制台并打开 Aurora DSQL 控制台，网址为 [https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql/)。

1. 在控制台左侧的导航窗格中，选择**集群**。

1. 从列表视图中，查找并选择要更新的集群所对应的行。

1. 选择**操作**菜单，然后选择**修改**。

1. 在**集群加密设置**中，选择以下选项之一来修改您的加密设置。
   + 如果要从自定义密钥切换到 AWS 拥有的密钥，请取消选择**自定义加密设置（高级）**选项。将应用默认设置，并使用 AWS 拥有的密钥免费加密您的集群。
   + 如果要从一个自定义 KMS 密钥切换到另一个自定义 KMS 密钥，或要从 AWS 拥有的密钥切换到 KMS 密钥，请选择**自定义加密设置（高级）**选项（如果尚未选择）。然后，搜索并选择您要使用的密钥的 ID 或别名。或者，选择**创建 AWS KMS 密钥**以便在 AWS KMS 控制台中创建新密钥。

1. 选择**保存**。

------
#### [ CLI ]

以下示例显示了如何使用 AWS CLI 来更新加密的集群。

使用默认 AWS 拥有的密钥更新加密的集群

```
aws dsql update-cluster \
--identifier aiabtx6icfp6d53snkhseduiqq \
--kms-encryption-key "AWS_OWNED_KMS_KEY"
```

集群描述的 `EncryptionStatus` 设置为 `ENABLED`，而 `EncryptionType` 为 `AWS_OWNED_KMS_KEY`。

```
"encryptionDetails": {
  "encryptionType" : "AWS_OWNED_KMS_KEY",
  "encryptionStatus" : "ENABLED"
}
```

现在，此集群已使用 Aurora DSQL 服务账户中默认的 AWS 拥有的密钥进行加密。

在 Aurora DSQL 中使用客户自主管理型密钥更新加密的集群

更新加密的集群，如下例所示：

```
aws dsql update-cluster \
--identifier aiabtx6icfp6d53snkhseduiqq \
--kms-encryption-key arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234
```

集群描述的 `EncryptionStatus` 转换为 `UPDATING`，而 `EncryptionType` 为 `CUSTOMER_MANAGED_KMS_KEY`。Aurora DSQL 完成通过平台传播新密钥后，加密状态将转换为 `ENABLED`

```
"encryptionDetails": {
  "encryptionType" : "CUSTOMER_MANAGED_KMS_KEY",
  "kmsKeyArn" : "arn:aws:us-east-1:kms:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  "encryptionStatus" : "ENABLED"
}
```

------

**注意**  
如果您选择拥有和管理您自己的密钥，请确保适当地设置 KMS 密钥策略。有关示例和更多信息，请参阅 [客户托管密钥的密钥策略](#key-policy-customer-managed-key)。

## 使用 Aurora DSQL 进行加密的注意事项
<a name="considerations-with-encryption"></a>
+ Aurora DSQL 对所有集群静态数据进行加密。您不能禁用此加密，也不能仅加密集群中的某些项目。
+ AWS Backup 对您的备份以及从这些备份中还原的任何集群进行加密。您可以在 AWS Backup 中使用 AWS 拥有的密钥或客户自主管理型密钥加密备份数据。
+ Aurora DSQL 已启用以下数据保护状态：
  + **静态数据**：Aurora DSQL 对持久存储介质上的所有静态数据进行加密
  + **传输中数据**：Aurora DSQL 默认情况下使用传输层安全性协议（TLS）对所有通信进行加密
+ 当您转换为其它密钥时，我们建议您保持原始密钥处于启用状态，直到转换过程完成。AWS 在使用新密钥加密数据之前，需要使用原始密钥来解密数据。当集群的 `encryptionStatus` 为 `ENABLED` 并且您看到新的客户自主管理型密钥的 `kmsKeyArn` 时，该过程就完成了。
+ 当您禁用客户自主管理型密钥或撤销 Aurora DSQL 使用您的密钥的访问权限时，集群将进入 `IDLE` 状态。
+ AWS 管理控制台和 Amazon Aurora DSQL API 对加密类型使用不同的术语：
  + AWS 管理控制台：在控制台中，当使用客户自主管理型密钥时，您将看到 `KMS`；当使用 AWS 拥有的密钥时，您将看到 `DEFAULT`。
  + API：Amazon Aurora DSQL API 使用 `CUSTOMER_MANAGED_KMS_KEY` 来表示客户自主管理型密钥，而使用 `AWS_OWNED_KMS_KEY` 来表示 AWS 拥有的密钥。
+ 如果您在创建集群期间未指定加密密钥，Aurora DSQL 会自动使用 AWS 拥有的密钥加密数据。
+ 您可以随时在 AWS 拥有的密钥和客户自主管理型密钥之间切换。使用 AWS 管理控制台、AWS CLI 或 Amazon Aurora DSQL API 进行此更改。