MaxCompute支持结合密钥管理服务(KMS)做密钥管理,本文为您介绍封装密钥集函数USE_WRAPPED_KEYSET
:将封装密钥集转换为基础密钥集,作为加解密函数的参数用于加解密数据。
背景与前提
MaxCompute支持结合密钥管理服务做密钥管理,通过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,您可以在密钥管理服务控制台的密钥详情页面获取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 |
+-----+