Cette page explique comment utiliser Cloud Key Management Service (Cloud KMS) pour effectuer les opérations de clé symétrique suivantes:
- Chiffrer un texte ou un contenu binaire (texte brut) à l'aide d'une clé Cloud KMS
- Déchiffrer le texte chiffré avec une clé Cloud KMS
Si vous souhaitez utiliser une clé asymétrique pour le chiffrement, consultez la page Chiffrer et déchiffrer des données avec une clé asymétrique. Pour en savoir plus sur le chiffrement symétrique brut, consultez la page Chiffrement symétrique brut.
Avant de commencer
Assurez-vous que l'utilisateur qui appelle les méthodes de chiffrement et de déchiffrement détient les autorisations
cloudkms.cryptoKeyVersions.useToEncrypt
etcloudkms.cryptoKeyVersions.useToDecrypt
sur la clé.Pour autoriser un utilisateur à chiffrer ou déchiffrer des données à l'aide d'une clé, une méthode possible consiste à lui attribuer l'un des rôles IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
ouroles/cloudkms.cryptoKeyEncrypterDecrypter
pour cette clé. Le rôleroles/cloudkms.admin
ne fournit pas ces deux autorisations. Pour en savoir plus, consultez la section Autorisations et rôles.
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é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...", }
Étape suivante
- En savoir plus sur le chiffrement symétrique brut
- Consultez la section Chiffrement encapsulé.
- Essayez l'Atelier de programmation Cloud KMS : chiffrer et déchiffrer des données.