Amazon Relational Database Service
用户指南 (API Version 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 控制台中,在 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 失去对数据库实例的加密密钥的访问权 (例如,在撤销对密钥的 Amazon 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

内存优化 (R3) – 最新一代

db.r3.large

db.r3.xlarge

db.r3.2xlarge

db.r3.4xlarge

db.r3.8xlarge

具有突增能力 (T2) - 当前一代

db.t2.small

db.t2.medium

db.t2.large

通用 (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 数据库实例时而不是创建该数据库实例之后启用对该数据库实例的加密。

    但是,由于您可以加密未加密数据库快照的副本,因此您可以高效地为未加密的数据库实例添加加密。也就是说,您可以创建数据库实例快照,然后创建该快照的加密副本。然后,您可以从加密快照还原数据库实例,并获得原始数据库实例的加密副本。有关更多信息,请参阅 复制数据库快照或数据库群集快照。要为 Aurora 数据库群集创建加密副本,您无需加密 Amazon Aurora 数据库群集快照。如果您在从未加密的数据库群集快照还原时指定 KMS 加密密钥,则将使用指定的 KMS 加密密钥对已还原的数据库群集进行加密。

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

  • 您无法拥有一个未加密的数据库实例的加密只读副本或一个加密的数据库实例的未加密只读副本。

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

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

  • 您无法将加密的 MySQL 数据库快照还原到 Aurora 数据库群集。

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

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