O MaxCompute SQL oferece funções de criptografia e descriptografia para proteger seus dados. Este tópico detalha a sintaxe, os parâmetros e exemplos das funções de criptografia.
Criptografia de dados no MaxCompute
-
Criptografia de chave única: Permite gerar uma única chave para criptografar ou descriptografar aleatoriamente colunas específicas. Você é responsável por armazenar a chave gerada.

A tabela a seguir descreve as funções para criptografia e descriptografia de chave única no MaxCompute SQL.
Função
Descrição
Descriptografa uma coluna especificada e criptografada aleatoriamente, retornando o texto simples como tipo BINARY.
Criptografa aleatoriamente uma coluna especificada e retorna o texto cifrado como tipo BINARY.
-
Criptografia de múltiplas chaves: Um keyset é um objeto de gerenciamento de chaves no MaxCompute que pode conter uma ou mais chaves. É possível adicionar chaves manualmente a um keyset, realizar rotação de chaves e visualizar as chaves originais.

A tabela a seguir descreve as funções para criptografia e descriptografia de múltiplas chaves no MaxCompute SQL.
Função
Descrição
Cria um keyset com base em um tipo de algoritmo especificado.
Adiciona uma nova chave a um keyset e a define como chave mestra.
Converte um keyset do tipo BINARY para um formato JSON legível, permitindo a visualização de seus detalhes.
Converte uma string de keyset do formato JSON para o tipo BINARY.
Gera uma nova chave e a define como chave mestra.
-
Criptografia de múltiplas chaves com integração KMS: O MaxCompute se integra ao KMS para criptografia de dados. O MaxCompute gera um keyset básico e o criptografa com uma chave mestra do cliente (CMK) do KMS para criar um wrapped keyset. Você é responsável por armazenar esse wrapped keyset. Para descriptografar dados, é necessário fornecer o wrapped keyset. O MaxCompute usa então a CMK do KMS para descriptografar o wrapped keyset no keyset básico, que é posteriormente utilizado para descriptografar os dados.

A tabela a seguir descreve as funções para criptografia e descriptografia de múltiplas chaves integradas ao KMS no MaxCompute SQL.
Função
Descrição
Cria um novo wrapped keyset. Esta operação requer uma função (especificada por
role_arn) que tenha permissão para usar uma chave mestra do cliente (CMK) do KMS. Opcionalmente, especifique uma cadeia de funções (especificada porrole_chain) para permitir que outras contas Alibaba Cloud descriptografem o keyset.Recriptografa um wrapped keyset usando uma chave KMS especificada.
Descriptografa um wrapped keyset existente, executa a rotação de suas chaves internas e o recriptografa com a chave KMS original.
Descriptografa um wrapped keyset em um keyset básico para uso como parâmetro em funções de criptografia ou descriptografia. Use esta função também para visualizar os metadados do wrapped keyset para fins de manutenção.
Criptografa dados usando um keyset especificado.
Descriptografa dados usando um keyset especificado.
Observações
Após a atualização para o MaxCompute 2.0, algumas funções foram estendidas. Para usar funções que envolvem os novos tipos de dados (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ou BINARY), execute a seguinte instrução para ativar o novo sistema de tipos de dados:
No nível de sessão: Para usar os novos tipos de dados, adicione
set odps.sql.type.system.odps2=true;antes da sua instrução SQL e envie-as juntas.-
No nível de projeto: O proprietário do projeto pode configurar essa definição conforme necessário. A configuração leva de 10 a 15 minutos para entrar em vigor. Utilize o seguinte comando:
setproject odps.sql.type.system.odps2=true;Para obter mais informações sobre
setproject, consulte Project operations. Para observações sobre a ativação de tipos de dados no nível do projeto, consulte Data type version guide.
SYM_DECRYPT
-
Sintaxe
binary sym_decrypt(binary <value_to_decrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Descrição
Descriptografa dados criptografados aleatoriamente em uma coluna de tabela especificada.
-
Parâmetros
value_to_decrypt: Obrigatório. Os dados a serem descriptografados, que devem ser do tipo
BINARY.key: Obrigatório. A chave de descriptografia. Deve ser um valor
BINARYde 256 bits.encryption_method: Opcional. O método de criptografia. Especifique o mesmo método usado para criptografar os dados.
additional_authenticated_data: Opcional. Os dados autenticados adicionais (AAD) para verificar a autenticidade e integridade dos dados. Se você forneceu AAD durante a criptografia, também deve fornecê-lo para a descriptografia.
-
Valor de retorno
Retorna o texto simples como tipo
BINARY. Se necessário, use a funçãoCASTpara converter os dadosBINARYpara o tipoSTRING. -
Exemplos
Os exemplos a seguir mostram como descriptografar dados em uma tabela que foi criptografada com a função SYM_ENCRYPT.
-
Exemplo 1: Descriptografar dados criptografados com uma chave em texto simples.
-- Decrypt the id_card_no column. INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(sym_decrypt(unbase64(id_card_no), CAST('b75585cf321cdcad42451690cdb7bfc4' AS BINARY) ) AS STRING) AS id_card_no, tel FROM mf_user_info; -- Query the decrypted data. SELECT * FROM mf_user_info; -
Exemplo 2: Descriptografar dados criptografados com uma tabela de chaves.
-- Decrypt the id_card_no column with AAD verification. INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(sym_decrypt(unbase64(id_card_no), CAST('b75585cf321cdcad42451690cdb7bfc4' AS BINARY), 'AES-GCM-256', 'test' ) AS STRING) AS id_card_no, tel FROM mf_user_info; -- Query the decrypted data. SELECT * FROM mf_user_info;O comando retorna o seguinte resultado:
+------------+------+--------+------------+-------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-------------+ | 1 | bob | male | 0001 | 13900001234 | | 2 | allen| male | 0011 | 13900001111 | | 3 | kate | female | 0111 | 13900002222 | | 4 | annie| female | 1111 | 13900003333 | +------------+------+--------+------------+-------------+
-
SYM_ENCRYPT
-
Sintaxe
binary sym_encrypt(string|binary <value_to_encrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Descrição
Criptografa uma coluna especificada usando criptografia randomizada.
-
Parâmetros
value_to_encrypt: Obrigatório. Os dados a serem criptografados. Apenas os tipos STRING e BINARY são suportados.
key: Obrigatório. A chave de criptografia. Deve ter 256 bits e ser do tipo BINARY.
encryption_method: Opcional. O método de criptografia. O único algoritmo suportado é AES-GCM-256, que é o padrão.
additional_authenticated_data: Opcional. Os dados autenticados adicionais (AAD) usados para verificar a autenticidade e integridade dos dados. Este parâmetro é suportado apenas por algoritmos de Criptografia Autenticada com Dados Associados (AEAD), como AES-GCM.
-
Valor de retorno
Retorna o texto cifrado como um valor BINARY.
O valor de retorno contém o vetor de inicialização (IV), o texto cifrado e a tag AEAD, nessa ordem.
A função é não determinística, ou seja, retorna um texto cifrado diferente para cada criptografia, mesmo com o mesmo texto simples e chave.
-
Dados de amostra
-- Create the table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert sample data. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query the table. select * from mf_user_info; -
Exemplo 1: Criptografar dados usando uma chave em texto simples
Criptografe colunas na tabela
mf_user_infocom base nos dados de amostra. Execute o seguinte comando:-
Criptografar com AES-GCM-256 (sem AAD)
-- Encrypt the id_card_no column. insert overwrite table mf_user_info select id, name, gender, base64(sym_encrypt(id_card_no, cast('b75585cf321cdcad42451690cdb7bfc4' as binary) )) as id_card_no, tel from mf_user_info; select * from mf_user_info;Resultado:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | frgJZAEAQMeEuHqpS8lK9VxQhgPYpZ317V+oUla/xEc= | 13900001234| | 2 | allen| male | frgJZAIAQMeEuHqpLeXQfETsFSLJxBwHhPx6tpzWUg4= | 13900001111| | 3 | kate | female | frgJZAMAQMeEuHqpdphXAU6iWelWenlDnVy+R0HMvAY= | 13900002222| | 4 | annie| female | frgJZAQAQMeEuHqpR5c8bj21dYCeM0C25bLRZIrP71c= | 13900003333| +------------+------+--------+------------+-----+ -
Criptografar com AES-GCM-256 e AAD
Transmita um valor AAD para vincular o texto cifrado a um contexto específico. A descriptografia falhará se o AAD não corresponder.
-- Encrypt the id_card_no column with AAD. insert overwrite table mf_user_info select id, name, gender, base64(sym_encrypt(id_card_no, cast('b75585cf321cdcad42451690cdb7bfc4' as binary), 'AES-GCM-256', 'test' )) as id_card_no, tel from mf_user_info; select * from mf_user_info;Resultado:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | gJ0QaAEAoGGWVw90H/zETg... | 13900001234| | 2 | allen| male | gJ0QaAIAoGGWVw90TpNFC0... | 13900001111| | 3 | kate | female | gJ0QaAMAoGGWVw90KaQ8Vm... | 13900002222| | 4 | annie| female | gJ0QaAQAoGGWVw90nYCAS1... | 13900003333| +------------+------+--------+------------+-----+
-
-
Exemplo 2: Criptografar dados usando uma tabela de chaves
Para evitar passar chaves em texto simples no SQL, armazene as chaves em uma tabela do MaxCompute e faça um join com a tabela alvo no momento da criptografia.
Observações sobre gerenciamento de chaves:
A criação e o gerenciamento das chaves são de sua responsabilidade. O MaxCompute não armazena chaves nem qualquer mapeamento entre chaves e textos cifrados. Se uma chave for perdida, os dados criptografados não poderão ser recuperados.
Para prevenir a exposição de chaves, não conceda acesso direto à tabela de chaves. Em vez disso, crie uma view segura que chame a função de descriptografia — os usuários acessam os dados através da view sem nunca ver a chave em texto simples.
Se os dados a serem criptografados forem do tipo BINARY, execute
set odps.sql.type.system.odps2=true;para ativar a edição de tipos de dados do MaxCompute V2.0.
-- Create a key table. create table mf_id_key(id bigint, key binary); -- Insert a key. insert overwrite table mf_id_key values (1, cast('b75585cf321cdcad42451690cdb7bfc4' as binary)); -- Verify the key table. select * from mf_id_key;Resultado:
+------------+----------------------------------+ | id | key | +------------+----------------------------------+ | 1 | b75585cf321cdcad42451690cdb7bfc4 | +------------+----------------------------------+-- Encrypt the id_card_no column using the key table. insert overwrite table mf_user_info select /*+mapjoin(b)*/ a.id, a.name, a.gender, base64(sym_encrypt(a.id_card_no, b.key)) as id_card_no, a.tel from mf_user_info as a join mf_id_key as b on a.id >= b.id; -- Query the encrypted result. select * from mf_user_info;Resultado:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | 9esKZAEAoBquXVJo3ZptvoI09XuM4bSFTqF1mXH1BO4= | 13900001234| | 2 | allen| male | 9esKZAIAoBquXVJoJYqnXieAANih7FR59luePvdHB9U= | 13900001111| | 3 | kate | female | 9esKZAMAoBquXVJoppwxgVwPYBnvjIMklWLmJ/sU0Y8= | 13900002222| | 4 | annie| female | 9esKZAQAoBquXVJoB85RUFCLMbdyEBSz7LdS4M3Guvk= | 13900003333| +------------+------+--------+------------+-----+
NEW_KEYSET
-
Sintaxe
binary NEW_KEYSET(string <key_type>, [string <description>]) -
Descrição
Cria um keyset com base no tipo de algoritmo especificado.
-
Parâmetros
key_type: Obrigatório. O tipo de algoritmo usado para criar uma chave de dados. Os algoritmos suportados incluem AES-GCM-256, AES-SIV-CMAC-128 e AES-SIV-CMAC-256.
description: Opcional. A descrição da chave de dados.
-
Valor de retorno
Retorna um keyset do tipo BINARY.
-
Exemplo
select hex(NEW_KEYSET('AES-GCM-256', 'hello world'));O seguinte resultado é retornado.
+------------+ | _c0 | +------------+ | 0A10577567735A514541554D42776E684C4212580A330A0B4145532D47434D2D323536122017F7A430B9D4B59B55454FD4B486216059F1B748CE0502D901EBEACEAB6569191801200210011A10577567735A514541554D42776E684C4220022A0B68656C6C6F20776F726C64 | +------------+
ADD_KEY_TO_KEYSET
-
Sintaxe
binary ADD_KEY_TO_KEYSET(binary <keyset>, string <key_type>, binary <raw_key>, [string <description>]) -
Descrição
Adiciona uma chave a um keyset e configura a chave como chave mestra.
-
Parâmetros
keyset: Obrigatório. Este parâmetro especifica um keyset existente do tipo BINARY.
key_type: Obrigatório. Este parâmetro especifica o tipo de algoritmo da chave que você deseja adicionar. Valores válidos: AES-GCM-256, AES-SIV-CMAC-128 e AES-SIV-CMAC-256.
raw_key: Obrigatório. Este parâmetro especifica a chave que você deseja adicionar e configurar como chave mestra. A chave é do tipo BINARY.
description: Opcional. Este parâmetro fornece uma descrição da chave de dados.
-
Valor de retorno
Retorna um keyset BINARY.
-
Exemplo
select hex(ADD_KEY_TO_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-128', unhex('b75585cf321cdcad42451690cdb7bfc49c26092f60f854e72d43244c55620a3d'),'description') );O seguinte resultado é retornado:
+------------+ | _c0 | +------------+ | 0A10596530735A5145414150447273424C4212580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64125D0A380A104145532D5349562D434D41432D3132381220B75585CF321CDCAD42451690CDB7BFC49C26092F60F854E72D43244C55620A3D1801200110011A10596530735A5145414150447273424C4220022A0B6465736372697074696F6E | +------------+
KEYSET_FROM_JSON
-
Sintaxe
BINARY KEYSET_FROM_JSON(STRING <json_keyset>) -
Descrição
A função KEYSET_FROM_JSON converte uma string de keyset formatada em JSON para o tipo BINARY.
-
Parâmetros
json_keyset: Obrigatório. STRING. Uma string de keyset formatada em JSON.
-
Valor de retorno
Retorna o keyset como um valor BINARY.
-
Exemplo
SELECT HEX(KEYSET_FROM_JSON('{ "key": [{ "description": "hello world", "key_id": "r8MqZAEA8PDd3QSL", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "r8MqZAEA8PDd3QSL"}')) ;A consulta retorna o seguinte:
+------------+ | _c0 | +------------+ | 0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64 | +------------+
KEYSET_TO_JSON
-
Sintaxe
STRING KEYSET_TO_JSON(BINARY <keyset>) -
Descrição
Converte um keyset do tipo BINARY em uma string JSON legível. Após a conversão, visualize os detalhes do keyset.
-
Parâmetros
keyset: Obrigatório. Um valor do tipo BINARY. Este parâmetro especifica um keyset existente.
-
Valor de retorno
Um keyset no formato JSON é retornado. Descrição dos parâmetros:
key_id: o ID da chave.
key_material_origin: a origem da chave.
key_material_type: o tipo de criptografia da chave.
type: o tipo de algoritmo da chave.
value: o valor da chave.
output_prefix_type: o formato do texto cifrado após a criptografia.
-
Exemplos
SELECT KEYSET_TO_JSON(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64')) ;O seguinte resultado é retornado:
+------------+ | _c0 | +------------+ | { "key": [{ "description": "hello world", "key_id": "r8MqZAEA8PDd3QSL", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "r8MqZAEA8PDd3QSL"} | +------------+
ROTATE_KEYSET
-
Sintaxe
binary ROTATE_KEYSET(binary <keyset>, string <key_type>, [string <description> ]) -
Descrição
Permite que o sistema produza automaticamente uma nova chave e configure a nova chave como chave mestra.
-
Parâmetros
keyset: Obrigatório. Um valor do tipo BINARY. Este parâmetro especifica o keyset que você deseja atualizar.
key_type: Obrigatório. Este parâmetro especifica o tipo de algoritmo da nova chave. Valores válidos: AES-GCM-256, AES-SIV-CMAC-128 e AES-SIV-CMAC-256.
description: Opcional. Este parâmetro fornece uma descrição da nova chave de dados.
-
Valor de retorno
Retorna um keyset BINARY.
-
Exemplo
select ROTATE_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-256', 'hello world') ;O seguinte resultado é retornado:
+------------+ | _c0 | +------------+ | =0A=10BVIuZQEAcHHPLfn1=12X=0A3=0A=0BAES-GCM-256=12=20&=A8=FB=11&=DFO[]=D0<=18=0Ei=19V]w=16=CB=B2=91=81^=FB[=BF0=F8=BE=F9=AF=18=01=20=02=10=01=1A=10r8MqZAEA8PDd3QSL=20=02*=0Bhello=20world=12}=0AX=0A=10AES-SIV-CMAC-256=12@=9D=AD=B7=D6=AF=01=B2=9D=CE=C3=02y=A9=DB=E1=17q>'F=DC=F5=EF=FFI=7F=F0w)=95F=07>=9C=EDqn=DF=0E=1E=16bP&=D3=7F>gV=CBl=8AGJCm=93=FF=F9=96=AD=1A=C0=BC=18=01=20=02=10=01=1A=10BVIuZQEAcHHPLfn1=20=02*=0Bhello=20world | +-----------
NEW_WRAPPED_KEYSET
-
Sintaxe
binary NEW_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <key_type> [, string <description>, [string <role_chain>]]) -
Descrição
Use o MaxCompute com o KMS para gerenciar chaves. Gere um wrapped keyset criptografando um keyset com base em uma chave KMS. Após gerar um wrapped keyset, registre e armazene manualmente o wrapped keyset para subsequente criptografia e descriptografia de dados com base em chaves KMS. No processo de criptografia ou descriptografia, todas as chaves são geradas automaticamente pelo sistema. Não é possível visualizar a chave original usada para criptografia e descriptografia. Dessa forma, os dados podem ser criptografados ou descriptografados de maneira mais segura. A função
NEW_WRAPPED_KEYSETassume o Alibaba Cloud Resource Name (ARN) de uma função que pode usar ARNs de chave mestra do cliente (CMK) do KMS para o MaxCompute e criar um wrapped keyset. O ARN da função é especificado por role_arn. O ARN da CMK do KMS é especificado por kms_cmk_arn. A função também é usada para conceder a outras contas Alibaba Cloud as permissões para usar wrapped keysets com base em role_chain.Antes de usar a função
NEW_WRAPPED_KEYSET, certifique-se de que os seguintes pré-requisitos sejam atendidos:O KMS está ativado e uma instância KMS foi criada.
Uma chave KMS foi criada e o ARN da chave especificado por kms_cmk_arn foi obtido.
Uma função RAM foi criada e o MaxCompute está autorizado a acessar o KMS. O ARN da função RAM foi obtido. O ARN da função é especificado por role_arn.
Para obter mais informações, consulte a seção "Ativar KMS e conceder permissões no KMS" em Activate KMS and configure permissions.
-
Parâmetros
-
kms_cmk_arn: Obrigatório. Este parâmetro especifica o ARN da CMK do KMS usada para criptografar um keyset. O valor do parâmetro está no formato
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId especifica o ID da região, UserId especifica o ID do usuário e CmkId especifica o ID da CMK. Obtenha o ARN na página Detalhes da Chave no console KMS. role_arn: Obrigatório. Este parâmetro especifica o ARN da função RAM que tem permissões no KMS. A função precisa ser assumida pelo MaxCompute. O valor do parâmetro está no formato
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID especifica o ID do usuário e roleName especifica o nome da função.key_type: Obrigatório. Este parâmetro especifica o tipo de algoritmo da chave no keyset recém-gerado. Valores válidos: AES-GCM-256, AES-SIV-CMAC-128 e AES-SIV-CMAC-256.
description: Opcional. Este parâmetro fornece uma descrição da chave.
role_chain: Opcional. Este parâmetro especifica a cadeia de funções para autorização do usuário. O valor do parâmetro está no formato
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Use cadeias de funções para chamar wrapped keysets entre contas Alibaba Cloud.
-
-
Valor de retorno
Um wrapped keyset do tipo BINARY é retornado. Use a função HEX para converter o wrapped keyset do tipo BINARY em um keyset do tipo STRING, conforme suas necessidades de negócio. Para obter mais informações sobre a função HEX, consulte HEX.
-
Exemplos
-
Criar um wrapped keyset.
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'));O seguinte resultado é retornado:
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78434A373434582F54756C5A547A4E69337562786F4B3543412F616655573262786D345A41306B464C674A2F5758324F4E514E346746306F303236376D35335A6471797237366E57565A6836387A52687A4A673945784B6E677568794A376E6F4A68573677684B5A555A42786E4A383742536C4D46326A374F71474F4C414A6B665779694557394D58664876576E306C6D49777052746A77325643707A4259517277327944354343396C50586F31346A4351506253612F3044394C4C6E6E622F747A6B57316E4F564A6C5359354B35526130537565584F33507856773D | +-----+ -
Criar um wrapped keyset e permitir que outras funções chamem o wrapped keyset.
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'));O seguinte resultado é retornado:
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D784D59716D4C767954716B3562444779574C7A387965774966432F516B4A59616F57623648364A546A62434F7A7A42634F517A687A6E526F36543866714E4E63555546566874696C4A3947713556667A2F7851757A55686467504C517A2B6C433337485A535449744B53714E396B6639587666487A4D7957643842334D3179392F67423774726835437A556F786A74614571612F5A3543447668524A7731426566525647796A77574974476243475A4E594550714E767963532B333432743347396B714777626C54336F57706939706E437A667A4E4D6F4C63714F453D | +-----+
-
REWRAP_KEYSET
-
Sintaxe
binary REWRAP_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>, [string <role_chain>]) -
Descrição
O MaxCompute se integra ao KMS para gerenciar chaves. Uma chave KMS criptografa um keyset gerado para criar um wrapped keyset. A função
REWRAP_KEYSETrecriptografa um wrapped keyset que foi gerado pela funçãoNEW_WRAPPED_KEYSETcom uma nova chave KMS.Antes de usar a função
REWRAP_KEYSET, conclua as seguintes tarefas:Você possui um wrapped keyset gerado pela função
NEW_WRAPPED_KEYSET. Para obter mais informações, consulte NEW_WRAPPED_KEYSET.Crie uma nova chave KMS e obtenha seu Alibaba Cloud Resource Name (ARN) (kms_cmk_arn). Conceda à função RAM a permissão para usar a nova chave. Para obter mais informações, consulte Enable KMS and complete the configuration.
-
Parâmetros
-
kms_cmk_arn: Obrigatório.
O ARN da chave mestra do cliente (CMK) do KMS usada para recriptografar o keyset. O formato é
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. O ARN contém o ID da região, o ID do usuário e o ID da CMK. Obtenha o ARN na página de detalhes da chave no console Key Management Service. Para obter mais informações, consulte Enable KMS and complete the configuration. -
role_arn: Obrigatório.
O ARN da função RAM que tem permissões tanto nas chaves KMS antigas quanto nas novas. Esta função deve ser concedida ao MaxCompute. O formato é
'acs:ram:${<userAID>}:role/${<roleName>}'. O ARN contém o ID do usuário e o nome da função. Para obter o ARN, consulte Enable KMS and complete the configuration. -
wrapped_keyset: Obrigatório.
O wrapped keyset a ser recriptografado.
role_chain: Opcional. Este parâmetro especifica a cadeia de funções para autorização do usuário. O valor do parâmetro está no formato
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Use cadeias de funções para chamar wrapped keysets entre contas Alibaba Cloud.
-
-
Valor de retorno
Um wrapped keyset do tipo BINARY é retornado. Use a função HEX para converter o wrapped keyset do tipo BINARY em um keyset do tipo STRING, conforme suas necessidades de negócio. Para obter mais informações sobre a função HEX, consulte HEX.
-
Exemplos
NotaExecute o seguinte código de amostra que contém variáveis no editor de código ou insira as variáveis diretamente na instrução SQL. O MaxCompute não suporta escopos de variáveis entre instruções SQL.
-
Recriptografar um wrapped keyset:
SELECT hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram::1**************7:role/kms', unhex('<wrapped_keyset>'))); -
Recriptografar um wrapped keyset e permitir que funções de outras contas Alibaba Cloud o chamem:
SELECT hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram:${<UserId>}:role/${<roleName>}', unhex('<wrapped_keyset>'), 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}')));
-
ROTATE_WRAPPED_KEYSET
-
Sintaxe
binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]]) -
Descrição
Use o MaxCompute com o KMS para gerenciar chaves. Gere um wrapped keyset criptografando um keyset com base em uma chave KMS. A função
ROTATE_WRAPPED_KEYSETusa uma nova chave KMS e um novo algoritmo de chave para recriptografar um wrapped keyset gerado usando a funçãoNEW_WRAPPED_KEYSET. Comparada à funçãoREWRAP_KEYSET, a funçãoROTATE_WRAPPED_KEYSETpode usar um novo algoritmo de chave para recriptografia.Antes de usar a função
ROTATE_WRAPPED_KEYSET, certifique-se de que os seguintes pré-requisitos sejam atendidos:Um wrapped keyset foi gerado usando a função
NEW_WRAPPED_KEYSET. Para obter mais informações, consulte NEW_WRAPPED_KEYSET.Uma chave KMS foi criada e o ARN da chave especificado por kms_cmk_arn foi obtido. Uma função RAM recebeu permissões para usar a nova chave.
-
Parâmetros
kms_cmk_arn: Obrigatório. Este parâmetro especifica o ARN da chave mestra do cliente (CMK) do KMS que você deseja usar para recriptografar um wrapped keyset. O valor do parâmetro está no formato
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId especifica o ID da região, UserId especifica o ID do usuário e CmkId especifica o ID da CMK. Obtenha o ARN na página Detalhes da Chave no console KMS.role_arn: Obrigatório. Este parâmetro especifica o ARN da função RAM que tem permissões tanto nas chaves KMS antigas quanto nas novas. O valor do parâmetro está no formato
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID especifica o ID do usuário e roleName especifica o nome da função.wrapped_keyset: Obrigatório. Este parâmetro especifica o wrapped keyset que você deseja recriptografar.
key_type: Obrigatório. Este parâmetro especifica o tipo de algoritmo da chave no keyset recém-gerado. Valores válidos: AES-GCM-256, AES-SIV-CMAC-128 e AES-SIV-CMAC-256.
description: Opcional. Este parâmetro fornece uma descrição da chave.
role_chain: Opcional. Este parâmetro especifica a cadeia de funções para autorização do usuário. O valor do parâmetro está no formato
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Use cadeias de funções para chamar wrapped keysets entre contas Alibaba Cloud.
-
Valor de retorno
Um wrapped keyset do tipo BINARY é retornado. Use a função HEX para converter o wrapped keyset do tipo BINARY em um keyset do tipo STRING, conforme suas necessidades de negócio. Para obter mais informações sobre a função HEX, consulte HEX.
-
Exemplos
NotaExecute o seguinte código de amostra que contém variáveis no editor de código ou insira as variáveis diretamente na instrução SQL. O MaxCompute não suporta escopos de variáveis entre instruções SQL.
-
Recriptografar um wrapped keyset.
@kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}'; @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}'; @origin_key := unhex('<wrapped_keyset>'); select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world')); -
Recriptografar um wrapped keyset e permitir que outras funções chamem o 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>}'; select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world', @role_chain));
-
USE_WRAPPED_KEYSET
-
Sintaxe
binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>]) -
Descrição
Use o MaxCompute com o KMS para gerenciar chaves. Gere um wrapped keyset criptografando um keyset existente com base em uma chave KMS. A função
USE_WRAPPED_KEYSETconverte um wrapped keyset gerado usando a funçãoNEW_WRAPPED_KEYSETem um keyset básico. O keyset básico é usado como parâmetro na função de criptografia ou descriptografia para criptografar ou descriptografar dados. Use também a função USE_WRAPPED_KEYSET para obter informações sobre um wrapped keyset e salvar as informações para manutenção subsequente.Antes de usar a função
USE_WRAPPED_KEYSET, certifique-se de que os seguintes pré-requisitos sejam atendidos:Um wrapped keyset foi gerado usando a função
NEW_WRAPPED_KEYSET. Para obter mais informações, consulte NEW_WRAPPED_KEYSET.Uma chave KMS foi criada e o Alibaba Cloud Resource Name (ARN) da chave foi obtido. O ARN da chave é especificado por kms_cmk_arn. Uma função RAM recebeu permissões para usar a nova chave.
-
Parâmetros
kms_cmk_arn: Obrigatório. Este parâmetro especifica o ARN da chave mestra do cliente (CMK) do KMS do keyset que você deseja criptografar. O valor do parâmetro está no formato
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId especifica o ID da região, UserId especifica o ID do usuário e CmkId especifica o ID da CMK. Obtenha o ARN na página Detalhes da Chave no console KMS.role_arn: Obrigatório. Este parâmetro especifica o ARN da função RAM que tem permissões no KMS. A função precisa ser assumida pelo MaxCompute. O valor do parâmetro está no formato
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID especifica o ID do usuário e roleName especifica o nome da função.wrapped_keyset: Obrigatório. Este parâmetro especifica um wrapped keyset existente.
role_chain: Opcional. Este parâmetro especifica a cadeia de funções para autorização do usuário. O valor do parâmetro está no formato
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Use cadeias de funções para chamar wrapped keysets entre contas Alibaba Cloud.
-
Valor de retorno
Um keyset dessensibilizado do tipo STRUCT é retornado. Use a função
get_json_objectpara obter campos relacionados ao keyset, conforme suas necessidades de negócio. -
Exemplo
NotaExecute o seguinte código de amostra que contém variáveis no editor de código ou insira as variáveis diretamente na instrução SQL. O MaxCompute não suporta escopos de variáveis entre instruções SQL.
Obter as informações do 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 seguinte resultado é retornado:
+-----+ | _c0 | +-----+ | AES-GCM-256 | +-----+
ENHANCED_SYM_ENCRYPT
-
Sintaxe
binary ENHANCED_SYM_ENCRYPT(binary <keyset> , string|binary <plaintext> [,string <additional_data>]) -
Descrição
O MaxCompute permite usar a função
ENHANCED_SYM_ENCRYPTpara criptografar dados usando um keyset básico ou wrapped keyset especificado. Crie um wrapped keyset criptografando um keyset existente com base em uma chave do Key Management Service (KMS). Comparados aos keysets básicos, os wrapped keysets permitem gerenciar chaves com o KMS de maneira mais segura.Antes de usar a função
ENHANCED_SYM_ENCRYPT, certifique-se de que os seguintes pré-requisitos sejam atendidos:Um keyset básico ou wrapped keyset foi gerado usando a função
NEW_KEYSETouNEW_WRAPPED_KEYSET. Para obter mais informações, consulte NEW_KEYSET ou NEW_WRAPPED_KEYSETUm keyset básico foi obtido de um wrapped keyset usando a função
USE_WRAPPED_KEYSET. Este pré-requisito deve ser atendido se você quiser usar um wrapped keyset para criptografar dados. O keyset básico é usado como parâmetro na funçãoENHANCED_SYM_ENCRYPTpara criptografar dados. Além disso, sua conta deve ter atribuída a função que possui permissões para usar o wrapped keyset.
-
Parâmetros
keyset: Obrigatório. Este parâmetro especifica um keyset básico do tipo BINARY ou um wrapped keyset do tipo STRUCT.
plaintext: Obrigatório. Este parâmetro especifica o texto simples do tipo STRING ou BINARY que você deseja criptografar.
additional_data: Opcional. Este parâmetro especifica as informações de verificação suportadas pelo algoritmo. As informações de verificação são do tipo STRING.
-
Valor de retorno
Texto cifrado do tipo BINARY é retornado.
-
Dados de amostra
-- Create a table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert data into the table. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query data from the table. select * from mf_user_info; +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Exemplos
-
Criptografar a coluna
id_card_nona tabelamf_user_infousando um keyset básico.insert overwrite table mf_user_info select id, name, gender, base64(ENHANCED_SYM_ENCRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), id_card_no ))as id_card_no, tel from mf_user_info;A seguinte instrução de amostra consulta o resultado da criptografia:
select * from mf_user_info; -- The following result is returned: +------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQAwkVhYOocPQll8LmdzSwkRf3v2iTow+TAmnQ== | 13900001234 | | 2 | allen | male | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQBgj1hYOodIPdnyZ0ijZ9RmT+50xbxXh5cwcg== | 13900001111 | | 3 | kate | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQCwp1hYOoentQgkfUqctPbmX96k9eD018xg9Q== | 13900002222 | | 4 | annie | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQDQqFhYOodexhRmfh6VieEwePZscC4nUVTJXQ== | 13900003333 | +------------+------+--------+------------+-----+ -
Criptografar a coluna
telna tabelamf_user_infousando um wrapped keyset.-
Gerar um wrapped keyset e gravá-lo em uma tabela.
-- Create a table. create table mf_keyset_kms (id string,ks binary); -- Create a wrapped keyset and write it to the table. insert into mf_keyset_kms select '1', NEW_WRAPPED_KEYSET( 'acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', 'AES-GCM-256', 'description'); -- Query data from the table. select id,hex(ks) from mf_keyset_kms; -- The following result is returned: +----+-----+ | id | _c1 | +----+-----+ | 1 | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D | +----+-----+ -
Criptografar a coluna
telusando o wrapped keyset.select /*+ MAPJOIN(a) */ id, name, gender, id_card_no, ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), tel ) as tel FROM mf_user_info;O seguinte resultado é retornado:
+------------+------+--------+------------+------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------+ | 1 | bob | male | 0001 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=90=86=05=94z;=18=A6j=1CN=E5=9F=AC)=8D=D6=D8=0D=A2Y{kq=EE=F4~=C4=A7=9BS=A1w | | 2 | allen | male | 0011 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=AA=05=94z;=85=D8=08a=A2]=02d=20=B1=C3=AE=AF=1C{=EB=EA=C4=81=B5A=15=1BR=F7g=9B | | 3 | kate | female | 0111 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=B6=05=94z;[C=12=81=8B<=C1=9D=E2=CF=CE=BC=AE=A7=84=0F[=7CI=B9=B7=9D=DD=89=A8=FD! | | 4 | annie | female | 1111 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=00=A2=05=94z;E=03A=BC=7C=88=CFJ=14=B9=BD=A1=BF=ED=20=11=A3=A6/+%=0Fe=DD=C7=C8=0A | +------------+------+--------+------------+------+
-
-
ENHANCED_SYM_DECRYPT
-
Sintaxe
BINARY ENHANCED_SYM_DECRYPT(BINARY <keyset> , BINARY <ciphertext> [,string <additional_data>]) -
Descrição
Use a função
ENHANCED_SYM_DECRYPTno MaxCompute para descriptografar dados com um keyset básico ou wrapped keyset especificado. O keyset usado para descriptografia deve ser o mesmo usado para criptografia. Um wrapped keyset é criado criptografando um keyset existente com uma chave do Key Management Service (KMS). Use wrapped keysets com o KMS para gerenciar chaves de forma mais segura do que com keysets básicos.Antes de usar a função
ENHANCED_SYM_DECRYPT, conclua as seguintes operações:Gere um keyset básico ou um wrapped keyset usando a função
NEW_KEYSETouNEW_WRAPPED_KEYSET. Para obter mais informações, consulte NEW_KEYSET e NEW_WRAPPED_KEYSET.Se você usar um wrapped keyset para descriptografar dados, deverá ter as permissões da função associada ao wrapped keyset. Para obter mais informações, consulte Activate KMS and complete configurations.
-
Parâmetros
keyset: Obrigatório. O keyset do usuário, que pode ser do tipo BINARY ou STRUCT.
ImportanteO keyset básico ou wrapped keyset usado para descriptografia deve ser o mesmo usado para criptografia.
ciphertext: Obrigatório. O texto cifrado do tipo BINARY a ser descriptografado. O texto cifrado deve ter sido criptografado com o keyset especificado.
additional_data: Opcional. Este parâmetro especifica as informações de verificação suportadas pelo algoritmo. As informações de verificação são do tipo STRING.
-
Valor de retorno
Retorna texto simples do tipo BINARY.
-
Dados de amostra
-- Create a table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert data into the table. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query data from the table. select * from mf_user_info; +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Exemplos
-
Descriptografar a coluna
id_card_nona tabelamf_user_infousando um keyset simples:ImportanteAntes de descriptografar os dados, certifique-se de que eles foram criptografados. O keyset básico ou wrapped keyset usado para descriptografia deve ser o mesmo usado para criptografia. Para um exemplo de operação de criptografia, consulte ENHANCED_SYM_ENCRYPT.
INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(ENHANCED_SYM_DECRYPT(unhex('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), UNBASE64(id_card_no)) AS STRING) AS id_card_no, tel FROM mf_user_info;O seguinte resultado é retornado:
SELECT * FROM mf_user_info; -- Sample result +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Usar um wrapped keyset para descriptografar a coluna criptografada
mf_user_infona tabelatel:SELECT /*+ MAPJOIN(a) */ id, name, gender, id_card_no, ENHANCED_SYM_DECRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), tel ), '' ) AS tel FROM mf_user_info;O seguinte resultado é retornado:
+------------+------+--------+------------+------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------+ | 1 | bob | male | 0001 | 13900001234 | | 2 | allen | male | 0011 | 13900001111 | | 3 | kate | female | 0111 | 13900002222 | | 4 | annie | female | 1111 | 13900003333 | +------------+------+--------+------------+------+
-