MaxCompute SQL propose des fonctions de chiffrement et de déchiffrement pour sécuriser vos données. Cette rubrique détaille la syntaxe, les paramètres et les exemples relatifs aux fonctions de chiffrement.
Chiffrement des données dans MaxCompute
-
Chiffrement à clé unique : vous permet de générer une clé unique pour chiffrer ou déchiffrer aléatoirement des colonnes spécifiques. Vous êtes responsable du stockage de la clé générée.

Le tableau suivant décrit les fonctions de chiffrement et de déchiffrement à clé unique dans MaxCompute SQL.
Fonction
Description
Déchiffre une colonne spécifiée, chiffrée de manière aléatoire, et renvoie le texte en clair sous forme de type BINARY.
Chiffre aléatoirement une colonne spécifiée et renvoie le texte chiffré sous forme de type BINARY.
-
Chiffrement à clés multiples : un ensemble de clés (keyset) est un objet de gestion des clés dans MaxCompute qui peut contenir une ou plusieurs clés. Vous pouvez ajouter manuellement des clés à un ensemble de clés, effectuer une rotation des clés et afficher les clés d'origine.

Le tableau suivant décrit les fonctions de chiffrement et de déchiffrement à clés multiples dans MaxCompute SQL.
Fonction
Description
Crée un ensemble de clés basé sur un type d'algorithme spécifié.
Ajoute une nouvelle clé à un ensemble de clés et la définit comme clé principale.
Convertit un ensemble de clés de type BINARY au format JSON lisible par l'homme afin que vous puissiez consulter ses détails.
Convertit une chaîne d'ensemble de clés du format JSON au type BINARY.
Génère une nouvelle clé et la définit comme clé principale.
-
Chiffrement à clés multiples avec intégration KMS : MaxCompute s'intègre à KMS pour le chiffrement des données. MaxCompute génère un ensemble de clés de base et le chiffre à l'aide d'une clé maître cliente (CMK) provenant de KMS pour créer un ensemble de clés encapsulé (wrapped keyset). Vous êtes responsable du stockage de cet ensemble de clés encapsulé. Pour déchiffrer les données, vous devez fournir l'ensemble de clés encapsulé. MaxCompute utilise ensuite la CMK KMS pour déchiffrer l'ensemble de clés encapsulé en un ensemble de clés de base, qu'il utilise ensuite pour déchiffrer les données.

Le tableau suivant décrit les fonctions de chiffrement et de déchiffrement à clés multiples intégrées à KMS dans MaxCompute SQL.
Fonction
Description
Crée un nouvel ensemble de clés encapsulé. Cette opération nécessite un rôle (spécifié par
role_arn) disposant de l'autorisation d'utiliser une clé maître cliente (CMK) KMS. Vous pouvez éventuellement spécifier une chaîne de rôles (spécifiée parrole_chain) pour permettre à d'autres comptes Alibaba Cloud de déchiffrer l'ensemble de clés.Rechiffre un ensemble de clés encapsulé à l'aide d'une clé KMS spécifiée.
Déchiffre un ensemble de clés encapsulé existant, effectue une rotation des clés internes, puis le rechiffre avec la clé KMS d'origine.
Déchiffre un ensemble de clés encapsulé en un ensemble de clés de base pour l'utiliser comme paramètre dans les fonctions de chiffrement ou de déchiffrement. Vous pouvez également utiliser cette fonction pour afficher les métadonnées de l'ensemble de clés encapsulé à des fins de maintenance.
Chiffre les données à l'aide d'un ensemble de clés spécifié.
Déchiffre les données à l'aide d'un ensemble de clés spécifié.
Notes
Après la mise à niveau vers MaxCompute 2.0, certaines fonctions ont été étendues. Pour utiliser des fonctions impliquant les nouveaux types de données (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ou BINARY), exécutez l'instruction suivante pour activer le nouveau système de types de données :
Au niveau de la session : pour utiliser les nouveaux types de données, ajoutez
set odps.sql.type.system.odps2=true;avant votre instruction SQL et soumettez-les ensemble.-
Au niveau du projet : le propriétaire d'un projet peut configurer ce paramètre selon les besoins. La configuration prend effet après 10 à 15 minutes. Utilisez la commande suivante :
setproject odps.sql.type.system.odps2=true;Pour plus d'informations sur
setproject, consultez Opérations sur les projets. Pour les notes relatives à l'activation des types de données au niveau du projet, consultez Guide des versions des types de données.
SYM_DECRYPT
-
Syntaxe
binary sym_decrypt(binary <value_to_decrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Description
Déchiffre les données chiffrées de manière aléatoire dans une colonne de table spécifiée.
-
Paramètres
value_to_decrypt : obligatoire. Les données à déchiffrer, qui doivent être de type
BINARY.key : obligatoire. La clé de déchiffrement. Il doit s'agir d'une valeur
BINARYde 256 bits.encryption_method : facultatif. La méthode de chiffrement. Vous devez spécifier la même méthode que celle utilisée pour chiffrer les données.
additional_authenticated_data : facultatif. Les données d'authentification supplémentaires (AAD) permettant de vérifier l'authenticité et l'intégrité des données. Si vous avez fourni des AAD lors du chiffrement, vous devez également les fournir pour le déchiffrement.
-
Valeur de retour
Renvoie le texte en clair sous forme de type
BINARY. Si nécessaire, vous pouvez utiliser la fonctionCASTpour convertir les donnéesBINARYau typeSTRING. -
Exemples
Les exemples suivants montrent comment déchiffrer les données d'une table qui ont été chiffrées avec la fonction SYM_ENCRYPT.
-
Exemple 1 : déchiffrez des données chiffrées avec une clé en texte clair.
-- 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; -
Exemple 2 : déchiffrez des données chiffrées avec une table de clés.
-- 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;La commande renvoie le résultat suivant :
+------------+------+--------+------------+-------------+ | 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
-
Syntaxe
binary sym_encrypt(string|binary <value_to_encrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Description
Chiffre une colonne spécifiée à l'aide d'un chiffrement randomisé.
-
Paramètres
value_to_encrypt : obligatoire. Les données à chiffrer. Seuls les types STRING et BINARY sont pris en charge.
key : obligatoire. La clé de chiffrement. Elle doit être longue de 256 bits et de type BINARY.
encryption_method : facultatif. La méthode de chiffrement. Le seul algorithme pris en charge est AES-GCM-256, qui est la valeur par défaut.
additional_authenticated_data : facultatif. Les données d'authentification supplémentaires (AAD) utilisées pour vérifier l'authenticité et l'intégrité des données. Ce paramètre est pris en charge uniquement par les algorithmes de chiffrement authentifié avec données associées (AEAD), tels que AES-GCM.
-
Valeur de retour
Renvoie le texte chiffré sous forme de valeur BINARY.
La valeur de retour contient le vecteur d'initialisation (IV), le texte chiffré et la balise AEAD, dans cet ordre.
La fonction est non déterministe, ce qui signifie qu'elle renvoie un texte chiffré différent pour chaque chiffrement, même avec le même texte en clair et la même clé.
-
Données d'exemple
-- 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; -
Exemple 1 : chiffrez des données à l'aide d'une clé en texte clair
Chiffrez les colonnes de la table
mf_user_infoen vous basant sur les données d'exemple. Exécutez la commande suivante :-
Chiffrement avec AES-GCM-256 (sans 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;Résultat :
+------------+------+--------+------------+-----+ | 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| +------------+------+--------+------------+-----+ -
Chiffrement avec AES-GCM-256 et AAD
Transmettez une valeur AAD pour lier le texte chiffré à un contexte spécifique. Le déchiffrement échoue si l'AAD ne correspond pas.
-- 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;Résultat :
+------------+------+--------+------------+-----+ | 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| +------------+------+--------+------------+-----+
-
-
Exemple 2 : chiffrez des données à l'aide d'une table de clés
Pour éviter de transmettre des clés en texte clair dans SQL, stockez les clés dans une table MaxCompute et joignez-la à la table cible au moment du chiffrement.
Notes sur la gestion des clés :
Vous êtes responsable de la création et de la gestion des clés. MaxCompute ne stocke pas les clés ni aucune correspondance entre les clés et le texte chiffré. Si une clé est perdue, les données chiffrées ne peuvent pas être récupérées.
Pour empêcher l'exposition des clés, n'accordez pas d'accès direct à la table de clés. Créez plutôt une vue sécurisée qui appelle la fonction de déchiffrement ; les utilisateurs accèdent aux données via la vue sans jamais voir la clé en texte clair.
Si les données à chiffrer sont de type BINARY, exécutez
set odps.sql.type.system.odps2=true;pour activer l'édition des types de données 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;Résultat :
+------------+----------------------------------+ | 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;Résultat :
+------------+------+--------+------------+-----+ | 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
-
Syntaxe
binary NEW_KEYSET(string <key_type>, [string <description>]) -
Description
Crée un ensemble de clés basé sur le type d'algorithme spécifié.
-
Paramètres
key_type : obligatoire. Le type d'algorithme utilisé pour créer une clé de données. Les algorithmes pris en charge incluent AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
description : facultatif. La description de la clé de données.
-
Valeur de retour
Renvoie un ensemble de clés de type BINARY.
-
Exemple
select hex(NEW_KEYSET('AES-GCM-256', 'hello world'));Le résultat suivant est renvoyé.
+------------+ | _c0 | +------------+ | 0A10577567735A514541554D42776E684C4212580A330A0B4145532D47434D2D323536122017F7A430B9D4B59B55454FD4B486216059F1B748CE0502D901EBEACEAB6569191801200210011A10577567735A514541554D42776E684C4220022A0B68656C6C6F20776F726C64 | +------------+
ADD_KEY_TO_KEYSET
-
Syntaxe
binary ADD_KEY_TO_KEYSET(binary <keyset>, string <key_type>, binary <raw_key>, [string <description>]) -
Description
Ajoute une clé à un ensemble de clés et configure la clé comme clé principale.
-
Paramètres
keyset : obligatoire. Ce paramètre spécifie un ensemble de clés existant de type BINARY.
key_type : obligatoire. Ce paramètre spécifie le type d'algorithme de la clé que vous souhaitez ajouter. Valeurs valides : AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
raw_key : obligatoire. Ce paramètre spécifie la clé que vous souhaitez ajouter et configurer comme clé principale. La clé est de type BINARY.
description : facultatif. Ce paramètre fournit une description de la clé de données.
-
Valeur de retour
Renvoie un ensemble de clés BINARY.
-
Exemple
select hex(ADD_KEY_TO_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-128', unhex('b75585cf321cdcad42451690cdb7bfc49c26092f60f854e72d43244c55620a3d'),'description') );Le résultat suivant est renvoyé :
+------------+ | _c0 | +------------+ | 0A10596530735A5145414150447273424C4212580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64125D0A380A104145532D5349562D434D41432D3132381220B75585CF321CDCAD42451690CDB7BFC49C26092F60F854E72D43244C55620A3D1801200110011A10596530735A5145414150447273424C4220022A0B6465736372697074696F6E | +------------+
KEYSET_FROM_JSON
-
Syntaxe
BINARY KEYSET_FROM_JSON(STRING <json_keyset>) -
description
La fonction KEYSET_FROM_JSON convertit une chaîne de keyset au format JSON en type BINARY.
-
Paramètres
json_keyset : Obligatoire. Type STRING. Chaîne de keyset au format JSON.
-
Valeur renvoyée
Renvoie le keyset sous forme de valeur BINARY.
-
Exemple
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"}')) ;La requête renvoie le résultat suivant :
+------------+ | _c0 | +------------+ | 0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64 | +------------+
KEYSET_TO_JSON
-
Syntaxe
STRING KEYSET_TO_JSON(BINARY <keyset>) -
description
Convertit un keyset de type BINARY en une chaîne JSON lisible. Après la conversion, vous pouvez consulter les détails du keyset.
-
Paramètres
keyset : obligatoire. Valeur de type BINARY. Ce paramètre spécifie un keyset existant.
-
Valeur renvoyée
Un keyset au format JSON est renvoyé. description des paramètres :
key_id : ID de la clé.
key_material_origin : origine de la clé.
key_material_type : type de chiffrement de la clé.
type : type d'algorithme de la clé.
value : valeur de la clé.
output_prefix_type : format du texte chiffré après le chiffrement.
-
Exemples
SELECT KEYSET_TO_JSON(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64')) ;Le résultat suivant est renvoyé :
+------------+ | _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
-
Syntaxe
binary ROTATE_KEYSET(binary <keyset>, string <key_type>, [string <description> ]) -
description
Permet au système de générer automatiquement une nouvelle clé et de configurer cette dernière comme clé principale.
-
Paramètres
keyset : obligatoire. Valeur de type BINARY. Ce paramètre spécifie le keyset que vous souhaitez mettre à jour.
key_type : obligatoire. Ce paramètre spécifie le type d'algorithme de la nouvelle clé. Valeurs valides : AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
description : facultatif. Ce paramètre fournit une description de la nouvelle clé de données.
-
Valeur renvoyée
Renvoie un keyset BINARY.
-
Exemple
select ROTATE_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-256', 'hello world') ;Le résultat suivant est renvoyé :
+------------+ | _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
-
Syntaxe
binary NEW_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <key_type> [, string <description>, [string <role_chain>]]) -
description
Vous pouvez utiliser MaxCompute avec KMS pour gérer les clés. Vous pouvez générer un keyset encapsulé en chiffrant un keyset à l'aide d'une clé KMS. Une fois le keyset encapsulé généré, vous devez l'enregistrer et le stocker manuellement pour les opérations de chiffrement et de déchiffrement ultérieures basées sur les clés KMS. Lors du processus de chiffrement ou de déchiffrement, toutes les clés sont générées automatiquement par le système. Vous ne pouvez pas afficher la clé d'origine utilisée pour le chiffrement et le déchiffrement. Cette approche permet de chiffrer ou de déchiffrer les données de manière plus sécurisée. La fonction
NEW_WRAPPED_KEYSETsuppose le nom de ressource Alibaba Cloud (ARN) d'un rôle autorisé à utiliser les ARN de clé maître client (CMK) KMS dans MaxCompute et à créer un keyset encapsulé. L'ARN du rôle est spécifié par role_arn. L'ARN de la CMK KMS est spécifié par kms_cmk_arn. La fonction sert également à accorder à d'autres comptes Alibaba Cloud les permissions d'utiliser des keysets encapsulés via role_chain.Avant d'utiliser la fonction
NEW_WRAPPED_KEYSET, assurez-vous que les conditions préalables suivantes sont remplies :KMS est activé et une instance KMS a été créée.
Une clé KMS a été créée et l'ARN de clé spécifié par kms_cmk_arn a été obtenu.
Un rôle RAM a été créé et MaxCompute est autorisé à accéder à KMS. L'ARN du rôle RAM a été obtenu. L'ARN du rôle est spécifié par role_arn.
-
Paramètres
-
kms_cmk_arn : obligatoire. Ce paramètre spécifie l'ARN de la CMK KMS utilisée pour chiffrer un keyset. La valeur du paramètre est au format
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId spécifie l'ID de région, UserId spécifie l'ID utilisateur et CmkId spécifie l'ID de la CMK. Vous pouvez obtenir l'ARN depuis la page Détails de la clé dans la console KMS. role_arn : obligatoire. Ce paramètre spécifie l'ARN du rôle RAM disposant des autorisations sur KMS. Le rôle doit être assumé par MaxCompute. La valeur du paramètre est au format
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID spécifie l'ID utilisateur et roleName spécifie le nom du rôle.key_type : obligatoire. Ce paramètre spécifie le type d'algorithme de la clé dans le keyset nouvellement généré. Valeurs valides : AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
description : facultatif. Ce paramètre fournit une description de la clé.
role_chain : facultatif. Ce paramètre spécifie la chaîne de rôles pour l'autorisation des utilisateurs. La valeur du paramètre est au format
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Vous pouvez utiliser les chaînes de rôles pour appeler des keysets encapsulés entre différents comptes Alibaba Cloud.
-
-
Valeur renvoyée
Un keyset encapsulé de type BINARY est renvoyé. Vous pouvez utiliser la fonction HEX pour convertir le keyset encapsulé de type BINARY en un keyset de type STRING selon vos besoins métier. Pour plus d'informations sur la fonction HEX, consultez HEX.
-
Exemples
-
Créez un keyset encapsulé.
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'));Le résultat suivant est renvoyé :
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78434A373434582F54756C5A547A4E69337562786F4B3543412F616655573262786D345A41306B464C674A2F5758324F4E514E346746306F303236376D35335A6471797237366E57565A6836387A52687A4A673945784B6E677568794A376E6F4A68573677684B5A555A42786E4A383742536C4D46326A374F71474F4C414A6B665779694557394D58664876576E306C6D49777052746A77325643707A4259517277327944354343396C50586F31346A4351506253612F3044394C4C6E6E622F747A6B57316E4F564A6C5359354B35526130537565584F33507856773D | +-----+ -
Créez un keyset encapsulé et autorisez d'autres rôles à appeler ce keyset encapsulé.
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'));Le résultat suivant est renvoyé :
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D784D59716D4C767954716B3562444779574C7A387965774966432F516B4A59616F57623648364A546A62434F7A7A42634F517A687A6E526F36543866714E4E63555546566874696C4A3947713556667A2F7851757A55686467504C517A2B6C433337485A535449744B53714E396B6639587666487A4D7957643842334D3179392F67423774726835437A556F786A74614571612F5A3543447668524A7731426566525647796A77574974476243475A4E594550714E767963532B333432743347396B714777626C54336F57706939706E437A667A4E4D6F4C63714F453D | +-----+
-
REWRAP_KEYSET
-
Syntaxe
binary REWRAP_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>, [string <role_chain>]) -
description
MaxCompute s'intègre à KMS pour la gestion des clés. Une clé KMS chiffre un keyset généré pour créer un keyset encapsulé. La fonction
REWRAP_KEYSETrechiffre un keyset encapsulé généré par la fonctionNEW_WRAPPED_KEYSETà l'aide d'une nouvelle clé KMS.Avant d'utiliser la fonction
REWRAP_KEYSET, effectuez les tâches suivantes :Vous disposez d'un keyset encapsulé généré par la fonction
NEW_WRAPPED_KEYSET. Pour plus d'informations, consultez NEW_WRAPPED_KEYSET.Créez une nouvelle clé KMS et obtenez son nom de ressource Alibaba Cloud (ARN) (kms_cmk_arn). Accordez au rôle RAM l'autorisation d'utiliser la nouvelle clé. Pour plus d'informations, consultez Activer KMS et finaliser la configuration.
-
Paramètres
-
kms_cmk_arn : Obligatoire. ARN de la clé maître client (CMK) KMS utilisé pour rechiffrer le keyset. Le format est
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. L'ARN contient l'ID de région, l'ID utilisateur et l'ID de la CMK. Obtenez l'ARN depuis la page des détails de la clé dans la console Key Management Service. Pour plus d'informations, consultez Activer KMS et finaliser la configuration. role_arn : Obligatoire. ARN du rôle RAM disposant des autorisations sur les anciennes et nouvelles clés KMS. Ce rôle doit être accordé à MaxCompute. Le format est
'acs:ram:${<userAID>}:role/${<roleName>}'. L'ARN contient l'ID utilisateur et le nom du rôle. Pour obtenir l'ARN, consultez Activer KMS et finaliser la configuration.wrapped_keyset : Obligatoire. Keyset encapsulé à rechiffrer.
role_chain : facultatif. Ce paramètre spécifie la chaîne de rôles pour l'autorisation des utilisateurs. La valeur du paramètre est au format
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Vous pouvez utiliser les chaînes de rôles pour appeler des keysets encapsulés entre différents comptes Alibaba Cloud.
-
-
Valeur renvoyée
Un keyset encapsulé de type BINARY est renvoyé. Vous pouvez utiliser la fonction HEX pour convertir le keyset encapsulé de type BINARY en un keyset de type STRING selon vos besoins métier. Pour plus d'informations sur la fonction HEX, consultez HEX.
-
Exemples
RemarqueVous pouvez exécuter l'exemple de code suivant contenant des variables dans l'éditeur de code, ou intégrer les variables directement dans l'instruction SQL. MaxCompute ne prend pas en charge les portées de variables entre plusieurs instructions SQL.
-
Rechiffrez un keyset encapsulé :
select hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram::1**************7:role/kms', unhex('<wrapped_keyset>'))); -
Rechiffrez un keyset encapsulé et autorisez les rôles d'autres comptes Alibaba Cloud à l'appeler :
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
-
Syntaxe
binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]]) -
description
Vous pouvez utiliser MaxCompute avec KMS pour gérer les clés. Vous pouvez générer un keyset encapsulé en chiffrant un keyset à l'aide d'une clé KMS. La fonction
ROTATE_WRAPPED_KEYSETutilise une nouvelle clé KMS et un nouvel algorithme de clé pour rechiffrer un keyset encapsulé généré à l'aide de la fonctionNEW_WRAPPED_KEYSET. Par rapport à la fonctionREWRAP_KEYSET, la fonctionROTATE_WRAPPED_KEYSETpermet d'utiliser un nouvel algorithme de clé pour le rechiffrement.Avant d'utiliser la fonction
ROTATE_WRAPPED_KEYSET, assurez-vous que les conditions préalables suivantes sont remplies :Un keyset encapsulé a été généré à l'aide de la fonction
NEW_WRAPPED_KEYSET. Pour plus d'informations, consultez NEW_WRAPPED_KEYSET.Une clé KMS a été créée et l'ARN de clé spécifié par kms_cmk_arn a été obtenu. Un rôle RAM dispose des autorisations nécessaires pour utiliser la nouvelle clé.
-
Paramètres
kms_cmk_arn : obligatoire. Ce paramètre spécifie l'ARN de la clé maître client (CMK) KMS que vous souhaitez utiliser pour rechiffrer un keyset encapsulé. La valeur du paramètre est au format
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId spécifie l'ID de région, UserId spécifie l'ID utilisateur et CmkId spécifie l'ID de la CMK. Vous pouvez obtenir l'ARN depuis la page Détails de la clé dans la console KMS.role_arn : obligatoire. Ce paramètre spécifie l'ARN du rôle RAM disposant des autorisations sur les anciennes et nouvelles clés KMS. La valeur du paramètre est au format
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID spécifie l'ID utilisateur et roleName spécifie le nom du rôle.wrapped_keyset : obligatoire. Ce paramètre spécifie le keyset encapsulé que vous souhaitez rechiffrer.
key_type : obligatoire. Ce paramètre spécifie le type d'algorithme de la clé dans le keyset nouvellement généré. Valeurs valides : AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
description : facultatif. Ce paramètre fournit une description de la clé.
role_chain : facultatif. Ce paramètre spécifie la chaîne de rôles pour l'autorisation des utilisateurs. La valeur du paramètre est au format
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Vous pouvez utiliser les chaînes de rôles pour appeler des keysets encapsulés entre différents comptes Alibaba Cloud.
-
Valeur de retour
Un jeu de clés encapsulé de type BINARY est renvoyé. Vous pouvez utiliser la fonction HEX pour convertir le jeu de clés encapsulé de type BINARY en un jeu de clés de type STRING, selon vos besoins métier. Pour plus d'informations sur la fonction HEX, consultez HEX.
-
Exemples
RemarqueVous pouvez exécuter l'exemple de code suivant contenant des variables dans l'éditeur de code, ou intégrer les variables directement dans l'instruction SQL. MaxCompute ne prend pas en charge les portées de variables entre plusieurs instructions SQL.
-
Rechiffrer un jeu de clés encapsulé.
@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')); -
Rechiffrer un jeu de clés encapsulé et autoriser d'autres rôles à appeler ce jeu de clés.
@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
-
Syntaxe
binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>]) -
Description
MaxCompute s'intègre à KMS pour la gestion des clés. Vous pouvez générer un jeu de clés encapsulé en chiffrant un jeu de clés existant à l'aide d'une clé KMS. La fonction
USE_WRAPPED_KEYSETconvertit un jeu de clés encapsulé, généré par la fonctionNEW_WRAPPED_KEYSET, en un jeu de clés de base. Ce dernier sert de paramètre aux fonctions de chiffrement ou de déchiffrement pour traiter les données. Vous pouvez également utiliser la fonction USE_WRAPPED_KEYSET pour récupérer les informations relatives à un jeu de clés encapsulé et les conserver pour une maintenance ultérieure.Avant d'utiliser la fonction
USE_WRAPPED_KEYSET, assurez-vous que les conditions préalables suivantes sont remplies :Un jeu de clés encapsulé a été généré à l'aide de la fonction
NEW_WRAPPED_KEYSET. Pour plus d'informations, consultez NEW_WRAPPED_KEYSET.Une clé KMS a été créée et son Alibaba Cloud Resource Name (ARN) a été obtenu. L'ARN de la clé est spécifié par le paramètre kms_cmk_arn. Un rôle RAM dispose des autorisations nécessaires pour utiliser la nouvelle clé.
-
Paramètres
kms_cmk_arn : obligatoire. Ce paramètre indique l'ARN de la Customer Master Key (CMK) KMS du jeu de clés à chiffrer. La valeur du paramètre suit le format
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId correspond à l'ID de la région, UserId à l'ID de l'utilisateur et CmkId à l'ID de la CMK. Vous pouvez obtenir l'ARN depuis la page Key Details dans la console KMS.role_arn : obligatoire. Ce paramètre indique l'ARN du rôle RAM disposant des autorisations sur KMS. Ce rôle doit être assumé par MaxCompute. La valeur du paramètre suit le format
'acs:ram:${<userAID>}:role/${<roleName>}'. userAID correspond à l'ID de l'utilisateur et roleName au nom du rôle.wrapped_keyset : obligatoire. Ce paramètre indique un jeu de clés encapsulé existant.
role_chain : facultatif. Ce paramètre indique la chaîne de rôles pour l'autorisation des utilisateurs. La valeur du paramètre suit le format
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Les chaînes de rôles permettent d'appeler des jeux de clés encapsulés entre différents comptes Alibaba Cloud.
-
Valeur de retour
Un jeu de clés masqué de type STRUCT est renvoyé. Vous pouvez utiliser la fonction
get_json_objectpour extraire les champs relatifs au jeu de clés, selon vos besoins métier. -
Exemple
RemarqueVous pouvez exécuter l'exemple de code suivant contenant des variables dans l'éditeur de code, ou intégrer les variables directement dans l'instruction SQL. MaxCompute ne prend pas en charge les portées de variables entre plusieurs instructions SQL.
Récupérer les informations sur l'algorithme de clé d'un jeu de clés encapsulé.
@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');Le résultat suivant est renvoyé :
+-----+ | _c0 | +-----+ | AES-GCM-256 | +-----+
ENHANCED_SYM_ENCRYPT
-
Syntaxe
binary ENHANCED_SYM_ENCRYPT(binary <keyset> , string|binary <plaintext> [,string <additional_data>]) -
Description
MaxCompute vous permet d'utiliser la fonction
ENHANCED_SYM_ENCRYPTpour chiffrer des données à l'aide d'un jeu de clés de base ou encapsulé spécifié. Vous pouvez créer un jeu de clés encapsulé en chiffrant un jeu de clés existant avec une clé Key Management Service (KMS). Par rapport aux jeux de clés de base, les jeux de clés encapsulés offrent une gestion des clés plus sécurisée via KMS.Avant d'utiliser la fonction
ENHANCED_SYM_ENCRYPT, assurez-vous que les conditions préalables suivantes sont remplies :Un jeu de clés de base ou encapsulé a été généré à l'aide des fonctions
NEW_KEYSETouNEW_WRAPPED_KEYSET. Pour plus d'informations, consultez NEW_KEYSET ou NEW_WRAPPED_KEYSETUn jeu de clés de base a été extrait d'un jeu de clés encapsulé à l'aide de la fonction
USE_WRAPPED_KEYSET. Cette condition est requise si vous souhaitez utiliser un jeu de clés encapsulé pour chiffrer des données. Le jeu de clés de base sert de paramètre à la fonctionENHANCED_SYM_ENCRYPTpour le chiffrement des données. De plus, votre compte doit disposer du rôle autorisé à utiliser le jeu de clés encapsulé.
-
Paramètres
keyset : obligatoire. Ce paramètre indique un jeu de clés de base de type BINARY ou un jeu de clés encapsulé de type STRUCT.
plaintext : obligatoire. Ce paramètre indique le texte clair de type STRING ou BINARY à chiffrer.
additional_data : facultatif. Ce paramètre indique les informations de vérification prises en charge par l'algorithme. Ces informations sont de type STRING.
-
Valeur de retour
Un texte chiffré de type BINARY est renvoyé.
-
Données d'exemple
-- 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| +------------+------+--------+------------+------------+ -
Exemples
-
Chiffrer la colonne
id_card_node la tablemf_user_infoà l'aide d'un jeu de clés de base.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;L'instruction suivante interroge le résultat du chiffrement :
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 | +------------+------+--------+------------+-----+ -
Chiffrer la colonne
telde la tablemf_user_infoà l'aide d'un jeu de clés encapsulé.-
Générer un jeu de clés encapsulé et l'écrire dans une table.
-- 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 | +----+-----+ -
Chiffrer la colonne
telà l'aide du jeu de clés encapsulé.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;Le résultat suivant est renvoyé :
+------------+------+--------+------------+------+ | 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
-
Syntaxe
BINARY ENHANCED_SYM_DECRYPT(BINARY <keyset> , BINARY <ciphertext> [,string <additional_data>]) -
Description
La fonction
ENHANCED_SYM_DECRYPTde MaxCompute permet de déchiffrer des données à l'aide d'un jeu de clés de base ou encapsulé spécifié. Le jeu de clés utilisé pour le déchiffrement doit être identique à celui utilisé pour le chiffrement. Un jeu de clés encapsulé est créé en chiffrant un jeu de clés existant avec une clé Key Management Service (KMS). L'utilisation de jeux de clés encapsulés avec KMS offre une gestion des clés plus sécurisée que celle des jeux de clés de base.Avant d'utiliser la fonction
ENHANCED_SYM_DECRYPT, effectuez les opérations suivantes :Générez un jeu de clés de base ou encapsulé à l'aide des fonctions
NEW_KEYSETouNEW_WRAPPED_KEYSET. Pour plus d'informations, consultez NEW_KEYSET et NEW_WRAPPED_KEYSET.Si vous utilisez un jeu de clés encapsulé pour déchiffrer des données, vous devez disposer des autorisations associées au rôle lié à ce jeu de clés. Pour plus d'informations, consultez Activate KMS and complete configurations.
-
Paramètres
keyset : Obligatoire. Jeu de clés utilisateur, de type BINARY ou STRUCT.
ImportantLe jeu de clés de base ou encapsulé utilisé pour le déchiffrement doit être identique à celui utilisé pour le chiffrement.
ciphertext : Obligatoire. Texte chiffré de type BINARY à déchiffrer. Il doit avoir été chiffré avec le jeu de clés spécifié.
additional_data : Facultatif. Ce paramètre indique les informations de vérification prises en charge par l'algorithme. Ces informations sont de type STRING.
-
Valeur de retour
Renvoie un texte clair de type BINARY.
-
Données d'exemple
-- 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| +------------+------+--------+------------+------------+ -
Exemples
-
Déchiffrer la colonne
id_card_node la tablemf_user_infoà l'aide d'un jeu de clés simple :ImportantAvant de déchiffrer les données, assurez-vous qu'elles ont bien été chiffrées. Le jeu de clés de base ou encapsulé utilisé pour le déchiffrement doit être identique à celui utilisé pour le chiffrement. Pour un exemple d'opération de chiffrement, consultez 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;Le résultat suivant est renvoyé :
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| +------------+------+--------+------------+------------+ -
Utiliser un jeu de clés encapsulé pour déchiffrer la colonne
mf_user_infochiffrée de la tabletel: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;Le résultat suivant est renvoyé :
+------------+------+--------+------------+------+ | 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 | +------------+------+--------+------------+------+
-