

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon RDS 的加密最佳实践
<a name="rds"></a>

[Amazon Relational Database Service（Amazon RDS）](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)可帮助您在 AWS Cloud中设置、操作和扩展关系数据库（DB）。静态加密的数据包括数据库实例的底层存储、自动备份、只读副本和快照。

以下是用于加密 RDS 数据库实例中静态数据的方法：
+ 您可以使用托管密钥或客户 AWS 托管密钥加密 Amazon RDS 数据库实例。 AWS KMS keys有关更多信息，请参阅本指南中的[AWS Key Management Service](kms.md)。
+ Amazon RDS for Oracle 和 Amazon RDS for SQL Server 支持使用透明数据加密（TDE）加密数据库实例。有关更多信息，请参阅 [Oracle Transparent Data Encryption](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.AdvSecurity.html) 或 [Transparent Data Encryption in SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.TDE.html) 支持。

  您可以使用 TDE 和 KMS 密钥来加密数据库实例。但是，这会对数据库的性能造成轻微影响，因此必须单独管理这些密钥。

以下是用于加密传入或传出 RDS 数据库实例的传输中数据的方法：
+ 对于运行 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 的 Amazon RDS 数据库实例，您可以使用 SSL 对连接进行加密。有关更多信息，请参阅[ SSL/TLS 使用加密与数据库实例的连接](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)。
+ Amazon RDS for Oracle 还支持 Oracle 本机网络加密（NNE），在数据传入和传出数据库实例时对数据进行加密。不能同时使用 NNE 和 SSL 加密。有关更多信息，请参阅 [Oracle 本机网络加密](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.NetworkEncryption.html)。

考虑下面针对该服务的加密最佳实践：
+ 连接到 Amazon RDS for SQL Server 或 Amazon RDS for PostgreSQL 数据库实例以处理、存储或传输需要加密的数据时，请使用 RDS 传输加密功能对连接进行加密。您可以在参数组中将 `rds.force_ssl` 参数设置为 `1` 来实现这一点。有关更多信息，请参阅 [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)。Amazon RDS for Oracle 使用 Oracle 数据库本机网络加密。
+ 用于 RDS 数据库实例加密的客户管理密钥只能用于此目的，不得与任何其他 AWS 服务一起使用。
+ 在加密 RDS 数据库实例之前，请确定 KMS 密钥要求。实例使用的密钥无法在以后进行更改。例如，在您的加密策略中，根据您的业务需求定义 AWS 托管密钥或客户托管密钥的使用和管理标准。
+ 在授权访问客户托管的 KMS 密钥时，请在 IAM 策略中使用条件密钥来遵循最低权限原则。例如，要允许客户托管密钥仅用于源自 Amazon RDS 的请求，请使用带有`rds.<region>.amazonaws.com`值的 k [m ViaService s: 条件密钥](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)。此外，您可以使用 [Amazon RDS 加密环境](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.Keys.html#Overview.Encryption.Keys.encryptioncontext)中的密钥或值作为使用客户托管密钥的条件。
+ 强烈建议您为加密的 RDS 数据库实例启用备份。Amazon RDS 可能会失去对数据库实例的 KMS 密钥的访问权限，例如当未启用 KMS 密钥或撤销 RDS 对 KMS 密钥的访问权限时。如果发生这种情况，加密的数据库实例将进入可恢复状态，并持续 7 天。如果数据库实例在 7 天后仍未重新获得对密钥的访问权限，数据库将永久无法访问，必须从备份中还原。有关更多信息，请参阅 [Encrypting a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html#Overview.Encryption.Enabling)。
+ 如果只读副本与其加密的数据库实例相同 AWS 区域，则必须使用相同的 KMS 密钥对两者进行加密。
+ 在中 AWS Config，实施[rds-storage-encrypted](https://docs.aws.amazon.com/config/latest/developerguide/rds-storage-encrypted.html) AWS 托管规则以验证和强制执行 RDS 数据库实例的加密，以及对 RDS 数据库快照进行验证和强制加密的[rds-snapshots-encrypted](https://docs.aws.amazon.com/config/latest/developerguide/rds-snapshot-encrypted.html)规则。
+  AWS Security Hub CSPM 用于评估您的 Amazon RDS 资源是否遵循安全最佳实践。有关更多信息，请参阅 [Amazon RDS 的 Security Hub CSPM 控件](https://docs.aws.amazon.com/securityhub/latest/userguide/rds-controls.html)。