写点什么

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

  • 2019-12-27
  • 本文字数:3451 字

    阅读完需:约 11 分钟

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

执行 Redshift Spectrum 查询

现在,已在 AWS Glue 数据目录中创建客户表,下面我们来使用 Redshift Spectrum 查询该表。


  1. 从您的查询工具登录 Amazon Redshift 集群。

  2. 运行下面的语句,为 Redshift Spectrum 创建一个称为

  3. spectrumxacct 的外部架构,以指向 AWS Glue 数据目录数据库。此数据库在账户 B 中为

  4. spectrumdb_account_b,已在 AWS Glue 控制台中创建。

  5. SQL


   drop schema if exists spectrumxacct;   create external schema spectrumxacct   from data catalog    database 'spectrumdb_account_b'   iam_role '<IAM role ARN of redshift_role_account_b,IAM role ARN of xacct_kms_role_account_b>'   create external database if not exists;
复制代码


**注意:**替换账户 B 中的 IAM 角色 ARN,用逗号隔开,周围不加任何空格。
复制代码


  1. 运行下面的示例查询,以确认 Redshift Spectrum 可以成功查询数据。

  2. SQL


   select * from spectrumxacct.customer limit 10;
复制代码



注意:Redshift Spectrum 使用账户 B 中的 AWS Glue 数据目录,而非账户 A。

选项 2:账户 A 中的 AWS Glue 数据目录

****


设置权限

1.登录账户 A 的 AWS 控制台,然后将 AWS 区域更改为 us-west-2(俄勒冈)



    • rs-xacct-bucket-policy,可授予对账户 A 中的 S3 存储桶的访问权限


    • rs_xacct_kms_policy,可授予对账户 A 中的 CMK 的访问权限


    策略名称:rs_xacct_bucket_policy


    注意:将存储桶名称 rs-xacct-kms-bucket 替换为您的存储桶名称。


    Json


    {    "Version": "2012-10-17",    "Statement": [        {            "Sid": "AllowS3",            "Effect": "Allow",            "Action": [                "s3:ListBucket",                "s3:GetObject"            ],            "Resource": [                "arn:aws:s3:::rs-xacct-kms-bucket/*",                "arn:aws:s3:::rs-xacct-kms-bucket"            ]        }    ]}
    复制代码


    策略名称:rs_xacct_kms_policy


    注意:将<ARN of kms_key_account_a from Account A>替换为账户 A 中的 KMS 密钥 ARN。


    Json


    {    "Version": "2012-10-17",    "Statement": [        {            "Sid": "AllowUseOfTheKey",            "Effect": "Allow",            "Action": [                "kms:Encrypt",                "kms:Decrypt",                "kms:ReEncrypt*",                "kms:GenerateDataKey*",                "kms:DescribeKey"            ],            "Resource": [                "<ARN of kms_key_account_a from Account A>"            ]        },        {            "Sid": "AllowAttachmentOfPersistentResources",            "Effect": "Allow",            "Action": [                "kms:CreateGrant",                "kms:ListGrants",                "kms:RevokeGrant"            ],            "Resource": [                "<ARN of kms_key_account_a from Account A>"            ],            "Condition": {                "Bool": {                    "kms:GrantIsForAWSResource": true                }            }        }    ]}
    复制代码


    b) 为具有以下 IAM 策略的 Amazon Redshift 服务创建称为


    xacct_kms_role_account_b 的新 IAM 角色:



    rs_xacct_bucket_policy



    rs_xacct_kms_policy



    AWSGlueConsoleFullAccess(此托管策略为 AWS Glue 数据目录提供必需权限)


    保存 IAM 角色 ARN,供稍后使用。


    c) 通过选择编辑信任关系并将现有信任策略替换为以下内容来更改 IAM 角色


    xacct_kms_role_account_a 的信任关系:


    注意:将<Account B>替换为账户 B 的 AWS 账户 ID。


    Json


    {  "Version": "2012-10-17",  "Statement": [    {      "Effect": "Allow",      "Principal": {        "Service": "redshift.amazonaws.com"      },      "Action": "sts:AssumeRole"    },    {      "Effect": "Allow",      "Principal": {        "AWS": "arn:aws:iam::<Account B>:root"      },      "Action": "sts:AssumeRole"    }  ]}
    复制代码


    d) 创建称为


    glue_service_role_account_a 的 AWS Glue 服务 IAM 角色,并附加以下策略:



    AWSGlueServiceRole(AWS 托管策略)



    rs_xacct_bucket_policy(早前创建的托管策略)



    rs_xacct_kms_policy(早前创建的托管策略)


    注意:务必将 glue_service_role_account_a 更新为您自己的 IAM 角色


    2.登录账户 B 的 AWS 控制台,并在尚未选择的情况下,将 AWS 区域更改为 us-west-2(俄勒冈)


    a) 修改现有的 IAM 策略


    rs_xacct_assume_role_policy,并将现有的 JSON 策略替换为以下内容:


    ****注意:替换<ARN for IAM role xacct_kms_role_account_a from Account A>。


    Json


    {    "Version": "2012-10-17",    "Statement": [        {            "Sid": "Stmt1487639602000",            "Effect": "Allow",            "Action": [                "sts:AssumeRole"            ],            "Resource": ["<ARN for IAM role xacct_kms_role_account_a from Account A>"            ]        }    ]}
    复制代码

    执行 Amazon Redshift COPY

    1.从您的查询工具登录 Amazon Redshift 集群并使用下面的 DDL 创建


    客户表。


    SQL


    CREATE TABLE customer (  c_custkey      INTEGER NOT NULL,  c_name         VARCHAR(25) NOT NULL,  c_address      VARCHAR(25) NOT NULL,  c_city         VARCHAR(10) NOT NULL,  c_nation       VARCHAR(15) NOT NULL,  c_region       VARCHAR(12) NOT NULL,  c_phone        VARCHAR(15) NOT NULL,  c_mktsegment   VARCHAR(10) NOT NULL);
    复制代码


    2.现在,您应该能够成功地运行下面的 COPY 语句。


    SQL


    copy customer from 's3://rs-xacct-kms-bucket/customer/' iam_role '<ARN for IAM role redshift_role_account_b from Account B,<ARN for IAM role xacct_kms_role_account_a from Account A>'gzipregion 'us-west-2';
    复制代码


    注意:替换 IAM 角色 ARN,用逗号隔开,周围不加任何空格。


    3.运行示例查询,以验证数据已成功加载。


    SQL


    select * from customer limit 10;
    复制代码


    为要查询的 Redshift Spectrum 设置 AWS Glue 数据目录表

    现在,我们在账户 A 中创建 AWS Glue 爬网程序,以对相同的


    客户数据进行爬网,并按照下面的步骤在账户 A 的 AWS Glue 数据目录数据库


    spectrumdb_account_a 中创建称为客户的表:


    按照选项 1 中列出的步骤操作,并使用下面的更改运行爬网程序:


    1. 这一次,在账户 A 中创建爬网程序(与选项 1 中的账户 B 相反)。

    2. 在账户 A 中创建 AWS Glue 数据目录数据库

    3. spectrumdb_account_a(与账户 B 中的

    4. spectrumdb_account_b 相反,然后为爬网程序选择该数据库以创建

    5. 客户表。

    6. 提供 S3 路径的同时,选择选项我的账户中的指定路径 (与为选项 1 选择的另一个账户中的指定路径不同)。

    7. 确保将早前创建的

    8. glue_service_role_account_a 用作 AWS Glue 服务 IAM 角色。=

    执行 Redshift Spectrum 查询**

    **


    现在,已在 AWS Glue 数据目录中创建


    客户表,下面我们来使用 Redshift Spectrum 查询该表。


    1.从您的查询工具登录 Amazon Redshift 集群,并运行下面的语句。这将会为 Redshift Spectrum 创建一个称为


    spectrumxacct2 的外部架构,该架构指向账户 A 中的 AWS Glue 数据目录数据库


    spectrumdb_account_a(早前从 AWS Glue 控制台中创建)。


    SQL


    drop schema if exists spectrumxacct2;create external schema spectrumxacct2from data catalog database 'spectrumdb_account_a' iam_role '<ARN for IAM role redshift_role_account_b from Account B,<ARN for IAM role xacct_kms_role_account_a from Account A>'create external database if not exists;
    复制代码


    注意:替换 IAM 角色 ARN,用逗号隔开,周围不加任何空格。


    2.运行下面的查询,该查询应成功运行。


    SQL


    select * from spectrumxacct2.customer limit 10;
    复制代码



    注意:Spectrum 使用账户 A 中的 AWS Glue 数据目录,而非账户 B_。_

    小结

    此博文显示了如何使用 Redshift Spectrum 为 Amazon S3 中的示例 KMS 加密数据集设置跨账户 Amazon Redshift COPY 和查询的逐步演练。它演示了两种解决方案选项,可根据您希望将哪个账户的 AWS Glue 目录用于 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/


    2019-12-27 11:30747

    评论

    发布
    暂无评论
    发现更多内容

    智能运维进入6.0时代,CloudwiseGPT运维大语言模型强势来袭!

    云智慧AIOps社区

    智能运维 大模型训练 大模型 大模型时代

    8月31日,上海!第十八届中国IDC产业(长三角)年度大典即将召开!

    中国IDC圈

    数据中心

    安全文件传输:如何降低数据丢失的风险

    镭速

    文件传输 安全文件传输

    3步带你搞定华为云编译构建CodeArts Build “新手村任务”

    华为云开发者联盟

    云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

    SAM&Stable-Diffusion集成进化!分割、生成一切!AI绘画新玩法

    飞桨PaddlePaddle

    人工智能 百度 paddle AI 飞桨

    加速 Selenium 测试执行最佳实践

    FunTester

    数智融合促进资产共享,实现企业资产效益最大化

    用友BIP

    资产云

    【云计算小知识】云环境是什么意思?有什么优点?

    行云管家

    云计算 云资源 云管 云环境

    出海是产业互联网发展的必然趋势之一

    用友BIP

    产业互联网 中企出海

    业财税档融合:大企业管理升级的必然选择

    用友BIP

    税务云 业财税档融合

    Nautilus Chain 主网上线,Zepoch 持有者将获第三轮 POSE 空投

    西柚子

    搜狗输入法双击输入框崩溃问题 | 京东云技术团队

    京东科技开发者

    搜索引擎 搜索 输入法 企业号 7 月 PK 榜

    西安航天基地人才创新创业大赛正式启动

    西安 大赛 比赛 西安航天 企业人才

    Stepn跑鞋/Jogger慢跑者NFT系统开发案例

    薇電13242772558

    NFT

    《让花掉的钱自己流回来》

    石云升

    读书笔记 财富管理

    CRM系统化整合从N-1做减法实践 | 京东物流技术团队

    京东科技开发者

    CRM CRM系统 企业号 7 月 PK 榜 系统化整合

    宁波企业等保测评找哪家?怎么做?

    行云管家

    等保 等级保护 等保测评 宁波

    全网最强分布式事务详解

    程序员小毕

    Java 分布式 分布式事务 后端 架构师

    第二届“鼎新杯”数字化转型应用大赛-全国入围赛结果公示及最佳人气案例投票启动

    信通院IOMM数字化转型团队

    数字化转型 IOMM 鼎新杯

    三大升级!龙蜥正式推出首款全面拥抱智算的国产操作系统 Anolis OS 23

    OpenAnolis小助手

    开源 操作系统 龙蜥社区 版本发布 Anolis23

    从iOS App启动速度看如何为基础性能保驾护航 | 京东物流技术团队

    京东科技开发者

    ios 开发 企业号 7 月 PK 榜 APP冷启动 启动速度

    DevOps国际峰会 | 采访龙智总经理,分享DevOps见解与行业趋势

    龙智—DevSecOps解决方案

    DevOps 金融行业 devops国际峰会

    详解TCP网络协议栈的工作原理

    华为云开发者联盟

    后端 开发 华为云 华为云开发者联盟 企业号 7 月 PK 榜

    服装行业MES系统解决方案|免费使用MES系统

    万界星空科技

    开源 MES系统 服装行业

    户外LED显示屏怎样在5G时代下发展?

    Dylan

    5G 广告 数字化 城市 户外LED显示屏

    【升职加薪秘籍】我在服务监控方面的实践(1)-监控蓝图

    蓝胖子的编程梦

    elasticsearch 性能优化 Grafana 服务监控 #Prometheus

    手把手带你初探Vue 3.0 | 京东物流技术团队

    京东科技开发者

    前端 Vue 3 VUE 3.0 源码 企业号 7 月 PK 榜

    数字孪生(Digital Twin)快速入门:简介以及应用示例

    龙智—DevSecOps解决方案

    数字孪生 digital twin

    上海科技大学智能生活组齐聚合合信息,“沉浸式”体验人工智能产品

    合合技术团队

    人工智能 人才发展 合合信息 校企合作 上海科技大学

    如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(四)_语言 & 开发_AWS_InfoQ精选文章