O MaxCompute integra-se ao Key Management Service (KMS) para gerenciar chaves. Este tópico descreve a função USE_WRAPPED_KEYSET. Essa função converte um wrapped keyset em um basic keyset, usado como parâmetro nas funções de criptografia ou descriptografia para proteger dados.
Informações básicas e pré-requisitos
A integração entre MaxCompute e KMS permite gerenciar chaves com eficiência. Você pode gerar um wrapped keyset ao criptografar um keyset existente com base em uma chave do KMS. A função USE_WRAPPED_KEYSET transforma um wrapped keyset, criado pela função NEW_WRAPPED_KEYSET, em um basic keyset. Esse basic keyset serve como parâmetro para as funções de criptografia e descriptografia de dados. Além disso, use a função USE_WRAPPED_KEYSET para obter informações sobre um wrapped keyset e salvá-las para manutenção futura.
Antes de usar a função USE_WRAPPED_KEYSET, verifique se os seguintes pré-requisitos foram atendidos:
Gere um wrapped keyset por meio da função
NEW_WRAPPED_KEYSET. Para mais detalhes, consulte NEW_WRAPPED_KEYSET.Crie uma chave do KMS e obtenha seu Alibaba Cloud Resource Name (ARN). O ARN da chave é especificado por kms_cmk_arn. Conceda permissões a uma função do RAM para usar essa nova chave.
Sintaxe
binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>])
Parâmetros
kms_cmk_arn: obrigatório. Especifica o ARN da customer master key (CMK) do KMS associada ao keyset que você deseja criptografar. O valor segue o formato
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId indica o ID da região, UserId representa o ID do usuário e CmkId corresponde ao ID da CMK. Obtenha o ARN na página Detalhes da Chave no console do KMS.role_arn: obrigatório. Define o ARN da função do RAM com permissões no KMS. O MaxCompute precisa assumir essa função. O valor deve estar no formato
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID identifica o usuário e roleName indica o nome da função.wrapped_keyset: obrigatório. Indica um wrapped keyset existente.
-
role_chain: opcional.
Especifica a cadeia de funções para autorização do usuário. O formato esperado é
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. O uso de cadeias de funções viabiliza a chamada de wrapped keysets entre diferentes contas da Alibaba Cloud.
Valor de retorno
A função retorna um keyset anonimizado do tipo STRUCT. Use a função get_json_object para extrair campos específicos do keyset conforme a necessidade do seu negócio.
Exemplos
Execute o código de exemplo abaixo, que contém variáveis, diretamente no editor de código ou incorpore as variáveis na instrução SQL. O MaxCompute não oferece suporte a escopo de variáveis entre instruções SQL distintas.
Obtenha informações sobre o algoritmo de chave de um wrapped keyset.
@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');
O resultado retornado é:
+-----+
| _c0 |
+-----+
| AES-GCM-256 |
+-----+