更改集群加密 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

更改集群加密

您可以修改未加密的群集以使用Amazon Key Management Service(Amazon KMS) 加密,使用Amazon托管密钥或客户管理密钥 (CMK)。当您修改集群以启用 KMS 加密时,Amazon Redshift 会自动将您的数据迁移到新加密的集群。您还可以通过修改集群将未加密的集群迁移到加密的集群。

在迁移操作过程中,您的集群在只读模式下可用,并且群集状态显示为调整大小

如果您的群集配置为启用跨Amazon区域快照副本,您必须在更改加密之前将其禁用。有关更多信息,请参阅 将快照复制到另一个Amazon区域配置跨区域快照复制Amazon KMS— 加密集。您无法通过修改集群启用硬件安全模块 (HSM) 加密。而是创建一个新的 HSM 加密集群,并将您的数据迁移到新集群。有关更多信息,请参阅 迁移到 HSM 加密的集群

注意

Amazon Redshift 有新的控制台可用。根据您使用的控制台,选择新控制台原始控制台说明。默认情况下会打开新控制台说明。

修改群集上的数据库加密

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择集群,然后选择要修改加密的集群。

  3. 选择属性

  4. 数据库配置部分,选择。编辑,然后选择。编辑加密

  5. 选择其中一个加密选项,然后选择保存更改。

使用控制台更改集群加密

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航窗格中,选择 Clusters,然后选择要修改的集群。

  3. 选择 Cluster,然后选择 Modify

  4. 适用于加密数据库中,选择KMS启用加密,或者选择禁用加密。

  5. 要使用客户托管密钥,请为主密钥选择输入键 ARN,然后在进行筛选字段。

  6. 选择修改

使用 CLI 更改集群加密

若要修改未加密的群集以使用 KMS,请运行modify-clusterCLI 命令并指定–-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 数据库加密

在迁移过程中,源群集可用于只读查询,直到最后一步。最后一步是重命名目标群集和源群集,用于切换终端节点,以便将所有流量路由到新的目标群集。在重命名后重新启动之前,目标群集不可用。在传输数据时,暂停源群集上的所有数据加载和其他写入操作。

准备迁移

  1. 确定与 Amazon Redshift 交互的所有依赖系统,例如商业智能 (BI) 工具以及提取、转换和加载 (ETL) 系统。

  2. 确定用于测试迁移的验证查询。

    例如,您可以使用下列查询来查找用户定义的表的数目。

    select count(*) from pg_table_def where schemaname != 'pg_catalog';

    以下查询返回所有用户定义表的列表以及每个表中的行数。

    select "table", tbl_rows from svv_table_info;
  3. 选择迁移的好时机。要查找集群使用率最低的时间,请监视 CPU 利用率和数据库连接数等集群指标。有关更多信息,请参阅 查看集群性能数据

  4. 删除未使用的表。

    要创建表列表和查询每个表的次数,请运行以下查询。

    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');
  5. 启动新的加密集群。

    对目标群集使用与源群集相同的端口号。有关启动加密集群的更多信息,请参阅Amazon Redshift 数据库加密

  6. 设置卸载和装载过程。

    您可以使用亚马Amazon Redshift 卸载/复制实用程序来帮助您在群集之间迁移数据。该实用程序将数据从源集群导出到 Amazon S3 上的位置。数据已加密Amazon KMS。然后,实用程序会自动将数据导入到目标中。或者,您可以使用该实用程序在迁移完成后清除 Amazon S3。

  7. 运行测试以验证您的过程并估计必须暂停写入操作的时间。

    在卸载和加载操作期间,通过挂起数据加载和其他写入操作来维护数据一致性。使用最大的表之一,运行卸载和加载过程,以帮助您估计计时。

  8. 创建数据库对象,如方案、视图和表。为帮助您生成必要的数据定义语言 (DDL) 语句,您可以在AdminViews中的AmazonGitHub 存储库。

迁移集群

  1. 停止源集群中的所有 ETL 进程。

    要确认正在执行的写入操作,请使用 Amazon Redshift 管理控制台来监控写入 IOPS。有关更多信息,请参阅 查看集群性能数据

  2. 运行您之前确定的验证查询,以便在迁移前收集有关未加密源群集的信息。

  3. (可选)创建一个工作负载管理 (WLM) 队列,以使用源群集和目标群集中的最大可用资源。例如,创建一个名为的队列data_migrate并将队列配置为 95% 的内存,并发性为 4。有关更多信息,请参阅 。基于用户组和查询组将查询路由至队列中的Amazon Redshift 数据库开发人员指南

  4. 使用data_migrate队列中,运行 UnloadCopyUtility。

    使用 Amazon Redshift 控制台监控 UNLOAD 和 COPY 流程。

  5. 再次运行验证查询,并验证结果是否与源群集的结果匹配。

  6. 重命名源群集和目标群集以交换终端节点。为避免中断,请在工作时间以外执行此操作。

  7. 验证您是否可以使用所有 SQL 客户端(如 ETL 和报告工具)连接到目标群集。

  8. 关闭未加密的源群集。