Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

加密 Amazon RDS 资源

您可通过对 Amazon RDS 数据库实例启用加密选项来对静态 Amazon RDS 实例和快照进行加密。加密的静态数据包括数据库实例的基础存储、其自动化备份、只读副本和快照。

Amazon RDS 加密的实例使用行业标准 AES-256 加密算法来对托管 Amazon RDS 实例的服务器上的数据进行加密。在加密数据后,Amazon RDS 将以透明方式处理访问的身份验证和数据的解密,并且对性能产生的影响最小。您无需修改数据库客户端应用程序来使用加密。

Amazon RDS 加密的实例通过保护您的数据免受未经授权的访问来为基础存储提供额外一层数据保护。您可使用 Amazon RDS 加密来增强云中部署的应用程序的数据保护,并满足静态数据加密的合规性要求。

Amazon RDS 还支持利用透明数据加密 (TDE) 对 Oracle 或 SQL Server 数据库实例进行加密。TDE 可以与静态加密一起使用,但同时使用 TDE 和静态加密可能会稍微影响数据库的性能。您必须为每种加密方法管理不同的密钥。有关 TDE 的更多信息,请参阅 Oracle 透明数据加密使用 AWS CloudHSM Classic 存储 Amazon RDS Oracle TDE 密钥Microsoft SQL Server 透明数据加密支持

若要管理用于加密和解密 Amazon RDS 资源的密钥,请使用 AWS Key Management Service (AWS KMS)。AWS KMS 将安全、高度可用的硬件和软件结合起来,提供可扩展到云的密钥管理系统。通过使用 AWS KMS,您可创建加密密钥并定义控制这些密钥的使用方式的策略。AWS KMS 支持 CloudTrail,因此,您可审核密钥使用情况以验证密钥是否使用得当。您的 AWS KMS 密钥可与 Amazon RDS 及支持的 AWS 服务 (如 Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Block Store (Amazon EBS) 和 Amazon Redshift) 结合使用。有关支持 AWS KMS 的服务的列表,请转至 AWS Key Management Service 开发人员指南中的支持的服务

可为 Amazon RDS 加密的数据库实例加密所有日志、备份和快照。Amazon RDS 加密实例的只读副本也可使用与主实例相同的密钥进行加密,前提是两者在相同区域中。如果主实例和只读副本位于不同区域,则使用该区域的加密密钥进行加密。您可以创建一个未加密的数据库实例的加密只读副本,但不能创建一个加密的数据库实例的未加密只读副本。

对于具有跨区域只读副本的加密和未加密 Amazon RDS 数据库实例,将对在源与只读副本之间发送的数据进行加密。

对数据库实例启用 Amazon RDS 加密

要为新数据库实例启用加密,请在 Amazon RDS 控制台上为 Enable encryption 选择 Yes。有关创建数据库实例的信息,请参阅以下主题之一:

如果使用 create-db-instance AWS CLI 命令创建加密的 RDS 数据库实例,请将 --storage-encrypted 参数设为 true。如果使用 CreateDBInstance API 操作,请将 StorageEncrypted 参数设为 true。

在创建加密的数据库实例时,还可为加密密钥提供 AWS KMS 密钥标识符。如果未指定 AWS KMS 密钥标识符,则 Amazon RDS 将使用新数据库实例的默认加密密钥。AWS KMS 为您的 AWS 账户创建 Amazon RDS 的默认加密密钥。您的 AWS 账户在每个 AWS 区域都有一个不同的默认加密密钥。

在创建加密的数据库实例后,将无法更改该实例的加密密钥。因此,请务必在创建加密的数据库实例之前确定加密密钥要求。

如果使用 AWS CLI create-db-instance 命令创建加密的 RDS 数据库实例,请将 --kms-key-id 参数设为该数据库实例的 AWS KMS 加密密钥的 Amazon 资源名称 (ARN)。如果使用 Amazon RDS API CreateDBInstance 操作,请将 KmsKeyId 参数设置为该数据库实例的 AWS KMS 密钥的 ARN。

可使用另一账户中的密钥的 ARN 来加密 RDS 数据库实例。您也可以使用拥有用于加密新数据库实例的 AWS KMS 加密密钥的同一 AWS 账户创建数据库实例。在此情况下,您传递的 AWS KMS 密钥 ID 可能是 AWS KMS 密钥别名而不是密钥的 ARN。

重要

如果 Amazon RDS 失去对数据库实例的加密密钥的访问权 (例如,在撤销对密钥的 RDS 访问权时),该加密的数据库实例将进入最终状态。在此情况下,您只能从备份还原数据库实例。强烈建议您始终对加密的数据库实例启用备份以防止数据库中的加密数据丢失。

Amazon RDS 加密的实例的可用性

Amazon RDS 加密实例当前可用于所有数据库引擎和存储类型。Amazon RDS 加密当前在 中国(北京) 区域不可用。

Amazon RDS 加密可用于以下数据库实例类:

实例类型 实例类

通用型 (M4)

db.m4.large

db.m4.xlarge

db.m4.2xlarge

db.m4.4xlarge

db.m4.10xlarge

db.m4.16xlarge

内存优化 (R3)

db.r3.large

db.r3.xlarge

db.r3.2xlarge

db.r3.4xlarge

db.r3.8xlarge

内存优化 (R4)

db.r4.large

db.r4.xlarge

db.r4.2xlarge

db.r4.4xlarge

db.r4.8xlarge

db.r4.16xlarge

具有突增能力 (T2)

db.t2.small

db.t2.medium

db.t2.large

db.t2.xlarge

db.t2.2xlarge

通用型 (M3)

db.m3.medium

db.m3.large

db.m3.xlarge

db.m3.2xlarge

注意

静态加密不适用于运行 SQL Server Express Edition 的数据库实例。

管理 Amazon RDS 加密密钥

您可使用 IAM 控制台中的 AWS Key Management Service (AWS KMS) 管理用于 Amazon RDS 加密实例的密钥。若要完全控制密钥,您必须创建客户管理的密钥。您无法删除、撤销或轮换由 AWS KMS 配置的默认密钥。

您可通过使用 AWS CloudTrail 来查看利用客户管理的密钥执行的每个操作的审核日志。

重要

如果禁用加密的数据库实例的密钥,则无法对该数据库实例执行读取或写入操作。如果Amazon RDS 遇到用 Amazon RDS 无法访问的密钥加密的数据库实例,则 Amazon RDS 会使数据库实例进入最终状态。在此状态下,数据库实例不再可用,并且数据库的当前状态无法恢复。要还原数据库实例,您必须为 Amazon RDS 重新启用对加密密钥的访问权,然后从备份还原数据库实例。

Amazon RDS 加密的实例的限制

Amazon RDS 加密的实例存在以下限制:

  • 您只能在创建 Amazon RDS 数据库实例时而不是创建该数据库实例之后启用对该数据库实例的加密。

    但是,由于您可以加密未加密数据库快照的副本,因此,您可以高效地为未加密的数据库实例添加加密。也就是说,您可以创建数据库实例快照,然后创建该快照的加密副本。然后,您可以从加密快照还原数据库实例,从而获得原始数据库实例的加密副本。有关更多信息,请参阅 复制数据库快照或数据库集群快照

  • 不能将已加密的数据库实例修改为禁用加密。

  • 加密的只读副本的加密密钥必须用与源数据库实例的相同。

  • 您不能将未加密的备份或快照还原到加密的数据库实例。但是,如果您在从未加密的数据库集群快照还原时指定 KMS 加密密钥,则可以将未加密的 Aurora 数据库集群快照还原到加密的 Aurora 数据库集群。

  • 您无法为未加密的 Aurora 数据库集群创建已加密的 Aurora 副本。您无法为已加密的 Aurora 数据库集群创建未加密的 Aurora 副本。

  • 要将已加密快照从一个区域复制到另一个区域,您必须指定目标区域的 KMS 密钥标识符。这是因为 KMS 加密密钥特定于在其中创建该密钥的区域。

    源快照在复制过程中保持加密状态。AWS Key Management Service 使用信封加密在复制过程中保护数据。有关信封加密的更多信息,请参阅信封加密