本文為您介紹Hologres如何使用外部表格查詢MaxCompute BYOK加密資料。
背景資訊
MaxCompute支援通過Key Management Service(Key Management Service)對資料進行加密儲存,提供資料靜態保護能力,滿足企業監管和安全合規需求。本文為您介紹在Hologres中使用外部表格查詢MaxCompute的加密資料的限制條件和完整步驟。
使用限制
僅Hologres V1.1及以上版本支援使用外部表格查詢MaxCompute的加密資料,如果您的執行個體是V1.1以下版本,請您參見執行個體升級或加入線上支援DingTalk群申請升級執行個體。
查詢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代碼,查看通過SQE查詢外表的配置是否生效,如果顯示false,表示配置生效。
SHOW hg_experimental_enable_access_odps_orc_via_holo;
改完配置且配置生效後,重新執行查詢。