Amazon RDS 的加密最佳实践 - AWS 规范性指导

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

Amazon RDS 的加密最佳实践

Amazon Relational Database Service(Amazon RDS)可帮助您在 AWS 云中设置、操作和扩展关系数据库(DB)。静态加密的数据包括数据库实例的底层存储、自动备份、只读副本和快照。

以下是用于加密 RDS 数据库实例中静态数据的方法:

  • 您可以使用托管密钥或客户 AWS 托管密钥加密 Amazon RDS 数据库实例。 AWS KMS keys有关更多信息,请参阅本指南中的AWS Key Management Service

  • Amazon RDS for Oracle 和 Amazon RDS for SQL Server 支持使用透明数据加密(TDE)加密数据库实例。有关更多信息,请参阅 Oracle Transparent Data EncryptionTransparent Data Encryption in SQL Server 支持。

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

以下是用于加密传入或传出 RDS 数据库实例的传输中数据的方法:

  • 对于运行 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 的 Amazon RDS 数据库实例,您可以使用 SSL 对连接进行加密。有关更多信息,请参阅 SSL/TLS 使用加密与数据库实例的连接

  • Amazon RDS for Oracle 还支持 Oracle 本机网络加密(NNE),在数据传入和传出数据库实例时对数据进行加密。不能同时使用 NNE 和 SSL 加密。有关更多信息,请参阅 Oracle 本机网络加密

考虑下面针对该服务的加密最佳实践:

  • 连接到 Amazon RDS for SQL Server 或 Amazon RDS for PostgreSQL 数据库实例以处理、存储或传输需要加密的数据时,请使用 RDS 传输加密功能对连接进行加密。您可以在参数组中将 rds.force_ssl 参数设置为 1 来实现这一点。有关更多信息,请参阅 Working with parameter groups。Amazon RDS for Oracle 使用 Oracle 数据库本机网络加密。

  • 用于 RDS 数据库实例加密的客户管理密钥只能用于此目的,不得与任何其他 AWS 服务一起使用。

  • 在加密 RDS 数据库实例之前,请确定 KMS 密钥要求。实例使用的密钥无法在以后进行更改。例如,在您的加密策略中,根据您的业务需求定义 AWS 托管密钥或客户托管密钥的使用和管理标准。

  • 在授权访问客户托管的 KMS 密钥时,请在 IAM 策略中使用条件密钥来遵循最低权限原则。例如,要允许客户托管密钥仅用于源自 Amazon RDS 的请求,请使用带有rds.<region>.amazonaws.com值的 k m ViaService s: 条件密钥。此外,您可以使用 Amazon RDS 加密环境中的密钥或值作为使用客户托管密钥的条件。

  • 强烈建议您为加密的 RDS 数据库实例启用备份。Amazon RDS 可能会失去对数据库实例的 KMS 密钥的访问权限,例如当未启用 KMS 密钥或撤销 RDS 对 KMS 密钥的访问权限时。如果发生这种情况,加密的数据库实例将进入可恢复状态,并持续 7 天。如果数据库实例在 7 天后仍未重新获得对密钥的访问权限,数据库将永久无法访问,必须从备份中还原。有关更多信息,请参阅 Encrypting a DB instance

  • 如果只读副本与其加密的数据库实例相同 AWS 区域,则必须使用相同的 KMS 密钥对两者进行加密。

  • 在中 AWS Config,实施rds-storage-encrypted AWS 托管规则以验证和强制执行 RDS 数据库实例的加密,以及对 RDS 数据库快照进行验证和强制加密的rds-snapshots-encrypted规则。

  • AWS Security Hub 用于评估您的 Amazon RDS 资源是否遵循安全最佳实践。有关更多信息,请参阅 Amazon RDS 的 Security Hub 控件