Chiffrer et déchiffrer des données avec Cloud KMS

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 explique comment chiffrer et déchiffrer des données à l'aide de clés Cloud KMS symétriques.

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
  • Procéder à la rotation d'une clé cryptographique Cloud KMS symétrique

2. Préparation

Configuration de l'environnement d'auto-formation

  1. 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.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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 :

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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-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 et chiffrez les données contenues dans le fichier à l'aide de l'outil de ligne de commande gcloud:

$ 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 le dossier 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. Un mécanisme d'encodage courant est le format 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

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 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. Rotation des clés

Dans Cloud KMS, une clé cryptographique est en réalité un ensemble de versions de clé cryptographique. Vous pouvez créer des versions de clé cryptographique pour effectuer une rotation des clés. Cloud KMS peut également procéder à une rotation automatique des clés de façon planifiée.

Pour alterner une clé manuellement, créez une autre version de clé cryptographique 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 requêtes de chiffrement de données utiliseront cette nouvelle clé. Les anciennes clés sont toujours disponibles pour déchiffrer les données précédemment chiffrées à l'aide de 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 besoin de spécifier la version de clé cryptographique à utiliser pour le déchiffrement.

Pour empêcher le déchiffrement des valeurs en texte chiffré à l'aide d'une ancienne version de clé cryptographique à l'aide de Cloud KMS, vous pouvez désactiver ou détruire cette version. La désactivation est une opération réversible, tandis que la destruction est définitive. 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 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.