本文为您介绍Hologres如何使用外部表查询MaxCompute BYOK加密数据。
背景信息
MaxCompute支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力,满足企业监管和安全合规需求。本文为您介绍在Hologres中使用外部表查询MaxCompute的加密数据的限制条件和完整步骤。
使用限制
- 仅Hologres V1.1及以上版本支持使用外部表查询MaxCompute的加密数据,如果您的实例是V1.1以下版本,请您参见实例升级或加入在线支持钉钉群申请升级实例。
- 查询MaxCompute的加密数据时,如果您的实例版本低于V1.3.31需要添加后台配置。Hologres从V1.3.31版本开始无需添加后台配置,如需使用该功能,建议您升级实例,详情请参见实例升级。
- 仅支持查询BYOK方式加密的MaxCompute数据,对于使用DataWorks Default Key方式加密的MaxCompute的加密数据无法查询。
- 查询数据时,Hologres会调用KMS的API获取相关的密钥信息,获取相关的密钥信息系统默认会缓存24小时。
操作步骤
- 创建自定义权限策略
- 创建Hologres代理角色并授权
- 修改数据库级别配置由于HQE暂时不支持访问MaxCompute的存储加密的数据,所以需要使用如下SQL命令将外部表的执行引擎修改为SQE。
以上配置需要重新创建连接才能生效。您可以使用如下SQL命令查看使用SQE查询外部表的配置是否生效,如果显示为ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;
false
,表示配置生效。SHOW hg_experimental_enable_access_odps_orc_via_holo;
- 查询数据完成以上操作后,您便可以同使用Hologres的外部表查询MaxCompute的普通数据一样查询加密数据,详情请参见通过创建外部表加速查询MaxCompute数据。
常见问题
- 问题现象查询报错,报错信息类似如下信息。
ERROR: status { code: SERVER_INTERNAL_ERROR message: "hos_exception: IO error: Failed to execute pangu open normal file pangu://xxx:xxx/product/odps/xxx/data/xxxx/xxx/xxx, errorcode: 9, errorcode_description: invalid argument, err_msg: PanguParameterInvalidException
- 问题原因
可能是因为使用HQE查询了MaxCompute的加密数据导致的报错,并且HQE暂时不支持访问MaxCompute的存储加密的数据。
- 解决方案
- 您需要将外表的执行引擎改为SQE,修改数据库级别的配置。相关SQL如下:
ALTER DATABASE <DB_Name> SET hg_experimental_enable_access_odps_orc_via_holo = false;
- 以上配置需要新建连接中才能生效。您可以使用如下SQL代码,查看通过SQE查询外表的配置是否生效,如果显示false,表示配置生效。
SHOW hg_experimental_enable_access_odps_orc_via_holo;
- 改完配置且配置生效后,重新执行查询。
- 您需要将外表的执行引擎改为SQE,修改数据库级别的配置。