本文为您介绍Hologres如何使用外部表查询MaxCompute BYOK加密数据。

背景信息

MaxCompute支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力,满足企业监管和安全合规需求。本文为您介绍在Hologres中使用外部表查询MaxCompute的加密数据的限制条件和完整步骤。

使用限制

  • 仅Hologres V1.1及以上版本支持使用外部表查询MaxCompute的加密数据,如果您的实例是V1.1以下版本,请您提交工单或加入在线支持钉钉群申请升级实例。
  • 仅外部表的执行引擎为SQE时,支持访问MaxCompute存储的加密数据,如果您的执行引擎是HQE,请您通过以下两种SQL语句将执行引擎更改为SQE。
    • -- session级别修改
      set hg_experimental_enable_access_odps_orc_via_holo = false;
    • -- DB级别修改
      ALTER DATABASE <DB_Name> SET hg_experimental_enable_access_odps_orc_via_holo = false;
  • 仅支持查询BYOK方式加密的MaxCompute数据,对于使用Dataworks Default Key方式加密的MaxCompute的加密数据无法查询。
  • 查询数据时,Hologres会调用KMS的API获取相关的密钥信息,获取相关的密钥信息系统默认会缓存24小时。

操作步骤

  1. 创建自定义权限策略
    1. 登录RAM控制台,单击左侧导航栏的权限策略,进入权限策略页面,单击创建权限策略
      权限策略
    2. 进入新建自定义权限策略页面,策略名称命名为AliyunHologresEncryptionDefaultRolePolicy配置模式选择脚本配置,配置脚本如下所示。
      新建自定义权限策略
      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:GenerateDataKey",
                      "kms:DescribeKey"
                  ],
                  "Resource": "acs:kms:*:*:*/*",
                  "Effect": "Allow"
              }
          ]
      }
    3. 单击确定,完成自定义权限策略的创建。
  2. 创建Hologres代理角色并授权
    1. 登录RAM控制台,单击左侧导航栏的角色
    2. 进入角色页面,单击创建角色,进入创建角色对话框,选择可信实体类型阿里云服务
    3. 单击下一步角色类型选择普通服务角色角色名称命名为AliyunHologresEncryptionDefaultRole,设置选择受信服务交互式分析,单击完成创建角色
    4. 进入创建完成页面,单击为角色授权
    5. 进入添加权限页面,授权范围选择整个云账号选择权限自定义策略中第一步创建的自定义角色策略(AliyunHologresEncryptionDefaultRolePolicy)。添加权限
    6. 单击确定,完成角色创建和授权操作。
  3. 查询数据
    角色创建和授权完成以后,您便可以同使用Hologres的外部表查询MaxCompute的普通数据一样查询加密数据,详情请参见通过创建外部表加速查询MaxCompute数据