1. Présentation
Cloud KMS est un service de gestion de clés hébergé dans le cloud qui vous permet de gérer les clés cryptographiques de vos services cloud de la même manière que sur site. Il inclut la prise en charge du chiffrement, du déchiffrement, de la signature et de la validation à l'aide de différents types et sources de clés, y compris Cloud HSM pour les clés avec support matériel. Ce tutoriel explique comment chiffrer et déchiffrer des données à l'aide de clés Cloud KMS symétriques.
Ce que vous allez apprendre
- Activer l'API Cloud KMS
- Créer un trousseau de clés Cloud KMS
- Créer une clé cryptographique Cloud KMS pour le chiffrement/déchiffrement symétrique
- Effectuer la rotation d'une clé cryptographique Cloud KMS symétrique
2. Préparation
Configuration de l'environnement d'auto-formation
- Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous n'avez pas encore de compte Gmail ou G Suite, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Dans cet atelier de programmation, vous allez utiliser Cloud Shell, un environnement virtualisé sans frais exécuté sur Google Cloud. Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Sauf indication contraire, exécutez toutes les commandes à partir de ce shell.
3. Activer le service Cloud KMS
Avant de pouvoir utiliser Cloud KMS, vous devez d'abord activer le service dans votre projet. Vous n'aurez à le faire qu'une seule fois par projet. Pour activer le service Cloud KMS, exécutez la commande suivante :
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
L'activation peut prendre jusqu'à une minute. La commande indiquera qu'elle a réussi une fois terminée.
4. Créer une clé KMS
Créez un trousseau de clés Cloud KMS. Dans Cloud KMS, un trousseau de clés est un ensemble logique de clés cryptographiques. Le trousseau de clés contient des métadonnées sur les clés, telles que leur emplacement. Créez un trousseau de clés nommé my-keyring dans la région global :
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Créez ensuite une clé de chiffrement nommée my-symmetric-key avec l'objectif encryption dans le trousseau de clés que vous venez de créer.
$ gcloud kms keys create "my-symmetric-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "encryption"
5. Chiffrer les données
Créez un fichier contenant les données à chiffrer, puis utilisez l'outil de ligne de commande gcloud pour chiffrer les données du fichier :
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file ./data.txt \
--ciphertext-file ./data.txt.enc
Les données chiffrées (également appelées "texte chiffré") sont enregistrées dans data.txt.enc sur le disque. Si vous ouvrez le fichier data.txt.enc, vous remarquerez qu'il contient des caractères étranges et non imprimables. En effet, les données obtenues sont au format binaire.
Lorsque vous stockez le texte chiffré dans une base de données ou que vous le transmettez dans une requête HTTP, vous devrez peut-être encoder les données. L'encodage base64 est un mécanisme d'encodage courant.
Cloud KMS ne stocke aucune des données en texte brut que vous fournissez. Vous devez enregistrer ce texte chiffré dans un emplacement sécurisé, car il sera nécessaire pour récupérer la valeur en texte brut.
6. Déchiffrer des données
Déchiffrez le texte chiffré du fichier à l'aide de l'outil de ligne de commande gcloud :
$ gcloud kms decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
L'outil de ligne de commande gcloud lit le texte chiffré à partir du fichier et le déchiffre à l'aide de Cloud KMS. Notez que cet exemple spécifie l'argument --plaintext-file comme -. Cette instruction indique à gcloud d'imprimer le résultat dans le terminal.
La console affichera my-contents, qui correspond à la même valeur en texte brut que celle du fichier ci-dessus.
7. Rotation des clés
Dans Cloud KMS, une clé cryptographique est en fait un ensemble de versions de clés cryptographiques. Vous pouvez créer des versions de clés cryptographiques pour effectuer une rotation de clé. Cloud KMS peut également effectuer automatiquement la rotation des clés selon un calendrier.
Pour effectuer une rotation manuelle d'une clé, créez une version de clé de chiffrement et définissez-la comme version principale :
$ gcloud kms keys versions create \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--primary
Toutes les futures demandes de chiffrement des données utiliseront cette nouvelle clé. Les anciennes clés restent disponibles pour déchiffrer les données qui ont été chiffrées avec ces clés. Cloud KMS détermine automatiquement la clé de déchiffrement appropriée en fonction du texte chiffré fourni. Vous n'avez pas à spécifier la version de clé cryptographique à utiliser pour le déchiffrement.
Pour empêcher le déchiffrement des valeurs de texte chiffré qui ont été chiffrées à l'aide d'une ancienne version de clé cryptographique avec Cloud KMS, vous pouvez désactiver ou détruire cette version de clé cryptographique. La désactivation est une opération réversible, contrairement à la destruction. Pour désactiver une version :
$ gcloud kms keys versions disable "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key"
8. Félicitations !
Vous avez activé l'API Cloud KMS, créé une clé de chiffrement symétrique, et chiffré et déchiffré des données. Cloud KMS est un produit puissant, et le chiffrement/déchiffrement ne représente qu'une infime partie de ses capacités.
Nettoyage
Si vous avez terminé l'exploration, pensez à supprimer votre projet.
- Accédez à la console Cloud Platform.
- Sélectionnez le projet que vous souhaitez arrêter, puis cliquez sur "Supprimer" en haut de la page. Cette opération programme la suppression du projet.
En savoir plus
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.