全部產品
Search
文件中心

MaxCompute:USE_WRAPPED_KEYSET

更新時間:Jun 19, 2024

MaxCompute支援結合Key Management Service(KMS)做密鑰管理,本文為您介紹封裝密鑰集合函式USE_WRAPPED_KEYSET:將封裝密鑰集轉換為基礎密鑰集,作為加解密函數的參數用於加解密資料。

背景與前提

MaxCompute支援結合Key Management Service做密鑰管理,通過KMS金鑰組產生的密鑰集(KEYSET)再次進行加密,產生封裝密鑰集。USE_WRAPPED_KEYSET函數將NEW_WRAPPED_KEYSET函數產生的封裝密鑰集轉換為基礎密鑰集,作為加解密函數的參數,用於對資料加解密。您也可通過此函數,獲得封裝密鑰集相關的資訊,並儲存起來,便於後期維護。

使用USE_WRAPPED_KEYSET函數前需要完成以下操作:

  • 已有通過NEW_WRAPPED_KEYSET函數產生的封裝密鑰集,詳情請參見NEW_WRAPPED_KEYSET

  • 建立新KMS密鑰並擷取密鑰ARN資訊(kms_cmk_arn),並給RAM角色授權使用新密鑰的許可權,操作詳情請參見開通KMS並完成配置

命令格式

binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>])

參數說明

  • kms_cmk_arn:必填,加密KEYSET的KMS使用者主要金鑰資源名稱,格式為'acs:kms:<RegionId>:<UserId>:key/<CmkId>',包含地區資訊、使用者ID、使用者主要金鑰ID,您可以在Key Management Service控制台的密鑰詳情頁面擷取ARN,操作詳情請參見開通KMS並完成配置

  • role_arn:必填,擁有KMS許可權的RAM角色的ARN資訊,該角色需授權給MaxCompute,格式為'acs:ram:${<userAID>}:role/${<roleName>}',包含使用者ID、角色名稱,擷取請參見開通KMS並完成配置

  • wrapped_keyset:必填,已產生的封裝密鑰集。

  • role_chain:可選,使用者授權角色鏈,格式為'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'。通過角色鏈的方式,支援跨阿里雲帳號的封裝密鑰集調用。

傳回值說明

返回STRUCT類型的脫敏後的密鑰集,若有需要您可以通過get_json_object函數獲得密鑰集相關欄位。

使用樣本

說明

運行以下包含變數的範例程式碼請使用指令碼模式運行或在SQL語句中將變數替換為實際值。

擷取封裝密鑰集的密鑰演算法資訊:

@kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}';
@role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}';
@origin_key := unhex('<wrapped_keyset>');
@role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}';
@use_keyset_new := USE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, @role_chain);

select get_json_object(get_json_object(use_keyset_new.wrapped_keyset_info,'$.masked_keyset'), '$.key[0].key_meta_data.type');

返回結果樣本如下:

+-----+
| _c0 |
+-----+
| AES-GCM-256 |
+-----+