

# 加密 Amazon Aurora 资源
<a name="Overview.Encryption"></a>

无论是在本地客户端和 Amazon Aurora 之间，还是在 Amazon Aurora 和其他 AWS 资源之间移动，Amazon Aurora 都能保护您的静态数据和传输中数据。Amazon Aurora 会加密您的 Amazon Aurora 数据库集群中的所有用户数据，包括日志、自动备份和快照。

在加密数据后，Amazon Aurora 将以透明方式处理访问的身份验证和数据的解密，并且对性能产生的影响最小。您无需修改数据库客户端应用程序来使用加密。

**注意**  
对于加密和未加密数据库集群，将对在源与只读副本之间发送的数据进行加密，即使在 AWS 区域之间复制时也是如此。

**Topics**
+ [

## Amazon Aurora 资源加密概览
](#Overview.Encryption.Overview)
+ [

## 加密 Amazon Aurora 数据库集群
](#Overview.Encryption.Enabling)
+ [

## 确定是否为数据库集群开启加密
](#Overview.Encryption.Determining)
+ [

## Amazon Aurora 加密的可用性
](#Overview.Encryption.Availability)
+ [

## 传输中加密
](#Overview.Encryption.InTransit)
+ [

## Amazon Aurora 加密的数据库集群的限制
](#Overview.Encryption.Limitations)

## Amazon Aurora 资源加密概览
<a name="Overview.Encryption.Overview"></a>

Amazon Aurora 加密的数据库集群通过保护您的数据免受未经授权的访问来为基础存储提供额外一层数据保护。对于 2026 年 2 月 18 日当天或之后在 Amazon Aurora 中创建的所有新数据库集群，均使用行业标准 AES-256 加密进行静态加密。这种加密在后台自动进行，在不需要您采取任何操作的情况下保护您的数据。这样可以帮助减少在保护敏感数据时涉及的运营负担和复杂性。通过静态加密功能，您可以保护高度注重合规性且安全性至关重要的应用程序，防御意外和恶意威胁，同时满足监管要求。

Amazon Aurora 使用 AWS Key Management Service 密钥加密这些资源。AWS KMS 将安全、高度可用的硬件和软件结合起来，提供面向云端扩展的密钥管理系统。在创建新的数据库集群时，Amazon Aurora 默认情况下使用服务器端加密（SSE）和 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key)。不过，您可以根据自己的安全性和合规性需求，从三种加密类型中进行选择：
+ **AWS 拥有的密钥（SSE-RDS）**：完全由 AWS 控制的加密密钥，您无法查看或管理，Aurora 自动将其用于默认加密。
+ **AWS 托管式密钥（AMK）**：此密钥由 AWS 创建和管理，并且在您的账户中可见，但不可自定义。此密钥没有月度费用，但会收取 AWS KMS API 费用。
+ **客户自主管理型密钥（CMK）**：此密钥存储在您的账户中，由您创建、拥有和管理。您对 KMS 密钥拥有全部控制权（收取 AWS KMS 费用）。

AWS 托管式密钥是传统加密选项，仍然可用于向后兼容。默认情况下，Amazon Aurora 使用 AWS 拥有的密钥来加密您的数据，从而提供强大的安全保护，您无需支付额外费用或管理开销。对于大多数使用案例，我们建议使用默认 AWS 拥有的密钥来获得简化性和成本效益；如果您需要完全控制加密密钥，则建议使用客户自主管理型密钥（CMK）。有关密钥类型的更多信息，请参阅[客户自主管理型密钥和 AWS 托管式密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)。

**注意**  
**重要提示：**对于在 2026 年 2 月 18 日之前创建的源数据库实例或集群，如果您未选择进行加密，则从这些来源创建的快照、克隆和 Amazon Aurora 副本（只读实例）将保持未加密状态。但是，在 Amazon Aurora 集群之外执行的恢复操作和逻辑复制将会生成加密的实例。

 对于 Amazon Aurora 加密的数据库集群，所有数据库实例日志、备份和快照均会被加密。有关加密功能的可用性和限制的更多信息，请参阅 [Amazon Aurora 加密的可用性](#Overview.Encryption.Availability)和 [Amazon Aurora 加密的数据库集群的限制](#Overview.Encryption.Limitations)。

创建加密数据库集群时，您可以为 Amazon Aurora 选择客户自主管理型密钥或 AWS 托管式密钥来加密数据库集群。如果您没有为客户自主管理型密钥指定密钥标识符，则 Amazon Aurora 会对您的新数据库集群使用 AWS 托管式密钥。Amazon Aurora 将为您的 AWS 账户创建 Amazon Aurora 的 AWS 托管式密钥。您的 AWS 账户在每个 AWS 区域都有用于 Amazon Aurora 的不同 AWS 托管式密钥。

要管理用于加密和解密 Amazon Aurora 资源的客户自主管理型密钥，您可以使用 [AWS Key Management Service（AWS KMS）](https://docs.aws.amazon.com/kms/latest/developerguide/)。

利用 AWS KMS，您可创建客户自主管理型密钥，并定义策略来控制这些客户自主管理型密钥的使用方式。AWS KMS 支持 CloudTrail，因此，您可审核 KMS 密钥使用情况以验证客户自主管理型密钥是否使用得当。可以将客户托管密钥与 Amazon Aurora 和支持的 AWS 服务（例如 Amazon S3、Amazon EBS 和 Amazon Redshift）结合使用。有关与 AWS KMS 集成的服务的列表，请参阅 [AWS 服务集成](https://aws.amazon.com/kms/features/#AWS_Service_Integration)。关于使用 KMS 密钥的一些注意事项：
+ 创建加密的数据库实例后，您无法更改该实例使用的 KMS 密钥。请确保先确定您的 KMS 密钥要求，然后再创建加密的数据库实例。如果您需要更改数据库集群的加密密钥，请按照以下步骤执行操作：
  + 创建集群的手动快照。
  + 还原快照，在还原操作期间使用所需的 KMS 密钥启用加密。
+ 如果您还原未加密的快照并选择不加密，则创建的数据库集群将使用默认的静态加密（AWS 拥有的密钥）进行加密。
+ 如果快照已使用共享该快照的 AWS 托管式密钥 账户的 AWS 进行加密，则您无法共享该快照。
+ 数据库集群中的每个数据库实例共享使用相同 KMS 密钥加密的存储。

**重要**  
禁用 KMS 密钥后，Amazon Aurora 可能会失去对数据库集群的 KMS 密钥的访问权限。在这些情况下，加密的数据库集群会进入 `inaccessible-encryption-credentials-recoverable` 状态。数据库集群将保持此状态七天，在此期间实例停止运行。在此期间对该数据库集群进行的 API 调用可能不会成功。要恢复数据库集群，请启用 KMS 密钥并重新启动该数据库集群。您可以从 AWS 管理控制台、AWS CLI 或 RDS API 启用 KMS 密钥。使用 AWS CLI 命令 [start-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-cluster.html) 或 AWS 管理控制台重新启动数据库集群。  
`inaccessible-encryption-credentials-recoverable` 状态仅适用于可以停止的数据库集群。这种可恢复状态不适用于无法停止的实例，例如具有跨区域只读副本的集群。有关更多信息，请参阅 [停止和启动 Aurora 数据库集群的限制](aurora-cluster-stop-start.md#aurora-cluster-stop-limitations)。  
如果数据库集群未在七天内恢复，则该集群会进入终端 `inaccessible-encryption-credentials` 状态。在此状态下，数据库集群将无法再使用，您只能从备份还原数据库集群。我们强烈建议您始终启用备份，以防数据库中的数据丢失。  
在数据库集群创建期间，Aurora 会检查发出调用的主体是否有权访问 KMS 密钥，并从 KMS 密钥中生成授权，该授权将在数据库集群的整个生命周期内使用。撤消发出调用的主体对 KMS 密钥的访问权限，不会影响正在运行的数据库。在跨账户场景中使用 KMS 密钥时，例如将快照复制到其他账户，需要与其他账户共享 KMS 密钥。如果您从快照创建数据库集群但未指定不同的 KMS 密钥，则新集群将使用源账户中的 KMS 密钥。创建数据库集群后，撤消密钥访问权限不会影响集群。但是，禁用某个密钥会影响使用该密钥加密的所有数据库集群。为防止出现这种情况，请在快照复制操作期间指定不同的密钥。

有关 KMS 密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) 和[AWS KMS key 管理](Overview.Encryption.Keys.md)。

## 加密 Amazon Aurora 数据库集群
<a name="Overview.Encryption.Enabling"></a>

对于 2026 年 2 月 18 日当天或之后创建的所有新数据库集群，默认使用 AWS 拥有的密钥进行加密。

要使用 AWS 托管式密钥或客户自主管理型密钥加密新的数据库集群，请在控制台上选择相应选项。有关创建数据库集群的信息，请参阅[创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md)。

如果使用 [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) AWS CLI 命令创建加密的数据库集群，请设置 `--storage-encrypted` 参数。如果使用 [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) API 操作，请将 `StorageEncrypted` 参数设置为 true。

创建加密的数据库集群后，您无法更改该数据库集群使用的 KMS 密钥。因此，请确保先确定您的 KMS 密钥要求，然后再创建加密的数据库集群。

如果使用 AWS CLI `create-db-cluster` 命令创建带有客户托管密钥的加密数据库集群，请将 `--kms-key-id` 参数设置为 KMS 密钥的任何密钥标识符。如果您使用 Amazon RDS API `CreateDBInstance` 操作，请将 `KmsKeyId` 参数设置为 KMS 密钥的任何密钥标识符。要在其他 AWS 账户中使用客户托管密钥，请指定密钥 ARN 或别名 ARN。

## 确定是否为数据库集群开启加密
<a name="Overview.Encryption.Determining"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 确定是否为数据库集群开启静态加密。

### 控制台
<a name="Overview.Encryption.Determining.CON"></a>

**要确定是否为数据库集群开启静态加密**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要检查的数据库集群的名称以显示其详细信息。

1. 选择 **Configuration**（配置）选项卡，然后检查 **Encryption**（加密）值。  
![\[检查数据库集群的静态加密\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/encryption-aurora-instance.png)

### AWS CLI
<a name="Overview.Encryption.Determining.CLI"></a>

要使用 AWS CLI 确定是否已为数据库集群启用静态加密，请使用以下选项调用 [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 命令：
+ `--db-cluster-identifier` – 数据库集群的名称。

下面的示例使用查询就 `mydb` 数据库集群的静态加密返回 `TRUE` 或 `FALSE`。

**Example**  

```
1. aws rds describe-db-clusters --db-cluster-identifier mydb --query "*[].{StorageEncrypted:StorageEncrypted}" --output text
```

### RDS API
<a name="Overview.Encryption.Determining.API"></a>

要使用 Amazon RDS API 确定是否已为数据库集群启用静态加密，请使用以下参数调用 [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) 操作：
+ `DBClusterIdentifier` – 数据库集群的名称。

## Amazon Aurora 加密的可用性
<a name="Overview.Encryption.Availability"></a>

Amazon Aurora 加密当前可用于所有数据库引擎和存储类型。

**注意**  
Amazon Aurora 加密不适用于 db.t2.micro 数据库实例类。

## 传输中加密
<a name="Overview.Encryption.InTransit"></a>

**物理层加密**  
所有在 AWS 全球网络上跨 AWS 区域流动的数据在离开受 AWS 保护的设施之前，都会在物理层自动加密。可用区之间的所有流量均已加密。其它加密层（包括本节中列出的加密层）可能会提供额外保护。

**Amazon VPC 对等连接和 Transit Gateway 跨区域对等连接提供的加密**  
使用 Amazon VPC 和 Transit Gateway 对等连接的所有跨区域流量在退出区域时都会自动批量加密。所有流量在离开受 AWS 保护的设施之前，均会在物理层自动提供额外一层加密。

**实例之间的加密**  
AWS 在所有类型的数据库实例之间提供安全的私有连接。此外，某些实例类型使用底层 Nitro 系统硬件的卸载功能，自动加密实例之间的传输中流量。此加密使用关联数据的身份验证加密（AEAD）算法，采用 256 位加密。这对网络性能没有影响。要在实例之间支持这种额外的传输中流量加密，必须满足以下要求：  
+ 使用以下实例类型：
  + **通用型：**M6i、M6id、M6in、M6idn、M7g
  + **内存优化型：**R6i、R6id、R6in、R6idn、R7g、X2idn、X2iedn、X2iezn
+ 这些实例位于同一 AWS 区域。
+ 这些实例位于相同 VPC 或对等的 VPC 中，并且流量不会通过虚拟网络设备或服务（如负载均衡器或中转网关）传输。

## Amazon Aurora 加密的数据库集群的限制
<a name="Overview.Encryption.Limitations"></a>

Amazon Aurora 加密的数据库集群存在以下限制：
+ 您无法在加密的数据库集群上关闭加密。
+ 如果您有一个现有的未加密集群，则从该集群创建的所有快照也将是未加密的。要从未加密的集群创建加密快照，您必须复制该快照并在复制操作期间指定客户自主管理型密钥。要从未加密快照创建加密快照，您必须指定客户自主管理型密钥。
+ 您无法创建未加密数据库的加密快照。
+ 加密数据库集群的快照必须使用与数据库集群相同的 KMS 密钥进行加密。
+ 您无法将未加密的数据库集群转换为加密的数据库集群。但是，您可以将未加密的快照还原为加密的 Aurora 数据库集群。为此，请在从未加密的快照还原时指定 KMS 密钥。
+ 如果您有一个现有的未加密集群，从该集群创建的任何 Amazon Aurora 副本（只读实例）也将是未加密的。要从未加密的集群创建加密集群，您需要还原数据库集群。默认情况下，还原后的集群将在执行还原操作后进行加密。
+ 要将已加密快照从一个 AWS 区域复制到另一个区域，您必须指定目标 AWS 区域的 KMS 密钥。这是因为 KMS 密钥特定于在其中创建它们的 AWS 区域。

  源快照在复制过程中保持加密状态。Amazon Aurora 使用信封加密在复制过程中保护数据。有关信封加密的更多信息，请参阅*AWS Key Management Service开发人员指南*中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。
+ 您无法对加密数据库集群取消加密。但是，您可以从加密的数据库集群中导出数据，然后将数据导入未加密的数据库集群。