1. Introduction
Cloud KMS Autokey simplifie la création et l'utilisation des clés de chiffrement gérées par le client (CMEK) en automatisant le provisionnement et l'attribution. Avec Autokey, vous n'avez pas besoin de planifier et de provisionner vos trousseaux de clés, vos clés et vos comptes de service avant d'en avoir besoin. Au lieu de cela, Autokey génère vos clés à la demande lorsque vos ressources sont créées, en s'appuyant sur des autorisations déléguées au lieu des administrateurs Cloud KMS.
L'utilisation de clés générées par la fonction de clé automatique peut vous aider à vous conformer aux normes du secteur et aux pratiques recommandées en matière de sécurité des données, y compris le niveau de protection HSM, la séparation des tâches, la rotation des clés, l'emplacement et la spécificité des clés. La clé automatique crée des clés qui suivent les consignes générales et celles spécifiques au type de ressource pour les services Google Cloud qui s'intègrent à la clé automatique Cloud KMS. Une fois créées, les clés demandées à l'aide d'Autokey fonctionnent de la même manière que les autres clés Cloud HSM avec les mêmes paramètres.
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez lancer des ressources protégées à l'aide de Cloud KMS Autokey en créant :
- une ressource de dossier.
- un projet qui contiendra vos clés.
- un agent de service pour agir en tant qu'assistant de gestion des clés.
- un projet qui hébergera vos ressources protégées.
- Ensembles de données BigQuery, disques persistants et buckets Cloud Storage chiffrés avec une clé automatique Cloud KMS
Prérequis
- Organisation Google Cloud
- Pour effectuer cet atelier, votre principal Google Cloud doit disposer des rôles suivants au niveau de l'organisation :
- Administrateur Cloud KMS Autokey (roles/cloudkms.autokeyAdmin)
- Administrateur IAM de dossier (roles/resourcemanager.folderIamAdmin)
- Utilisateur de compte de facturation (roles/billing.user)
- Projets Google Cloud avec facturation activée
- Expérience Linux de base
2. Créer un dossier
Les dossiers sont des nœuds dans la hiérarchie des ressources Cloud Platform. Un dossier peut contenir des projets, d'autres dossiers ou une combinaison des deux. Les ressources d'organisation peuvent utiliser des dossiers pour regrouper des projets sous le nœud de ressource d'organisation dans une hiérarchie. Pour créer un dossier, procédez comme suit :
- Accédez à la page Gérer les ressources de la console Google Cloud.
- Assurez-vous que le nom de votre ressource Organisation est sélectionné dans la liste déroulante de l'organisation en haut de la page.
- Cliquez sur "Créer un dossier".

- Sélectionner un dossier standard

- Dans le champ "Nom du dossier", saisissez le nom de votre nouveau dossier. Pour cet atelier, choisissez "Autokey-Folder".
- Sous "Destination", cliquez sur "Parcourir", puis sélectionnez la ressource ou le dossier de l'organisation sous lequel vous souhaitez créer votre dossier.
- Cliquez sur Créer.
3. Créer un projet de ressources
Il est important de créer un projet de ressources pour contenir les ressources (ensembles de données BigQuery, disques persistants et buckets Cloud Storage, par exemple) que vous souhaitez chiffrer avec Cloud KMS Autokey. Si vous essayez de créer des ressources protégées par Autokey dans le projet de clés, Autokey refuse la demande de nouvelle clé. Pour créer le projet de ressources :
- Accédez à la page Gérer les ressources de la console Google Cloud.
- Cliquez sur Créer un projet.

- Dans la liste déroulante "Sélectionner une organisation" en haut de la page, sélectionnez le dossier "Autokey-Folder".
- Dans la fenêtre Nouveau projet qui s'affiche, saisissez un nom de projet, puis sélectionnez un compte de facturation si nécessaire. Pour cet atelier, choisissez "Autokey Encrypted Resources".
- Dans la zone "Emplacement", sélectionnez le dossier "Autokey-Folder". Cette ressource sera le parent hiérarchique du nouveau projet. Vos paramètres doivent ressembler à ceci :

- Copiez l'ID du projet (dans l'exemple ci-dessus, il s'agit de "causal-hour-43319-m4", mais le vôtre sera différent) dans l'éditeur de texte de votre choix.
- Cliquez sur "Créer".
- Sélectionnez l'icône Cloud Shell en haut à droite de l'écran.

- Une fois Cloud Shell actif, enregistrez votre ID de projet Autokey en tant que variable en exécutant la commande suivante :
export RESOURCE_PROJECT=<paste your Resource Project ID>
Comme l'ID de mon projet est "key-management-433319", ma commande se présente comme suit :
export AUTOKEY_PROJECT=causal-hour-43319-m4
- Exécutez la commande suivante pour exécuter des commandes à partir de votre projet clé :
gcloud config set project $RESOURCE_PROJECT
Lorsque vous y êtes invité, autorisez Cloud Shell en cliquant sur "Autoriser".

- Étant donné que ce projet contiendra des ressources, nous devons activer les API pour les services qu'Autokey protégera. Exécutez la commande suivante :
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
4. Créer un projet Key
Nous vous recommandons de créer un projet pour contenir les ressources Cloud KMS créées par Autokey. Nous l'appellerons "projet clé" par la suite. Le projet de clé peut être créé dans le même dossier où vous prévoyez d'activer Autokey. Vous ne devez pas créer d'autres ressources dans le projet de clé. Si vous essayez de créer des ressources protégées par Autokey dans le projet de clés, Autokey refuse la demande de nouvelle clé. Pour créer le projet de clé :
- Accédez à la page Gérer les ressources de la console Google Cloud.
- Cliquez sur Créer un projet.

- Dans la liste déroulante "Sélectionner une organisation" en haut de la page, sélectionnez le dossier "Autokey-Folder".
- Dans la fenêtre Nouveau projet qui s'affiche, saisissez un nom de projet, puis sélectionnez un compte de facturation si nécessaire. Pour cet atelier, sélectionnez "Gestion des clés".
- Dans la zone "Emplacement", sélectionnez le dossier "Autokey-Folder". Cette ressource sera le parent hiérarchique du nouveau projet. Vos paramètres doivent ressembler à ceci :

- Copiez l'ID du projet (dans l'exemple ci-dessus, il s'agit de "key-management-433319", mais le vôtre sera différent) dans l'éditeur de texte de votre choix.
- Cliquez sur Créer.
5. Préparer le projet de clé Autokey
Maintenant que chaque projet est créé, il est temps de configurer le projet de clés pour utiliser Cloud KMS Autokey.
- Sélectionnez l'icône Cloud Shell en haut à droite de l'écran.

- Une fois Cloud Shell actif, enregistrez votre ID de projet Autokey en tant que variable en exécutant la commande suivante :
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
Comme l'ID de mon projet est "key-management-433319", ma commande se présente comme suit :
export AUTOKEY_PROJECT=key-management-433319
- Exécutez la commande suivante pour exécuter des commandes à partir de votre projet clé :
gcloud config set project $AUTOKEY_PROJECT
Lorsque vous y êtes invité, autorisez Cloud Shell en cliquant sur "Autoriser".

- Activez l'API Cloud KMS en exécutant la commande suivante :
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- Exécutez la commande suivante pour enregistrer le numéro de votre projet en tant que variable nommée AUTOKEY_PROJECT_NUMBER.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- Enregistrez l'adresse e-mail de votre principal en tant que variable en exécutant la commande suivante :
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- Accorder des autorisations d'administrateur Cloud KMS sur le projet de clés à vos utilisateurs administrateurs Cloud KMS
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
6. Configurer les agents de service Cloud KMS
L'agent de service Cloud KMS d'un projet de clés crée des clés et applique des liaisons de stratégie IAM lors de la création de ressources, au nom d'un administrateur Cloud KMS humain. Pour pouvoir créer et attribuer des clés, l'agent de service Cloud KMS doit disposer des autorisations d'administrateur Cloud KMS.
- Recherchez l'ID de l'organisation à l'aide de la commande suivante :
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- Copiez l'ID d'organisation (le résultat numérique mis en évidence en rouge).
- Enregistrez l'ID de l'organisation en tant que variable nommée ORG_ID :
export ORG_ID=<paste your Organization ID>
- Créez l'agent de service Cloud KMS en exécutant la commande suivante :
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- Attribuez le rôle Administrateur Cloud KMS à l'agent de service :
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- Ajoutez une liaison de stratégie IAM pour pouvoir afficher l'utilisation de votre clé Cloud KMS. L'utilisation des clés fournit des informations pour chaque clé, y compris le nombre de ressources et de projets protégés, ainsi que le nombre de produits Google Cloud uniques qui utilisent la clé. Ce niveau de détail est disponible pour toute personne disposant du rôle Lecteur Cloud KMS sur la clé. Exécutez la commande suivante :
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Accordez à votre compte de service Cloud KMS le rôle Agent de service d'organisation Cloud KMS (cloudkms.orgServiceAgent) sur la ressource de votre organisation.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Attribuez le rôle "Lecteur de ressources protégées Cloud KMS" à la ressource de votre organisation pour toute personne ayant besoin de consulter les détails de l'utilisation des clés.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
7. Attribuer des rôles utilisateur Autokey
Avant que vos développeurs puissent utiliser Autokey, vous devez leur attribuer le rôle requis. Vous pouvez attribuer ce rôle au niveau du dossier ou du projet. Ce rôle permet aux développeurs de demander des clés à l'agent de service Cloud KMS lorsqu'ils créent des ressources dans ce dossier ou projet.
La première étape pour accorder le rôle consiste à enregistrer l'ID du dossier.
- Recherchez l'ID du dossier à l'aide de la commande suivante :
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- Copiez l'ID du dossier (la partie en rouge).
- Enregistrez l'ID du dossier en tant que variable nommée FOLDER_ID.
export FOLDER_ID=<paste the folder ID>
Pour les besoins de cet atelier, nous allons définir l'administrateur de clés comme l'utilisateur Autokey. Toutefois, dans les cas d'utilisation en production et dans les organisations comptant plusieurs personnes, l'administrateur de clés doit être différent du développeur utilisant Autokey.
- Attribuez le rôle roles/cloudkms.autokeyUser au niveau du dossier :
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
8. Activer Cloud KMS Autokey dans un dossier de ressources
Dans cette étape, vous allez activer Cloud KMS Autokey sur un dossier de ressources et identifier le projet Cloud KMS qui contiendra les ressources Autokey pour ce dossier. L'activation d'Autokey dans ce dossier l'active pour tous les projets de ressources qu'il contient.
- Dans la console Google Cloud, accédez à la page Contrôles KMS.
- Cliquez sur "Sélectionner un dossier".

- Dans le sélecteur de contexte, sélectionnez le dossier dans lequel vous souhaitez activer Autokey. Il s'agit du dossier que vous avez créé précédemment et qui contient votre projet de ressources et le projet de gestion des clés. Elle devrait se présenter comme ceci :

- Cliquez sur "Enable" (Activer).
- Cliquez sur "Parcourir" pour sélectionner le projet clé.
- Sélectionnez votre projet de gestion des clés, puis cliquez sur "Envoyer".

Un message confirme que Cloud KMS Autokey est activé dans le dossier. La page "Contrôles KMS" devrait se présenter comme suit :

9. Créer des ressources protégées à l'aide d'Autokey Cloud KMS
Disques persistants Compute Engine
Autokey crée une clé pour chaque disque, image et image de machine au même emplacement que la ressource en cours de création.
Pour créer un disque, procédez comme suit :
- Dans la console Google Cloud, accédez à la page Disques.
- Cliquez sur "Créer un disque" et saisissez les propriétés du nouveau disque.
- Sous "Chiffrement", sélectionnez "Clé Cloud KMS".

- Pour le type de clé, sélectionnez "Cloud KMS avec clé automatique", puis cliquez sur "Demander une nouvelle clé". Un message indique quand votre clé a été créée et est prête à être utilisée.

- Pour terminer la création du disque, cliquez sur "Créer".
Vous pouvez suivre une procédure similaire pour créer des ressources d'instances de VM, d'images et d'images système protégées.
Buckets Google Cloud Storage
Autokey crée une clé au même emplacement que le bucket. La clé créée par Autokey est attribuée comme clé par défaut du bucket.
Autokey ne crée pas de clés pour les objets. Par défaut, les objets créés dans un bucket utilisent la clé par défaut du bucket. Si vous souhaitez chiffrer un objet à l'aide d'une clé autre que la clé par défaut du bucket, vous pouvez créer manuellement une clé CMEK et l'utiliser lors de la création de l'objet.
- Dans la console Google Cloud, accédez à la page Créer un bucket.
- Choisissez un nom permanent et unique au monde.
- Choisissez un emplacement pour les données.
- Accédez à la section "Choisissez comment protéger les données des objets".

- Cliquez sur "Choisissez comment protéger les données des objets" pour développer la section.

- Développez la section "Chiffrement des données", puis sélectionnez "Clé Cloud KMS".

- Pour le type de clé, sélectionnez "Cloud KMS avec clé automatique", puis cliquez sur "Demander une nouvelle clé". Un message indique quand votre clé a été créée et est prête à être utilisée.

- Pour terminer la création du bucket, cliquez sur "Créer". Si une boîte de dialogue s'affiche pour vous expliquer que "L'accès public sera bloqué", cliquez sur "Confirmer".
Ensemble de données BigQuery
Pour chaque nouvel ensemble de données, Autokey crée une clé dans le même emplacement que la ressource elle-même, qui devient la clé par défaut de l'ensemble de données. Autokey ne crée pas de clés pour les tables, les requêtes, les tables temporaires ni les modèles. Par défaut, ces ressources sont protégées par la clé par défaut de l'ensemble de données. Si vous souhaitez protéger une ressource dans un ensemble de données à l'aide d'une clé autre que la clé par défaut de l'ensemble de données, vous pouvez créer manuellement une clé CMEK et l'utiliser lors de la création de la ressource.
Pour créer un ensemble de données BigQuery, vous devez d'abord disposer du rôle "Utilisateur BigQuery".
- Revenir à Cloud Shell
- Configurez Cloud Shell pour exécuter des commandes à partir du projet de ressources
gcloud config set project $RESOURCE_PROJECT
- Exécutez la commande suivante pour enregistrer le numéro de votre projet en tant que variable nommée RESOURCE_PROJECT_NUMBER.
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- Attribuez-vous le rôle Utilisateur BigQuery.
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
Maintenant que vous disposez du rôle Utilisateur BigQuery, vous pouvez créer un ensemble de données et le protéger avec Autokey.
- Dans la console Google Cloud, accédez à la page "BigQuery".
- Suivez les instructions pour créer un ensemble de données jusqu'à atteindre Options avancées > Chiffrement.
- Sous "Chiffrement", sélectionnez "Clé Cloud KMS".
- Pour le type de clé, sélectionnez "Cloud KMS avec clé automatique", puis cliquez sur "Demander une nouvelle clé". Un message indique quand votre clé a été créée et est prête à être utilisée.
- Pour terminer la création de l'ensemble de données, cliquez sur "Créer un ensemble de données".
10. Explorer vos clés
Dans cette étape, vous allez explorer les clés créées en votre nom par Cloud KMS Autokey en accédant à la page "Inventaire des clés". La page "Inventaire des clés" fournit des informations complètes sur les clés cryptographiques de votre projet. Notez que les données peuvent être retardées. Par exemple, si vous créez une ressource protégée, la ressource protégée et la version de clé associée ne sont pas immédiatement ajoutées à l'onglet "Suivi de l'utilisation". Pour en savoir plus sur les limites, cliquez ici.
- Dans la console Google Cloud, accédez à la page Inventaire des clés.
- Facultatif : Pour filtrer la liste des clés, saisissez vos termes de recherche dans la zone de filtre filter_list, puis appuyez sur Entrée. Par exemple, vous pouvez filtrer par emplacement, trousseau de clés, état ou autres propriétés des clés.
- Cliquez sur le nom de la clé pour laquelle vous souhaitez afficher des informations sur l'utilisation.
- Cliquez sur "Vue d'ensemble". Notez que vous disposez d'une clé par ressource créée. Chaque nom de clé inclut le nom de la ressource que la clé protège (par exemple, "compute-disk" ou "storage-bucket"). Cloud KMS Autokey garantit que la rotation de chaque clé est planifiée 365 jours après sa création et que le niveau de protection "HSM" est attribué à chaque clé.

- Cliquez sur l'onglet "Suivi de l'utilisation". Notez le niveau d'informations présenté : chaque ressource chiffrée par la clé est indiquée ici, ainsi que le projet, l'emplacement et la date de création.
- Facultatif : Pour filtrer la liste des ressources protégées, saisissez vos termes de recherche dans la zone de filtre filter_list, puis appuyez sur Entrée.

11. Félicitations
Félicitations ! Vous avez créé des ressources Google Cloud et les avez chiffrées automatiquement à la demande avec Cloud KMS Autokey.
Vous connaissez désormais les principales étapes nécessaires pour configurer Autokey et l'utiliser afin de chiffrer automatiquement vos ressources avec des clés Cloud KMS.
12. Étape suivante
Importer des données dans vos ressources chiffrées avec Autokey
- Créer une instance Google Compute Engine (GCE)
- Associer votre disque persistant protégé par Autokey à votre instance GCE
- Importer des données dans votre ensemble de données BigQuery
- Importer des objets dans un bucket Google Cloud Storage
- Charger des données Google Cloud Storage dans BigQuery