NEW_WRAPPED_KEYSET

MaxCompute支持结合密钥管理服务(KMS)做密钥管理,本文为您介绍如何使用封装密钥集函数NEW_WRAPPED_KEYSET创建封装密钥集。

背景与前提

MaxCompute支持结合密钥管理服务做密钥管理,通过KMS密钥对生成的密钥集(KEYSET)再次进行加密,生成封装密钥集。封装密钥集需要您在生成后自行记录保存,使用封装密钥集对数据加解密,需要结合KMS密钥进行,此过程所有密钥由系统自动生成,不可查看原始用于数据加解密的密钥,可以更加安全地实现数据加解密。NEW_WRAPPED_KEYSET函数将有权使用KMS用户主密钥资源名称(kms_cmk_arn)角色的role_arn授权给MaxCompute,用来新建一个封装密钥集,也支持通过角色链(role_chain)方式授权给其他阿里云账号的角色使用封装密钥集的权限。

使用NEW_WRAPPED_KEYSET函数前需要完成以下操作:

  • 开通KMS创建密钥实例。

  • 创建KMS密钥并获取密钥ARN信息(kms_cmk_arn)。

  • 创建RAM角色并授权MaxCompute访问KMS,获取创建角色的ARN信息(role_arn)。

操作详情请参见开通KMS并完成配置

命令格式

binary NEW_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <key_type>
[, string <description>, [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并完成配置

  • key_type:必填,新生成的KEYSET密钥算法类型。目前支持:AES-GCM-256AES-SIV-CMAC-128AES-SIV-CMAC-256

  • description: 可选,密钥的描述信息。

  • role_chain:可选,用户授权角色链,格式为'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'。通过角色链的方式,支持跨阿里云账号的封装密钥集调用。

返回值说明

返回BINARY类型的加密KEYSET,若有需要您可以通过HEX函数将BINARY类型转换为STRING类型,详情请参见HEX

使用示例

  • 新建封装密钥集:

    select hex(NEW_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t','acs:ram::1**************7:role/kms', 'AES-GCM-256', 'hello'));

    返回结果示例如下:

    +-----+
    | _c0 |
    +-----+
    | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78434A373434582F54756C5A547A4E69337562786F4B3543412F616655573262786D345A41306B464C674A2F5758324F4E514E346746306F303236376D35335A6471797237366E57565A6836387A52687A4A673945784B6E677568794A376E6F4A68573677684B5A555A42786E4A383742536C4D46326A374F71474F4C414A6B665779694557394D58664876576E306C6D49777052746A77325643707A4259517277327944354343396C50586F31346A4351506253612F3044394C4C6E6E622F747A6B57316E4F564A6C5359354B35526130537565584F33507856773D |
    +-----+
  • 新建封装密钥集,并允许其他角色调用:

    select hex(NEW_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t','acs:ram::1**************7:role/kms', 'AES-GCM-256', 'hello','acs:ram::1**************7:role/kms1'));

    返回结果示例如下:

    +-----+
    | _c0 |
    +-----+
    | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D784D59716D4C767954716B3562444779574C7A387965774966432F516B4A59616F57623648364A546A62434F7A7A42634F517A687A6E526F36543866714E4E63555546566874696C4A3947713556667A2F7851757A55686467504C517A2B6C433337485A535449744B53714E396B6639587666487A4D7957643842334D3179392F67423774726835437A556F786A74614571612F5A3543447668524A7731426566525647796A77574974476243475A4E594550714E767963532B333432743347396B714777626C54336F57706939706E437A667A4E4D6F4C63714F453D |
    +-----+