Vous pouvez utiliser MaxCompute avec Key Management Service (KMS) pour gérer les clés. Cette rubrique explique comment utiliser la fonction ROTATE_WRAPPED_KEYSET afin de déchiffrer un jeu de clés encapsulé, d'effectuer une rotation des clés et d'utiliser une nouvelle clé pour chiffrer les données.
Informations générales et prérequis
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 à l'aide d'une clé KMS. La fonction ROTATE_WRAPPED_KEYSET utilise une nouvelle clé KMS et un nouvel algorithme de clé pour rechiffrer un jeu de clés encapsulé précédemment généré par la fonction NEW_WRAPPED_KEYSET . Contrairement à la fonction REWRAP_KEYSET , la fonction ROTATE_WRAPPED_KEYSET permet d'appliquer un nouvel algorithme de clé lors du rechiffrement.
Avant d'utiliser la fonction ROTATE_WRAPPED_KEYSET , assurez-vous que les conditions 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 la rubrique NEW_WRAPPED_KEYSET .Une clé KMS a été créée et l'ARN de la clé spécifié par le paramètre kms_cmk_arn a été obtenu. Un rôle RAM disposant des autorisations nécessaires pour utiliser la nouvelle clé a été configuré.
Syntaxe
binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]])
Paramètres
kms_cmk_arn : obligatoire. Ce paramètre indique l'ARN de la clé maître client (CMK) KMS que vous souhaitez utiliser pour rechiffrer le jeu de clés encapsulé. La valeur doit respecter le format suivant :
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. Remplacez<RegionId>par l'ID de la région,<UserId>par l'ID de l'utilisateur et<CmkId>par l'ID de la CMK. Vous pouvez obtenir cet ARN depuis la page des 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 doit suivre le format
'acs:ram:${<userAID>}:role/${<roleName>}'. Remplacez${<userAID>}par l'ID de l'utilisateur et${<roleName>}par le nom du rôle.wrapped_keyset : obligatoire. Ce paramètre correspond au jeu de clés encapsulé que vous souhaitez rechiffrer.
key_type : obligatoire. Ce paramètre définit le type d'algorithme de la clé dans le nouveau jeu de clés généré. Les valeurs valides sont : AES-GCM-256, AES-SIV-CMAC-128 et AES-SIV-CMAC-256.
description : facultatif. Ce paramètre permet d'ajouter une description à la clé.
-
role_chain : facultatif.
Ce paramètre spécifie la chaîne de rôles pour l'autorisation des utilisateurs. La valeur doit respecter le format suivant :
'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 across différents comptes Alibaba Cloud.
Valeur de retour
La fonction renvoie un jeu de clés encapsulé de type BINARY. Selon vos besoins métier, vous pouvez utiliser la fonction HEX pour convertir ce résultat binaire en une chaîne de caractères (type STRING). Pour plus d'informations sur la fonction HEX, consultez la rubrique HEX .
Exemples
Vous pouvez exécuter l'exemple de code ci-dessous tel quel dans l'éditeur de code, ou intégrer directement les variables dans l'instruction SQL. Notez que MaxCompute ne prend pas en charge la portée des variables entre plusieurs instructions SQL.
-
Rechiffrez 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')); -
Rechiffrez un jeu de clés encapsulé et autorisez d'autres rôles à l'utiliser.
@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));