查詢MaxCompute加密數(shù)據(jù)(BYOK模式)
本文為您介紹Hologres如何使用外部表查詢MaxCompute BYOK加密數(shù)據(jù)。
背景信息
MaxCompute支持通過密鑰管理服務(wù)KMS(Key Management Service)對數(shù)據(jù)進行加密存儲,提供數(shù)據(jù)靜態(tài)保護能力,滿足企業(yè)監(jiān)管和安全合規(guī)需求。本文為您介紹在Hologres中使用外部表查詢MaxCompute的加密數(shù)據(jù)的限制條件和完整步驟。
使用限制
僅Hologres V1.1及以上版本支持使用外部表查詢MaxCompute的加密數(shù)據(jù),如果您的實例是V1.1以下版本,請您參見實例升級或加入在線支持釘釘群申請升級實例。
查詢MaxCompute的加密數(shù)據(jù)時,如果您的實例版本低于V1.3.31需要添加后臺配置。Hologres從V1.3.31版本開始無需添加后臺配置,如需使用該功能,建議您升級實例,詳情請參見實例升級。
僅支持查詢BYOK方式加密的MaxCompute數(shù)據(jù),同時支持兩類密鑰材料,包括創(chuàng)建用戶主密鑰CMK時由KMS生成的密鑰材料以及用戶導(dǎo)入的密鑰材料。對于使用DataWorks Default Key方式加密的MaxCompute的加密數(shù)據(jù)無法查詢。
查詢數(shù)據(jù)時,Hologres會調(diào)用KMS的API獲取相關(guān)的密鑰信息,獲取相關(guān)的密鑰信息系統(tǒng)默認會緩存24小時。
操作步驟
創(chuàng)建自定義權(quán)限策略
登錄RAM控制臺,單擊左側(cè)導(dǎo)航欄的權(quán)限策略,進入權(quán)限策略頁面,單擊創(chuàng)建權(quán)限策略。
進入創(chuàng)建權(quán)限策略頁面,單擊腳本編輯配置腳本如下所示且名稱命名為AliyunHologresEncryptionDefaultRolePolicy。
{ "Version": "1", "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "acs:kms:*:*:*/*", "Effect": "Allow" } ] }
單擊確定,完成自定義權(quán)限策略的創(chuàng)建。
創(chuàng)建Hologres代理角色并授權(quán)
登錄RAM控制臺,單擊左側(cè)導(dǎo)航欄的角色。
進入角色頁面,單擊創(chuàng)建角色,進入創(chuàng)建角色對話框,選擇可信實體類型為阿里云服務(wù)。
單擊下一步,角色類型選擇普通服務(wù)角色,角色名稱命名為AliyunHologresEncryptionDefaultRole,設(shè)置選擇受信服務(wù)為交互式分析,單擊完成。
進入創(chuàng)建完成頁面,單擊為角色授權(quán)。
進入添加權(quán)限頁面,授權(quán)范圍選擇整個云賬號,選擇權(quán)限為自定義策略中第一步創(chuàng)建的自定義角色策略(AliyunHologresEncryptionDefaultRolePolicy)。
單擊確定,完成角色創(chuàng)建和授權(quán)操作。
在創(chuàng)建完角色后,單擊創(chuàng)建的角色,在信任策略管理頁簽,可以查看信任策略的設(shè)置。
修改數(shù)據(jù)庫級別配置
由于HQE暫時不支持訪問MaxCompute的存儲加密的數(shù)據(jù),所以需要使用如下SQL命令將外部表的執(zhí)行引擎修改為SQE。
ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;
以上配置需要重新創(chuàng)建連接才能生效。您可以使用如下SQL命令查看使用SQE查詢外部表的配置是否生效,如果顯示為
false
,表示配置生效。SHOW hg_experimental_enable_access_odps_orc_via_holo;
查詢數(shù)據(jù)
完成以上操作后,您便可以同使用Hologres的外部表查詢MaxCompute的普通數(shù)據(jù)一樣查詢加密數(shù)據(jù),詳情請參見通過創(chuàng)建外部表加速查詢MaxCompute數(shù)據(jù)。
常見問題
問題現(xiàn)象
查詢報錯,報錯信息類似如下信息。
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的加密數(shù)據(jù)導(dǎo)致的報錯,并且HQE暫時不支持訪問MaxCompute的存儲加密的數(shù)據(jù)。
解決方案
您需要將外表的執(zhí)行引擎改為SQE,修改數(shù)據(jù)庫級別的配置。
相關(guān)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;
改完配置且配置生效后,重新執(zhí)行查詢。