Crypter et décrypter les données avec Cloud KMS

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 vous le faites sur site. Il inclut la prise en charge du chiffrement, du déchiffrement, de la signature et de la vérification à l'aide de divers types et sources de clés, notamment Cloud HSM pour les clés basées sur le matériel. Ce tutoriel vous apprend à crypter et décrypter des données à l'aide de clés Cloud KMS symétriques.

Tu apprendras

  • Comment activer l'API Cloud KMS
  • Comment créer un porte-clés Cloud KMS
  • Comment créer une clé de chiffrement Cloud KMS pour un chiffrement / déchiffrement symétrique
  • Comment faire pivoter une clé de chiffrement Cloud KMS symétrique

Configuration de l'environnement à votre rythme

  1. Connectez-vous à Cloud Console et créez un nouveau projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou G Suite, vous devez en créer un .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglgNLJJhuXieCem56H30hgNLJJhuXieCem56H30hgNLJJhuXieCem56H30hgNLJJhuXieCem56H30hgNLJJhuXieCem56H30hgNLJJhuXieXiXw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdk7PLrs01aFxLGQdk

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZCAg2HMoK3o67jxuojUJgCAgNCNv6

N'oubliez pas l'ID de projet, un nom unique dans tous les projets Google Cloud (le nom ci-dessus a déjà été pris et ne fonctionnera pas pour vous, désolé!). Il sera désigné plus tard dans ce codelab sous le nom de PROJECT_ID .

  1. Ensuite, vous devrez activer la facturation dans Cloud Console pour utiliser les ressources Google Cloud.

Traverser ce codelab ne devrait pas coûter cher, voire pas du tout. Assurez-vous de suivre toutes les instructions de la section "Nettoyage" qui vous indique comment arrêter les ressources afin de ne pas engager de facturation au-delà de ce didacticiel. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier du programme d' essai gratuit de 300 USD .

Démarrez Cloud Shell

Dans ce codelab, vous utiliserez Cloud Shell , un environnement virtualisé gratuit fonctionnant sur Google Cloud. Dans la console GCP, cliquez sur l'icône Cloud Shell dans la barre d'outils en haut à droite:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZyskDnvXTWg4cZ4skDnvG11

Le provisionnement et la connexion à l'environnement ne devraient prendre que quelques instants. Quand c'est fini, vous devriez voir quelque chose comme ceci:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnp0viQfjfv9x2gEgDnpFmgyAtvueVue2g2gDnpFmgyAtvueVue2g2gDnpFmgyAtvuX2gDnp

Cette machine virtuelle est chargée de tous les outils de développement dont vous aurez besoin. Il offre un répertoire d'accueil persistant de 5 Go et fonctionne sur Google Cloud, améliorant considérablement les performances et l'authentification du réseau. Sauf indication contraire, exécutez toutes les commandes de ce shell.

Avant de pouvoir utiliser Cloud KMS, vous devez d'abord activer le service dans votre projet. Cela ne doit être fait qu'une 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 signalera le succès lorsqu'elle se terminera.

Créez un porte-clés Cloud KMS. Dans Cloud KMS, un porte-clés 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 porte my-keyring 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 le encryption à objectif à l'intérieur du my-symmetric-key de clés que vous venez de créer.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Créez un fichier avec des données à crypter et utilisez l'outil de ligne de commande gcloud pour crypter 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. C'est parce que les données résultantes 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 de codage courant est base64.

Cloud KMS ne stocke aucun des textes en clair 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.

Décryptez 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é du fichier et le déchiffre à l'aide de Cloud KMS. Notez que cet exemple spécifie l'argument --plaintext-file comme - . Cela demande à gcloud d'imprimer le résultat sur le terminal.

La console imprimera my-contents , qui est la même valeur en texte brut que le fichier ci-dessus.

Dans Cloud KMS, une clé cryptographique est en fait une collection de versions de clé cryptographique. Vous pouvez créer de nouvelles versions de clé cryptographique pour effectuer la rotation des clés . Cloud KMS peut également faire pivoter automatiquement les clés selon un calendrier .

Pour faire pivoter une clé manuellement, créez une nouvelle 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 demandes de chiffrement des 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 à spécifier la version de clé de chiffrement à utiliser pour le déchiffrement.

Pour éviter que les valeurs de texte chiffré chiffrées à l'aide d'une ancienne version de clé de chiffrement ne soient déchiffrées à l'aide de Cloud KMS, vous pouvez désactiver ou détruire cette version de clé de chiffrement. La désactivation est une opération réversible alors que la destruction est permanente. Pour désactiver une version:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

Vous avez activé l'API Cloud KMS, créé une clé de chiffrement symétrique et des données chiffrées et déchiffrées! Cloud KMS est un produit puissant et le chiffrement / déchiffrement ne fait qu'effleurer la surface de ses capacités.

Nettoyer

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. Cela planifie la suppression du projet.

Apprendre encore plus

Licence

Ce travail est concédé sous une licence générique Creative Commons Attribution 2.0.