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 pour vos services cloud de la même manière que sur site. Elle prend en charge les opérations de chiffrement, de déchiffrement, de signature et de validation à l'aide de différents types de clés et sources, y compris Cloud HSM pour les clés intégrées au matériel. Ce tutoriel vous explique comment chiffrer et déchiffrer des données à l'aide de clés Cloud KMS asymétriques.
Vous allez apprendre
- Activer l'API Cloud KMS
- Comment créer un trousseau de clés ?
- Créer une clé cryptographique pour le chiffrement/déchiffrement asymé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 gratuite. 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 gratuit 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 activer le service dans votre projet. Cette opération ne doit être effectuée 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. Une fois l'opération terminée, la commande indiquera une opération réussie.
4. Créer une clé KMS
Créer un trousseau de clés Cloud KMS Dans Cloud KMS, un trousseau est une collection 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 maintenant une clé cryptographique nommée my-asymmetric-encryption-key
avec l'objectif asymmetric-encryption
dans le trousseau de clés que vous venez de créer.
$ gcloud kms keys create "my-asymmetric-encryption-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. Chiffrer les données
Avec les clés asymétriques, Cloud KMS n'effectue pas le chiffrement. Au lieu de cela, il donne accès à une clé publique, et vous chiffrez les données à l'aide de cette clé publique via la cryptographie à clé publique. Avec les clés asymétriques, le chiffrement peut être effectué hors connexion et ne nécessite aucun accès à Cloud KMS ni à aucune autre API Google Cloud. Le chiffrement s'effectue à l'aide d'un outil cryptographique tel que openssl
, ou d'un langage de programmation ou d'une bibliothèque compatible avec la cryptographie à clé publique.
Téléchargez la clé publique à partir de Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --output-file ./key.pub
Créez un fichier contenant les données à chiffrer et chiffrez les données contenues dans le fichier à l'aide de l'outil de ligne de commande openssl
:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \ -in ./data.txt \ -inkey ./key.pub \ -pkeyopt "rsa_padding_mode:oaep" \ -pkeyopt "rsa_oaep_md:sha512" \ -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
Les données chiffrées (également appelées "texte chiffré") seront 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.
Lors du stockage du texte chiffré dans une base de données ou de sa transmission dans le cadre d'une requête HTTP, vous devrez peut-être encoder les données. Le mécanisme d'encodage le plus courant pour le texte chiffré est le base64.
Cloud KMS ne stocke pas le 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 les données
Contrairement au chiffrement, le déchiffrement des données chiffrées à l'aide d'une clé Cloud KMS asymétrique nécessite un accès en ligne au service Cloud KMS. Déchiffrez le texte chiffré du fichier à l'aide de l'outil de ligne de commande gcloud
:
$ gcloud kms asymmetric-decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --version "1" \ --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
en tant que -
. Cette commande indique à gcloud
d'imprimer le résultat sur le terminal.
La console affichera my-contents
, qui est la même valeur en texte brut que dans le fichier ci-dessus.
7. Félicitations !
Vous avez activé l'API Cloud KMS, créé une clé de chiffrement asymétrique, et chiffré et déchiffré des données. Cloud KMS est un produit puissant dont les fonctionnalités de chiffrement/déchiffrement ne font qu'effleurer la surface.
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. 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.