Cet article explique comment rechiffrer des données à l'aide d'une clé symétrique Cloud Key Management Service. Vous pouvez adapter ces exemples pour utiliser des clés asymétriques. Si vous suspectez une utilisation non autorisée d'une clé, vous devez rechiffrer les données protégées par celle-ci, puis désactiver la version de clé précédente ou programmer sa destruction.
Avant de commencer
Ce scénario nécessite que les conditions suivantes soient remplies :
Vous avez déjà chiffré des données à l'aide de Cloud KMS.
La version de clé utilisée pour le chiffrement n'est ni désactivée, ni programmée pour destruction, ni détruite. Vous l'utilisez pour déchiffrer les données.
Vous avez déjà réalisé une rotation des clés. La rotation de clés permet de créer une nouvelle version de clé principale. Vous utilisez cette nouvelle version pour rechiffrer les données.
Rechiffrer des données à l'aide de clés asymétriques
Les exemples de cette section montrent comment rechiffrer des données à l'aide d'une clé symétrique. Lorsque vous utilisez une clé symétrique, Cloud KMS déduit automatiquement la version de clé à utiliser pour le déchiffrement. Lorsque vous utilisez une clé asymétrique, vous devez spécifier la version de la clé.
- Lorsque vous suivez les instructions d'utilisation de Google Cloud CLI, incluez toujours l'option
--version
. - Lorsque vous suivez les instructions d'utilisation de l'API, vous utilisez
CryptoKeyVersions
au lieu deCryptoKeys
. Des informations supplémentaires sont disponibles sur le chiffrement et le déchiffrement des données avec une clé asymétrique.
Le workflow de rechiffrement de données avec des clés asymétriques est semblable à celui décrit dans cet article.
Workflow de rechiffrement de données
Suivez cette procédure pour rechiffrer des données, puis désactiver la version de clé utilisée pour le chiffrement d'origine ou programmer sa destruction.
Déchiffrer les données à l'aide de la version de clé précédente
Rechiffrer les données à l'aide de la nouvelle version de clé principale
Désactiver la version de clé précédente ou programmer sa destruction
Déchiffrer les données à l'aide de la version de clé précédente
Cloud KMS utilise automatiquement la bonne version de clé pour déchiffrer des données, tant que la version de clé n'est ni désactivée, ni programmée pour destruction, ni détruite. Les exemples suivants expliquent comment déchiffrer les données. Il s'agit du même code de déchiffrement que celui utilisé sur la page Chiffrer et déchiffrer.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour la dernière version de Google Cloud CLI.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Remplacez les éléments suivants :
KEY_NAME
: nom de la clé que vous souhaitez utiliser pour le déchiffrement.KEY_RING
: nom du trousseau de clés qui inclut la cléLOCATION
: emplacement Cloud KMS contenant le trousseau de clés.FILE_TO_DECRYPT
: chemin d'accès au fichier que vous souhaitez déchiffrer.DECRYPTED_OUTPUT
: chemin d'accès où vous souhaitez enregistrer la sortie déchiffrée.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Cloud KMS pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
API
Ces exemples utilisent curl comme client HTTP pour démontrer l'utilisation de l'API. Pour en savoir plus sur le contrôle des accès, consultez la page Accéder à l'API Cloud KMS.
Le texte déchiffré qui est renvoyé au format JSON depuis Cloud KMS est encodé en base64.
Pour déchiffrer des données chiffrées, effectuez une requête POST
et fournissez les informations de projet et de clé appropriées, puis spécifiez le texte chiffré (également appelé texte chiffré) à déchiffrer dans le champ ciphertext
du corps de la requête.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant le trousseau de clés et la clé que vous souhaitez utiliser pour le déchiffrement.LOCATION
: emplacement Cloud KMS contenant le trousseau de clés.KEY_RING
: trousseau de clés contenant la clé que vous souhaitez utiliser pour le déchiffrement.KEY_NAME
: nom de la clé que vous souhaitez utiliser pour le déchiffrement.ENCRYPTED_DATA
: données chiffrées que vous souhaitez déchiffrer.
Voici un exemple de charge utile avec des données encodées en base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Rechiffrer les données à l'aide de la nouvelle version de clé principale
Cloud KMS utilise automatiquement la nouvelle version de clé principale pour chiffrer les données. Les exemples suivants expliquent comment chiffrer les données. Il s'agit du même code de chiffrement que celui utilisé sur la page Chiffrer et déchiffrer.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour la dernière version de Google Cloud CLI.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Remplacez les éléments suivants :
KEY_NAME
: nom de la clé que vous souhaitez utiliser pour le chiffrement.KEY_RING
: nom du trousseau de clés qui inclut la cléLOCATION
: emplacement Cloud KMS contenant le trousseau de clés.FILE_TO_ENCRYPT
: chemin d'accès au fichier que vous souhaitez chiffrer.ENCRYPTED_OUTPUT
: chemin d'accès vers lequel vous souhaitez enregistrer la sortie chiffrée.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Cloud KMS pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
API
Ces exemples utilisent curl comme client HTTP pour démontrer l'utilisation de l'API. Pour en savoir plus sur le contrôle des accès, consultez la page Accéder à l'API Cloud KMS.
Lorsque vous utilisez JSON et l'API REST, le contenu doit être codé en base64 avant de pouvoir être chiffré par Cloud KMS.
Pour chiffrer des données, effectuez une requête POST
et fournissez les informations de projet et de clé appropriées, puis spécifiez le texte encodé en base64 à chiffrer dans le champ plaintext
du corps de la requête.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant le trousseau de clés et la clé que vous souhaitez utiliser pour le chiffrement.LOCATION
: emplacement Cloud KMS contenant le trousseau de clés.KEY_RING
: trousseau de clés contenant la clé que vous souhaitez utiliser pour le chiffrement.KEY_NAME
: nom de la clé que vous souhaitez utiliser pour le chiffrement.PLAINTEXT_TO_ENCRYPT
: données en texte brut que vous souhaitez chiffrer. Le texte brut doit être encodé en base64 avant d'appeler la méthodeencrypt
.
Voici un exemple de charge utile avec des données encodées en base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Désactiver la version de clé précédente ou programmer sa destruction
Si vous avez effectué une rotation des clés en réponse à une suspicion d'incident, vous devez désactiver la version de clé précédente ou programmer sa destruction une fois que vous avez rechiffré les données.
Désactiver une version de clé activée
Seule une version de clé activée peut être désactivée. Pour ce faire, exécutez la méthode UpdateCryptoKeyVersion
.
Console
Accédez à la page Gestion des clés dans la console Google Cloud.
Cliquez sur le nom du trousseau de clés contenant la clé dont vous souhaitez désactiver la version.
Cliquez sur la clé dont vous souhaitez désactiver la version.
Cochez l'option située à côté des versions de clé que vous souhaitez désactiver.
Cliquez sur Désactiver dans l'en-tête.
Dans l'invite de confirmation, cliquez sur Désactiver.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour la dernière version de Google Cloud CLI.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Remplacez key-version par la version de la clé à désactiver. Remplacez key par le nom de la clé. Remplacez key-ring par le nom du trousseau de clés où se trouve la clé. Remplacez location par l'emplacement Cloud KMS du trousseau de clés.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Cloud KMS pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
Programmer la destruction d'une version de clé
Seules les versions de clé activées ou désactivées peuvent être programmées pour destruction. Pour ce faire, exécutez la méthode DestroyCryptoKeyVersion
.
Console
Dans la console Google Cloud, accédez à la page Gestion des clés.
Cochez l'option située à côté de la version de clé dont vous souhaitez programmer la destruction.
Cliquez sur Détruire dans l'en-tête.
Dans l'invite de confirmation, saisissez le nom de la clé, puis cliquez sur Programmer la destruction.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour la dernière version de Google Cloud CLI.
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Remplacez les éléments suivants :
KEY_VERSION
: numéro de version de la clé que vous souhaitez détruire.KEY_NAME
: nom de la clé pour laquelle vous souhaitez détruire une version de clé.KEY_RING
: nom du trousseau de clés qui inclut la cléLOCATION
: emplacement Cloud KMS du trousseau de clés.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Cloud KMS pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
API
Ces exemples utilisent curl comme client HTTP pour démontrer l'utilisation de l'API. Pour en savoir plus sur le contrôle des accès, consultez la page Accéder à l'API Cloud KMS.
Détruisez une version de clé en appelant la méthode CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"