本文為您介紹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數據,同時支持兩類密鑰材料,包括創建用戶主密鑰CMK時由KMS生成的密鑰材料以及用戶導入的密鑰材料。對于使用DataWorks Default Key方式加密的MaxCompute的加密數據無法查詢。
查詢數據時,Hologres會調用KMS的API獲取相關的密鑰信息,獲取相關的密鑰信息系統默認會緩存24小時。
操作步驟
創建自定義權限策略
登錄RAM控制臺,單擊左側導航欄的權限策略,進入權限策略頁面,單擊創建權限策略。
進入創建權限策略頁面,單擊腳本編輯配置腳本如下所示且名稱命名為AliyunHologresEncryptionDefaultRolePolicy。
{ "Version": "1", "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "acs:kms:*:*:*/*", "Effect": "Allow" } ] }
單擊確定,完成自定義權限策略的創建。
創建Hologres代理角色并授權
登錄RAM控制臺,單擊左側導航欄的角色。
進入角色頁面,單擊創建角色,進入創建角色對話框,選擇可信實體類型為阿里云服務。
單擊下一步,角色類型選擇普通服務角色,角色名稱命名為AliyunHologresEncryptionDefaultRole,設置選擇受信服務為交互式分析,單擊完成。
進入創建完成頁面,單擊為角色授權。
進入添加權限頁面,授權范圍選擇整個云賬號,選擇權限為自定義策略中第一步創建的自定義角色策略(AliyunHologresEncryptionDefaultRolePolicy)。
單擊確定,完成角色創建和授權操作。
在創建完角色后,單擊創建的角色,在信任策略管理頁簽,可以查看信任策略的設置。
修改數據庫級別配置
由于HQE暫時不支持訪問MaxCompute的存儲加密的數據,所以需要使用如下SQL命令將外部表的執行引擎修改為SQE。
ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;
以上配置需要重新創建連接才能生效。您可以使用如下SQL命令查看使用SQE查詢外部表的配置是否生效,如果顯示為
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代碼,查看通過SQL查詢外表的配置是否生效,如果顯示false,表示配置生效。
SHOW hg_experimental_enable_access_odps_orc_via_holo;
改完配置且配置生效后,重新執行查詢。