更改集群加密
您可以使用 Amazon 托管式密钥或客户托管式密钥修改未加密的集群以使用 Amazon Key Management Service(Amazon KMS)加密。当您修改集群以启用 Amazon KMS 加密时,Amazon Redshift 会自动将您的数据迁移到新加密的集群。您还可以通过修改集群将未加密的集群迁移到加密的集群。
在迁移操作过程中,您的集群在只读模式下可用,并且集群状态显示为调整大小。
如果您的集群配置为启用跨 Amazon 区域快照副本,您必须在更改加密之前将其禁用。有关更多信息,请参阅将快照复制到另一个 Amazon 区域和为 Amazon KMS 加密的集群配置跨区域快照复制。您无法通过修改集群启用硬件安全模块 (HSM) 加密。而是创建一个新的 HSM 加密集群,并将您的数据迁移到新集群。有关更多信息,请参阅迁移到 HSM 加密的集群。
要修改集群上的数据库加密
-
登录 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshift/
。 -
在导航菜单上,选择 Clusters(集群),然后选择要修改加密的集群。
-
选择 Properties (属性)。
-
在 Database configurations(数据库配置)部分,选择 Edit(编辑),然后选择 Edit encryption(编辑加密)。
选择其中一个加密选项,然后选择 Save changes(保存更改)。
要使用 CLI 更改集群加密
若要修改未加密的集群以使用 Amazon KMS,请运行 modify-cluster CLI 命令并指定 –-encrypted,如下所示。预设情况下,使用默认 KMS 密钥。要指定客户托管式密钥,请包含 --kms-key-id 选项。
aws redshift modify-cluster --cluster-identifier <value> --encrypted --kms-key-id <value>
要从集群中删除加密,请运行以下 CLI 命令。
aws redshift modify-cluster --cluster-identifier <value> --no-encrypted
迁移到 HSM 加密的集群
要将未加密的集群迁移到使用硬件安全模块 (HSM) 加密的集群,请创建新的加密集群并将数据移动到新集群。您不能通过修改集群迁移到 HSM 加密的集群。
要从未加密的集群迁移到 HSM 加密的集群,首先从现有的源集群中卸载数据。然后使用所选的加密设置将数据重新加载到新的目标集群中。有关启动加密集群的更多信息,请参阅Amazon Redshift 数据库加密。
在迁移过程中,源集群可用于只读查询,直到最后一步。最后一步是重命名目标集群和源集群,用于切换端点,以便将所有流量路由到新的目标集群。在重命名后重新启动之前,目标集群不可用。在传输数据时,暂停源集群上的所有数据加载和其他写入操作。
准备迁移
-
确定与 Amazon Redshift 交互的所有关联系统,例如业务情报 (BI) 工具以及提取、转换和加载 (ETL) 系统。
-
确定用于测试迁移的验证查询。
例如,您可以使用以下查询来查找用户定义表的数目。
select count(*) from pg_table_def where schemaname != 'pg_catalog';以下查询返回所有用户定义表的列表以及每个表中的行数。
select "table", tbl_rows from svv_table_info; -
选择迁移的好时机。要查找集群使用率最低的时间,请监控 CPU 利用率和数据库连接数量等集群指标。有关更多信息,请参阅查看集群性能数据。
-
删除未使用的表。
要创建表列表和查询每个表的次数,请运行以下查询。
select database, schema, table_id, "table", round(size::float/(1024*1024)::float,2) as size, sortkey1, nvl(s.num_qs,0) num_qs from svv_table_info t left join (select tbl, perm_table_name, count(distinct query) num_qs from stl_scan s where s.userid > 1 and s.perm_table_name not in ('Internal worktable','S3') group by tbl, perm_table_name) s on s.tbl = t.table_id where t."schema" not in ('pg_internal'); -
启动新的加密集群。
对目标集群使用与源集群相同的端口号。有关启动加密集群的更多信息,请参阅Amazon Redshift 数据库加密。
-
设置卸载和加载过程。
您可以使用 Amazon Redshift 卸载/复制实用工具
来帮助您在集群之间迁移数据。该实用工具会将源集群的数据导出到 Simple Storage Service(Amazon S3)上的某个位置。使用 Amazon KMS 加密数据。然后,该实用工具会自动将数据导入到目标中。或者,您可以使用该实用程序在迁移完成后清除 Simple Storage Service(Amazon S3)。 -
运行测试以验证您的过程并估计必须暂停写入操作的时间。
在卸载和加载操作期间,通过暂停数据加载和其他写入操作来维护数据一致性。使用最大的表之一,运行卸载和加载过程,以帮助您估计时间。
-
创建数据库对象,如 schema、视图和表。要帮助您生成必要的数据定义语言 (DDL) 语句,您可以使用 Amazon GitHub 存储库中的 AdminViews
中的脚本。
要迁移集群
-
停止源集群上的所有 ETL 流程。
要确认进程中未执行任何写入操作,请使用 Amazon Redshift 管理控制台来监控写入 IOPS。有关更多信息,请参阅查看集群性能数据。
-
运行您之前确定的验证查询,以便在迁移前收集有关未加密源集群的信息。
-
(可选)创建一个工作负载管理 (WLM) 队列,以使用源集群和目标集群中的最大可用资源。例如,创建名为
data_migrate的队列并将队列配置为内存 95%,并发性为 4。有关更多信息,请参阅 Amazon Redshift 数据库开发人员指南中的基于用户组和查询组将查询路由至队列中。 -
使用
data_migrate队列,运行 UnloadCopyUtility。使用 Amazon Redshift 控制台监控 UNLOAD 和 COPY 进程。
-
再次运行验证查询,并验证结果是否与源集群的结果匹配。
-
重命名源集群和目标集群以交换端点。为避免中断,请在工作时间以外执行此操作。
-
验证您是否可以使用所有 SQL 客户端(如 ETL 和报告工具)连接到目标集群。
-
关闭未加密的源集群。