本文為您介紹Hologres如何使用外部表格查詢MaxCompute加密資料。
背景資訊
MaxCompute支援通過Key Management Service(Key Management Service)對資料進行加密儲存,提供資料靜態保護能力,滿足企業監管和安全合規需求。本文為您介紹在Hologres中使用外部表格查詢MaxCompute的加密資料的限制條件和完整步驟。
使用Common Table鏈路訪問MaxCompute的加密資料(推薦)
自Hologres V3.2版本開始,支援使用Common Table鏈路訪問MaxCompute的加密資料。該模式無需額外的策略配置,即可使用Hologres訪問MaxCompute的加密資料,且支援使用Default Key和KMS的祕密金鑰加密的Project。更多詳情介紹,請參見基於Common Table鏈路訪問MaxCompute。
開啟方式
您可以根據具體的使用情境選擇合適的開啟方式。
SESSION層級
-- SESSION層級開啟,需要和查詢/DML一起執行 SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';資料庫層級
-- 資料庫層級開啟 ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';執行個體層級
-- 執行個體層級開啟 ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
歷史方案(不推薦)
該方案適用於Hologres V3.2以下版本執行個體由於其配置繁瑣且存在諸多限制,現不再推薦使用。此外,該方案僅支援MaxCompute使用KMS進行祕密金鑰加密的資料。
使用限制
僅Hologres V1.1及以上版本支援使用外部表格查詢MaxCompute的加密資料。
說明如果您的執行個體是V1.1以下版本,請您參見執行個體升級或加入線上支援DingTalk群申請升級執行個體。
查詢MaxCompute的加密資料時,如果您的執行個體版本低於V1.3.31需要添加後台配置。Hologres從V1.3.31版本開始無需添加後台配置,如需使用該功能,建議您升級執行個體,詳情請參見執行個體升級。
僅支援查詢加密的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控制台,單擊左側導覽列的角色。
進入角色頁面,單擊建立角色,進入建立角色對話方塊,選擇信任主體類型為雲端服務,信任主體名稱為即時數倉Hologres。
單擊確認,角色名稱命名為
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的普通資料一樣查詢加密資料,詳情請參見基於Foreign Table加速查詢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;改完配置且配置生效後,重新執行查詢。