NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何为 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:30507

    评论

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

    【Linux】硬件性能测试工具安装。

    百度搜索:蓝易云

    云计算 Linux 运维 服务器 云服务器

    mac电脑强大电脑风扇转速管理:Macs Fan Control Pro激活码中文版

    胖墩儿不胖y

    Mac软件 电脑风扇软件 风扇转速软件

    Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

    西柚子

    全球校园人工智能算法精英大赛-AIOT应用赛项圆满落幕

    AIRIOT

    人工智能 IoT AIOT

    ETLCloud X 明道云实现无缝数据连接

    RestCloud

    数据同步 ETL 明道云

    语音数据集:推动智能语音技术发展的关键驱动力

    来自四九城儿

    淘宝API与大数据技术在电商行业的应用研究

    技术冰糖葫芦

    API

    淘宝API和天猫SKU API在推动电子商务创新中的作用研究

    技术冰糖葫芦

    API

    Ulysses for Mac(让写作变得更加简单) v33.1免激活版

    影影绰绰一往直前

    创新驱动数字经济发展,融云获评「2023 数字经济隐形独角兽」

    融云 RongCloud

    数字化转型 数字经济 办公 融云 政企

    ubuntu20.4服务器安装mysql社区版并开放3306端口

    百度搜索:蓝易云

    MySQL 云计算 Linux ubuntu 运维

    如何在敏捷项目中实现高效测试?

    敏捷开发

    项目管理 敏捷开发 测试左移 测试自动化 bug管理

    Topaz Video AI for mac(视频增强和修复工具) 4.0.8完整激活版

    mac

    苹果mac Windows软件 Topaz Video AI

    万界星空科技MES系统中的工时管理

    万界星空科技

    MES系统 mes 工时管理 万界星空科技 工时管理系统

    OmniGraffle Pro for mac(专业图表绘制软件) v7.22.4激活版

    影影绰绰一往直前

    TI 专访 Merlin Protocol:构建在比特币网络上的资产适配协议

    中本聪研究院

    记录一次RPC服务有损上线的分析过程

    京东科技开发者

    将 Python 和 Rust 融合在一起,为 pyQuil® 4.0 带来和谐

    展菲

    rust Python Monad

    知识图谱技术在金融领域的分析和应用

    悦数图数据库

    图数据库 知识图谱

    火山引擎边缘云获“2023边缘计算年度领航企业”及“最佳CDN创新企业”等多项荣誉

    火山引擎边缘云

    CDN 边缘计算 边缘云 CDN技术

    Amazon Q | 融会贯通的 AI 开发助手来了!

    亚马逊云科技 (Amazon Web Services)

    人工智能 re:Invent 生成式人工智能 Amazon Q Amazon CodeCatalyst

    语音数据集:探索、挑战与应用

    来自四九城儿

    The Next Generation of Apache Flink

    Apache Flink

    大数据 flink 实时计算

    万界星空科技智能制造平台的工时管理系统

    万界星空科技

    MES系统 mes 万界星空科技 工时管理系统

    MES系统中的标准工时管理

    万界星空科技

    低代码 低代码开发 低代码平台 mes 低代码云MES

    克魔助手:方便查看iPhone应用实时日志和奔溃日志工具

    IPQ6000 IPQ6010 VS IPQ5018|A Comprehensive Comparison: Evaluating Wallys' WiFi 6 SoCs Offering

    wallyslilly

    IPQ6010 IPQ6000 ipq5018

    天猫商品详情数据接口(Tmall.item_get)

    tbapi

    天猫数据接口 天猫商品详情数据接口 天猫商品API接口 天猫商品数据接口 天猫API

    软通咨询助力某新能源头部企业迈向高效数智化时代,塑造行业新典范

    软通咨询

    数据智能 数字化咨询

    软件开发

    Geek_8da502

    在Mac上,按Command-X键无法剪切怎么办?

    mac大玩家j

    Mac软件教程 好用的软件分享

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