加密现有的 Amazon for P RDS ostgre SQL 数据库实例 - AWS Prescriptive Guidance

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

加密现有的 Amazon for P RDS ostgre SQL 数据库实例

由 Piyush Goyal (AWS)、Shobana Raghu () 和 Yaser Raja (AWS) 创作 AWS

环境:生产

技术:数据库;安全、身份、合规

AWS服务:亚马逊RDS;AWSKMS;AWSDMS

Summary

此模式说明了如何在最短的停机时间内加密亚马逊网络服务 (RDS) 云中用于 Postgre SQL 数据库实例的现有亚马逊关系数据库服务 (AmazonAWS)。此过程也适用RDS于 Amazon f SQL or My 数据库实例。

您可以在创建 Amazon RDS 数据库实例时为其启用加密,但不能在创建后启用加密。但是,您可以对未加密的数据库实例添加加密,方法是创建数据库实例快照,然后创建此快照的加密副本。然后,您可以从加密快照还原数据库实例,从而获得原始数据库实例的加密副本。如果您的项目允许在此活动期间停机(至少对于写入事务来说是如此),那么这就是您所需要做的。当数据库实例的新加密副本可用时,您可将应用程序指向新数据库。但是,如果您的项目不允许此活动出现大量停机时间,则您需要一种替代方法来帮助最大限度地减少停机时间。此模式使用 AWS Database Migration Service (AWSDMS) 来迁移和持续复制数据,以便可以在最短的停机时间内完成向新的加密数据库的切换。 

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

先决条件和限制

先决条件

限制

  • 您只能在创建 Amazon RDS 数据库实例时为其启用加密,而不能在创建数据库实例之后启用加密。

  • 未记录表中的数据不会使用快照进行恢复。有关更多信息,请查看使用 Postgre SQL 的最佳实践

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

  • 您不能将未加密的备份或快照还原到加密的数据库实例。

  • AWSDMS不会自动传输序列,因此需要额外的步骤来处理这个问题。

有关更多信息,请参阅 Amazon RDS 文档中的 Amazon RDS 加密数据库实例的限制

架构

源架构

  • 未加密的RDS数据库实例

目标架构

  • 加密的RDS数据库实例

    • 目标RDS数据库实例是通过还原源RDS数据库实例的数据库快照副本来创建的。

    • 还原快照时使用密AWSKMS钥进行加密。

    • AWSDMS复制任务用于迁移数据。

RDS用于AWSDMS将现有 Amazon for Postgre SQL 数据库实例加密到新数据库的进程。

工具

用于启用加密的工具:

  • AWSKMS加密密钥-创建加密数据库实例时,您可以选择客户托管密钥或托管密钥让 Amazon RDS 加密您的数据库实例。AWS如果您没有为客户托管密钥指定密钥标识符,Amazon RDS 会将AWS托管密钥用于您的新数据库实例。亚马逊为您的AWS账户RDS创建了亚马逊AWSRDS托管密钥。您的AWS账户在每个AWS地区都有不同的亚马逊AWSRDS托管密钥。有关使用KMS密钥进行 Amazon RDS 加密的更多信息,请参阅加密亚马逊RDS资源

用于持续复制的工具:

  • AWSDMS— 您可以使用 D AWS atabase Migration Service (AWSDMS) 将更改从源数据库复制到目标数据库。保持源数据库和目标数据库同步,最大限度地减少停机时间,这一点很重要。有关设置AWSDMS和创建任务的信息,请参阅AWSDMS文档

操作说明

任务描述所需技能

查看源 Postgre SQL 数据库实例的详细信息。

在亚马逊RDS控制台上,选择源 Postgre SQL 数据库实例。在配置选项卡,确保未为实例启用加密。有关屏幕插图,请参阅其他信息部分。

DBA

创建数据库快照。

为待加密的实例创建数据库快照。创建快照所用时间因数据库大小而异。有关说明,请参阅 Amazon RDS 文档中的创建数据库快照

DBA

加密快照。

在 Amazon RDS 控制台导航窗格中,选择快照,然后选择您创建的数据库快照。对于 Actions (操作),选择 Copy Snapshot (复制快照)。在相应的字段中提供目标AWS区域和数据库快照副本的名称。选中启用加密复选框。对于主密钥,请指定用于加密数据库快照副本的密KMS钥标识符。选择复制快照。有关更多信息,请参阅 Amazon RDS 文档中的复制快照

DBA
任务描述所需技能

还原数据库快照。

在 Amazon RDS 控制台上,选择快照。选择您创建的加密快照。对于操作,选择还原快照。对于数据库实例标识符,请为新数据库实例提供一个唯一名称。查看实例详细信息,然后选择还原数据库实例。将根据您的快照创建新的加密数据库实例。有关更多信息,请参阅 Amazon RDS 文档中的从数据库快照恢复

DBA

使用迁移数据AWSDMS。

在AWSDMS控制台上,创建AWSDMS任务。对于迁移类型,请选择迁移现有数据并复制正在进行的更改。在任务设置,对于目标表格准备模式,选择截断。有关更多信息,请参阅AWSDMS文档中的创建任务

DBA

启用数据验证。

任务设置中,选择启用验证。这使您能够将源数据与目标数据进行比较,以验证数据是否已准确迁移。 

DBA

禁用目标数据库实例限制。

在目标数据库实例上@@ 禁用所有触发器和外键约束,然后启动AWSDMS任务。有关禁用触发器和外键约束的更多信息,请参阅AWSDMS文档。

DBA

验证数据。

满载完成后,验证目标数据库实例数据,以查看其是否与源数据匹配。有关更多信息,请参阅AWSDMS文档中的AWSDMS数据验证

DBA
任务描述所需技能

停止对源数据库实例的写入操作。

停止对源数据库实例的写入操作,以应用程序可以开始停机。验证是否AWSDMS已完成对管道中数据的复制。启用目标数据库实例的触发器与外键。

DBA

更新数据库序列

如果源数据库包含任何序列号,则验证并更新目标数据库中的序列。

DBA

配置应用程序端点。

将您的应用程序连接配置为使用新的 Amazon RDS 数据库实例终端节点。已加密数据库实例。

DBA,应用程序所有者

相关资源

其他信息

正在检查源 Postgre SQL 数据库实例的加密情况:

源 Postgre SQL 数据库实例的摘要页面显示未启用存储加密。

此示例的其他注意事项:

  • SQL通过将rds.logical_replication参数设置为 1 在 Postgre 上启用复制。

重要说明:复制槽会保留预写日志 (WAL) 文件,直到文件被外部消耗,例如,由提取、转换和加载 (ETL) 作业pg_recvlogical;或被。AWS DMS将rds.logical_replication参数值设置为 1 时,AWSDMS设置wal_levelmax_wal_sendersmax_replication_slots、和max_connections参数。如果存在逻辑复制槽,但复制槽保留WAL的文件没有使用者,则事务日志磁盘使用量可能会增加,可用存储空间不断减少。有关解决此问题的更多信息和步骤,请参阅文章如何确定是什么原因导致 Amazon RDS for Postg SQL re 上出现 “设备上没有剩余空间DiskFull” 或 “” 错误? 在 Su AWS pport 知识中心中。

  • 创建数据库快照后对源数据库实例所做的任何架构更改,都不会出现在目标数据库实例上。

  • 创建加密数据库实例后,您无法更改该数据库实例使用的KMS密钥。在创建加密数据库实例之前,请务必确定您的密KMS钥要求。

  • 在运行AWSDMS任务之前,您必须在目标数据库实例上禁用触发器和外键。任务完成后,您可将它们重新启用。