Cette rubrique présente Cloud HSM et vous explique comment créer et utiliser des clés de chiffrement protégées par HSM dans le service Cloud Key Management Service.
Qu'est-ce que Cloud HSM ?
Cloud HSM est un service de module de sécurité matériel (HSM) hébergé dans le cloud qui vous permet d'héberger des clés de chiffrement et d'effectuer des opérations de cryptographie dans un cluster de modules HSM certifiés FIPS 140-2 niveau 3. Google gère automatiquement le cluster HSM. Vous n'avez donc pas à vous soucier du clustering, le scaling ou l'application de correctifs. Comme Cloud HSM utilise Cloud KMS vous bénéficiez des avantages et des fonctionnalités fournies par Cloud KMS.
Créer un trousseau de clés
Lorsque vous créez une clé, vous l'ajoutez à un trousseau dans un emplacement Google Cloud donné. Vous pouvez créer un trousseau de clés ou en utiliser un existant. Dans cette rubrique, vous allez créer un trousseau de clés et y ajouter une nouvelle clé.
Créez un trousseau de clés dans un emplacement Google Cloud compatible avec Cloud HSM.
Console
Accédez à la page Gestion des clés dans la console Google Cloud.
Cliquez sur Créer un trousseau.
Dans Nom du trousseau de clés, saisissez un nom pour votre trousseau de clés.
Sous Key ring location (Emplacement du trousseau), sélectionnez un emplacement tel que
"us-east1"
.Cliquez sur Créer.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
-
Dans votre environnement, exécutez la commande
gcloud kms keyrings create
:gcloud kms keyrings create KEY_RING \ --location LOCATION
Remplacez les éléments suivants :
KEY_RING
: nom du trousseau de clés contenant 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.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant le trousseau de clés.KEY_RING
: nom du trousseau de clés contenant la clé.LOCATION
: emplacement Cloud KMS du trousseau de clés
Pour plus d'informations, consultez la documentation de l'API KeyRing.create
.
Créer une clé
Suivez ces étapes pour créer une clé Cloud HSM dans le trousseau et l'emplacement spécifiés.
Console
Accédez à la page Gestion des clés dans la console Google Cloud.
Cliquez sur le nom du trousseau de clés pour lequel vous souhaitez créer une clé.
Cliquez sur Créer une clé.
Dans la section Quel type de clé souhaitez-vous créer ?, sélectionnez Clé générée.
Dans le champ Nom de la clé, saisissez le nom de votre clé.
Cliquez sur le menu déroulant Niveau de protection, puis sélectionnez HSM.
Cliquez sur la liste déroulante Objectif et sélectionnez Chiffrement/déchiffrement symétriques.
Acceptez les valeurs par défaut pour Rotation period (Période de rotation) et Starting on (Rotation à partir du).
Cliquez sur Créer.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par Installez la dernière version de Google Cloud CLI.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Remplacez key par le nom de la nouvelle clé. Remplacez key-ring par le nom du trousseau de clés existant où sera située 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.
Chiffrer des données
Maintenant que vous disposez d'une clé, vous pouvez vous en servir pour chiffrer un texte ou un contenu binaire.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par Installez la dernière version de Google Cloud CLI.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Remplacez key par le nom de la clé à utiliser pour le chiffrement. Remplacez key-ring par le nom du trousseau de clés où se trouve la clé. Remplacez location par l'emplacement Cloud KMS de l'élément et le trousseau de clés. Remplacez file-with-data-to-encrypt et file-to-store-encrypted-data par les chemins d'accès aux fichiers locaux pour la lecture des données en texte brut et l'enregistrement du résultat chiffré.
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-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Voici un exemple de charge utile avec des données encodées en base64 :
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Déchiffrer le texte chiffré
Pour déchiffrer le contenu chiffré, vous devez utiliser la même clé que celle qui a servi à chiffrer ce contenu.
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par Installez la dernière version de Google Cloud CLI.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Remplacez key par le nom de la clé à utiliser pour le déchiffrement. Remplacez key-ring par le nom du trousseau de clés où sera située la clé. Remplacez location par l'emplacement Cloud KMS du trousseau de clés. Remplacez file-path-with-encrypted-data et file-path-to-store-plaintext par les chemins d'accès aux fichiers locaux pour la lecture des données chiffrées et l'enregistrement du résultat déchiffré.
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é (cipher) à 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-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Voici un exemple de charge utile avec des données encodées en base64 :
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Étapes suivantes
L'exemple de chiffrement présenté dans cette rubrique utilisait une clé symétrique dotée du niveau de protection HSM. Pour chiffrer à l'aide d'une clé asymétrique présentant le niveau de protection HSM, suivez les étapes décrites dans la page Chiffrer et déchiffrer des données avec une clé asymétrique en y apportant les modifications suivantes :
- Créez le trousseau de clés dans l'une des régions disponibles pour Cloud HSM.
- Créez la clé avec le niveau de protection HSM.
Pour utiliser une clé asymétrique avec le niveau de protection HSM pour les attaques elliptiques ou RSA, suivez les étapes décrites dans Créer et valider signatures avec les modifications suivantes:
- Créez le trousseau de clés dans l'une des régions disponibles pour Cloud HSM.
- Créez la clé avec le niveau de protection HSM.
Commencez à utiliser l'API.
Consultez la documentation de référence sur l'API Cloud KMS.
Lisez les guides pratiques pour découvrir comment créer, alterner et paramétrer les autorisations sur les clés.
Familiarisez-vous avec les concepts pour mieux comprendre la hiérarchie des objets, les états clés et la rotation des clés.
Apprenez-en plus sur la journalisation dans Cloud KMS. Notez que la journalisation basée sur les opérations, et s'applique aux clés avec un HSM des niveaux de protection.
Découvrez comment Cloud HSM protège vos données dans le Livre blanc sur l'architecture de Cloud HSM.
Limitations connues
La taille du message est limitée à 8 Kio (contre 64 Kio pour les clés logicielles Cloud KMS) pour le texte brut et le texte chiffré fournis par l'utilisateur, y compris les données authentifiées supplémentaires.
Il est possible que Cloud HSM ne soit pas disponible dans certains emplacements multirégionaux ou birégionaux. Pour plus d'informations, consultez la section Régions disponibles pour Cloud HSM.
Si vous utilisez des clés Cloud HSM avec une clé de chiffrement gérée par le client (CMEK) dans d'autres services Google Cloud, les emplacements que vous utilisées pour les services doivent correspondre aux emplacements de vos instances clés. Cela s'applique aux emplacements régionaux, birégionaux et multirégionaux. emplacements.
Pour en savoir plus sur les intégrations de CMEK, consultez la section correspondante du document Chiffrement au repos.
Actuellement, les opérations de clés pour les clés asymétriques stockées dans Cloud HSM peut entraîner une latence nettement supérieure clés logicielles Cloud KMS.
Rack HSM Bare Metal
Google Cloud propose des options HSM supplémentaires, telles que la location unique. Bare Metal HSM permet aux clients d'héberger leurs propres HSM. dans l'espace fourni par Google. Renseignez-vous auprès de votre responsable de compte pour plus d'informations.