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, reportez-vous à la section Chiffrement et déchiffrer des données avec une clé asymétrique. Pour en savoir plus sur les valeurs chiffrement symétrique, 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 dispose du rôle
cloudkms.cryptoKeyVersions.useToEncrypt
et Autorisationscloudkms.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 contenant 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 où vous souhaitez enregistrer le 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 encodé en base64 pour pouvoir être chiffrées par Cloud KMS.
Pour chiffrer des données, envoyez une requête POST
, et indiquez le projet et les identifiants appropriés
informations de clé et spécifier le texte encodé en base64 à chiffrer
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 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 contenant la clé.LOCATION
: emplacement Cloud KMS contenant la clé son anneau.FILE_TO_DECRYPT
: chemin d'accès au fichier que vous souhaitez déchiffrer.DECRYPTED_OUTPUT
: chemin d'accès où vous souhaitez enregistrer le 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
informations sur le projet et la clé, et 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 la clé son anneau.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.