如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(二)

阅读数:3 2019 年 12 月 27 日 11:31

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(二)

关于使用案例

出于各种原因,多账户 AWS 环境是客户共用的模式。对于 AWS 中的数据湖客户,其中一个常见原因是,要将数据资产的所有权从公司的不同业务单位中分离出来。同时,业务单位可能需要相互授予对其部分数据资产的访问权,以获得新的业务见解。

如下面的图所示,在我们的示例中,账户 A 拥有包含 SSE-KMS 加密数据的 S3 存储桶,账户 B 拥有启用了 Redshift Spectrum 的 Amazon Redshift 集群。账户 B 需要使用 COPY 命令访问要加载到 Amazon Redshift 集群的相同数据,并且还需要使用 Redshift Spectrum 进行查询。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(二)

解决方案演练

接下来,我们详细介绍支持此使用案例的几个不同选项。

先决条件

此解决方案假设您已拥有以下设置:

    1. 对同一个 AWS 区域中 _ 两个 _ AWS 账户(我们称之为账户 A 和 B)的访问权。*

    2. 向 AWS 账户授予

      AdministratorAccess 策略(在生产中,应对其进行进一步限制)。

    3. 账户 A 是 AWS KMS 中的客户托管 CMK,具有以下属性:

      • 别名为

        kms_key_account_a

      • 描述为 Cross Account KMS Key in Account A

      • 管理员为当前 IAM 用户,您使用该用户登录 AWS 控制台并创建 KMS 密钥

      • 账户 B 被添加为外部账户

      复制并保存 CMK Amazon 资源名称 (ARN) 以便稍后使用

    4. 账户 A 使用 AWS 中的以下示例数据集:

复制代码
Customer - s3://awssampledbuswest2/ssbgz/customer0002_part_00.gz
复制代码
5. ** 账户 A** 拥有称为
<tt>rs-xacct-kms-bucket</tt> 的 S3 存储桶,其存储桶加密选项通过早前创建的 KMS 密钥
<tt>kms_key_account_a</tt> 被设置为 AWS KMS。
!
6. 使用下面的 AWS CLI 命令复制 Amazon Redshift 文档中的 AWS 示例数据集 SSB – 示例架构基准中的 ** 客户 ** 表数据。** 注意:** 由于存储桶名称在所有 AWS 客户中是全局统一的,您需要为测试运行指定一个唯一的存储桶名称。务必在以下命令中将 <tt>rs-xacct-kms-bucket</tt> 替换为您自己的存储桶名称:
复制代码
aws s3 cp s3://awssampledbuswest2/ssbgz/ s3://rs-xacct-kms-bucket/customer/ --recursive --exclude '*' --include 'customer*'
复制代码
7. 复制完成后,从 S3 控制台中检查文件的 **KMS 密钥 ID**,如下所示。!
8. ** 账户 B** 拥有一个 Amazon Redshift 集群:
* 集群名称为
<tt>rstest</tt>
* 它可被公开访问
* 它附加了一个称为 <tt>redshift_role_account_b</tt> 的 IAM 角色,具有下面两个托管的 IAM 策略:
* <tt>AmazonS3ReadOnlyAccess</tt>
* <tt>AWSGlueConsoleFullAccess</tt>
****** 注意:** 务必将 <tt>redshift_role_account_b</tt> 更新为您自己的 IAM 角色。
**** 您可以从客户端工具中成功设置数据库会话,例如笔记本电脑中设置 SQL Workbench。

* 本次演练使用 US-West-2(俄勒冈)区域中可公开访问的 AWS 示例数据集。因此,我们建议您使用 US-West-2(俄勒冈)区域进行测试运行,以降低因数据移动而造成的跨区域网络延迟和费用。

逐步演练

根据您希望将哪个账户的 AWS Glue 数据目录用于 Redshift Spectrum,有两个解决方案选项可供选择:

  1. 账户 B 中的 AWS Glue 数据目录
  2. 账户 A 中的 AWS Glue 数据目录

选项 1:账户 B 中的 AWS Glue 数据目录

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(二)

本文转载自 AWS 技术博客。

原文链接: https://amazonaws-china.com/cn/blogs/china/how-to-enable-cross-account-amazon-redshift-copy-and-redshift-spectrum-query-for-aws-kms-encrypted-data-in-amazon-s3/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布