

# SQL Server 中的透明数据加密支持
<a name="Appendix.SQLServer.Options.TDE"></a>

Amazon RDS 支持使用透明数据加密 (TDE) 来加密运行 Microsoft SQL Server 的数据库实例中存储的数据。TDE 会在数据写入存储前自动加密这些数据，并在从存储中读取时自动解密这些数据。

Amazon RDS 支持在以下 SQL Server 版本中使用 TDE：
+ SQL Server 2022 标准版和企业版
+ SQL Server 2019 标准版和企业版
+ SQL Server 2017 企业版
+ SQL Server 2016 企业版

**注意**  
RDS for SQL Server 不支持只读数据库的 TDE。

适用于 SQL Server 的透明数据加密使用双层密钥体系结构提供加密密钥管理。系统会从数据库主密钥中生成证书，用于保护数据加密密钥。数据库加密密钥对用户数据库上的数据执行实际的加密与解密操作。Amazon RDS 备份和管理数据库主密钥和 TDE 证书。

透明数据加密在您需要加密敏感数据的场景中使用。例如，您可能想要将数据文件和备份提供给第三方，或者想要解决有关安全的合规性问题。您不能加密 SQL Server 的系统数据库，例如 `model` 数据库或 `master` 数据库。

详细讨论透明数据加密超出了本指南的范围，但确保您了解每个加密算法和密钥的安全优缺点。有关适用于 SQL Server 的透明数据加密的信息，请参阅 Microsoft 文档中的[透明数据加密 (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx)。

**Topics**
+ [为 RDS for SQL Server 开启 TDE](#TDE.Enabling)
+ [在 RDS for SQL Server 上加密数据](TDE.Encrypting.md)
+ [在 RDS for SQL Server 上备份和还原 TDE 证书](TDE.BackupRestoreRDS.md)
+ [备份和还原本地数据库的 TDE 证书](TDE.BackupRestoreOnPrem.md)
+ [为 RDS for SQL Server 关闭 TDE](TDE.Disabling.md)

## 为 RDS for SQL Server 开启 TDE
<a name="TDE.Enabling"></a>

要为 RDS for SQL Server 数据库实例开启透明数据加密，请在与该数据库实例关联的 RDS 选项组中指定 TDE 选项。

1. 确定您的数据库实例是否已与具有 TDE 选项的选项组关联。要查看与数据库实例关联的选项组，请使用 RDS 控制台、Amazon CLI 命令 [describe-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-instances.html) 或 API 操作 [DescribeDBInstances](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)。

1.  如果数据库实例未与已开启 TDE 的选项组关联，则您有两个选择。您可以创建选项组并添加 TDE 选项，或您可以修改关联选项组以添加它。
**注意**  
在 RDS 控制台中，该选项名为 `TRANSPARENT_DATA_ENCRYPTION`。在 Amazon CLI 和 RDS API 中，它名为 `TDE`。

   有关创建或者修改选项组的信息，请参阅 [使用选项组](USER_WorkingWithOptionGroups.md)。有关向选项组添加选项的信息，请参阅 [将选项添加到选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1.  将数据库实例与具有 TDE 选项的选项组相关联。有关将数据库实例与选项组关联的信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

### 选项组注意事项
<a name="TDE.Options"></a>

TDE 选项是一种持久性选项。除非所有数据库实例和备份都不再与选项组关联，否则无法将此选项从选项组中删除。将 TDE 选项添加到选项组之后，该选项组只能与使用 TDE 的数据库实例关联。有关选项组中持久性选项的详细信息，请参阅[选项组概述](USER_WorkingWithOptionGroups.md#Overview.OptionGroups)。

由于 TDE 选项是一个持久性选项，因此在选项组与关联的数据库实例之间可能发生冲突。在以下情况下，可能会发生冲突：
+ 当前选项组具有 TDE 选项，而您将它替换为没有 TDE 选项的选项组。
+ 从数据库快照还原到新的数据库实例，但该实例不具有包含 TDE 选项的选项组。有关此方案的更多信息，请参阅[选项组的注意事项](USER_CopySnapshot.md#USER_CopySnapshot.Options)。

### SQL Server 性能注意事项
<a name="TDE.Perf"></a>

使用透明数据加密可能会影响 SQL Server 数据库实例的性能。

如果数据库实例上的数据库拥有至少一个加密的数据库，那么，也可能会降低未加密数据库的性能。因此，我们建议您将加密数据库和未加密数据库保存在不同的数据库实例上。