Utilisez MaxCompute avec Key Management Service (KMS) pour gérer vos 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 de chiffrer les données avec une nouvelle clé.
Contexte et prérequis
L'intégration de MaxCompute avec KMS permet une gestion centralisée des clés. Générez un jeu de clés encapsulé en chiffrant un jeu de clés à l'aide d'une clé KMS. La fonction ROTATE_WRAPPED_KEYSET rechiffre un jeu de clés encapsulé, initialement créé via la fonction NEW_WRAPPED_KEYSET, en utilisant une nouvelle clé KMS et un nouvel algorithme de clé. Contrairement à la fonction REWRAP_KEYSET, ROTATE_WRAPPED_KEYSET permet de modifier l'algorithme de chiffrement lors du rechiffrement.
Avant d'utiliser la fonction ROTATE_WRAPPED_KEYSET, vérifiez que les conditions suivantes sont réunies :
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é récupéré. 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. Spécifie l'ARN de la clé maître cliente (CMK) KMS utilisée pour rechiffrer le jeu de clés encapsulé. Le format attendu est
'acs:kms:<RegionId>:<UserId>:key/<CmkId>', oùRegionIdcorrespond à l'ID de la région,UserIdà l'ID de l'utilisateur etCmkIdà l'ID de la CMK. Obtenez cet ARN depuis la page Key Details dans la console KMS.role_arn : obligatoire. Indique l'ARN du rôle RAM autorisé à accéder aux anciennes et nouvelles clés KMS. Le format est le suivant :
'acs:ram:${<userAID>}:role/${<roleName>}', oùuserAIDreprésente l'ID de l'utilisateur etroleNamele nom du rôle.wrapped_keyset : obligatoire. Désigne le jeu de clés encapsulé que vous souhaitez rechiffrer.
key_type : obligatoire. 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. Ajoute une description à la clé.
role_chain : facultatif. Spécifie la chaîne de rôles pour l'autorisation des utilisateurs. Le format attendu est
'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
La fonction renvoie un jeu de clés encapsulé de type BINARY. Si nécessaire, convertissez ce résultat en type STRING à l'aide de la fonction HEX. Pour plus de détails sur cette fonction, consultez la rubrique HEX.
Exemples
Exécutez le code exemple ci-dessous tel quel dans l'éditeur de code, ou intégrez directement les variables dans l'instruction SQL. Notez que MaxCompute ne prend pas en charge les portées de variables s'étendant sur plusieurs instructions SQL.
-
Rechiffrement 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>'); select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world')); -
Rechiffrement d'un jeu de clés encapsulé avec autorisation d'appel pour d'autres rôles.
@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));