Activer Cloud KMS Autokey

Ce document vous explique comment activer et configurer Cloud KMS Autokey à l'aide de la console Google Cloud , de Google Cloud CLI, de l'API Cloud KMS ou de Terraform. Vous pouvez activer Autokey avec le stockage des clés dans un projet dédié pour un dossier, ou activer Autokey avec le stockage des clés dans le même projet pour un projet individuel ou pour tous les projets d'un dossier. Pour en savoir plus sur Autokey, consultez Présentation d'Autokey.

Ce document s'adresse aux administrateurs.

Héritage de la configuration Autokey

Lorsque vous configurez Autokey sur un dossier, les dossiers et projets enfants de ce dossier héritent de la configuration Autokey de leur dossier parent. Lorsque vous configurez Autokey sur un dossier ou un projet enfant, vous décidez d'hériter ou non de la configuration de la ressource parente ou de créer une configuration Autokey pour cette ressource. Les configurations Autokey appliquées aux ressources enfants remplacent la configuration du dossier parent.

Le tableau suivant présente les cas d'utilisation de la configuration Autokey compatibles :

Type de ressource Configuration d'Autokey Description
Organisation Non applicable Autokey ne peut pas être activé pour les organisations. Les ressources enfants d'une organisation héritent d'une ressource AutokeyConfig vide. Dans la console Google Cloud , ces ressources affichent un État Autokey Non activé. Si vous souhaitez restreindre l'utilisation d'Autokey dans votre organisation ou la désactiver complètement, vous pouvez utiliser des règles d'administration. Pour en savoir plus, consultez Contrôler l'utilisation d'Autokey.
Dossier DEDICATED_KEY_PROJECT Autokey avec stockage des clés dans un projet dédié est activé pour les projets de ressources du dossier. Pour les projets de ressources qui héritent de cette configuration, Autokey crée des clés dans le projet de clés dédié.
Dossier RESOURCE_PROJECT Autokey avec stockage des clés dans le même projet est activé pour les projets de ressources du dossier. Pour les projets de ressources qui héritent de cette configuration, Autokey crée des clés dans le même projet que les ressources qu'elles protègent.
Dossier DISABLED Autokey est désactivé dans le dossier. Toutefois, les dossiers et projets enfants peuvent toujours remplacer cette configuration. Si vous souhaitez restreindre Autokey dans votre dossier ou le désactiver complètement, vous pouvez utiliser des règles d'administration. Pour en savoir plus, consultez Contrôler l'utilisation d'Autokey.
Dossier KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED Le dossier hérite de la configuration Autokey de son dossier ou de son organisation parents.
Projet RESOURCE_PROJECT Autokey avec stockage des clés dans le même projet est activé pour le projet de ressources. Pour les ressources créées dans ce projet, Autokey crée des clés dans le même projet.
Projet DISABLED Autokey est désactivé pour le projet de ressources. Les développeurs qui créent des ressources dans ce projet doivent créer et provisionner manuellement des clés s'ils souhaitent utiliser CMEK pour les ressources qu'ils créent.
Projet KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED Le projet hérite de la configuration Autokey de son dossier parent.

Avant de commencer

Pour pouvoir activer Autokey avec le stockage des clés dans un projet dédié pour un dossier, vous devez disposer des éléments suivants :

  • Ressource d'organisation contenant un dossier dans lequel vous souhaitez activer Autokey. Si vous ne disposez pas d'un dossier dans lequel vous souhaitez activer Autokey, vous pouvez créer un dossier de ressources. L'activation d'Autokey dans ce dossier l'active pour tous les projets de ressources qu'il contient.

  • Si vous disposez de projets de ressources dans lesquels vous souhaitez utiliser Autokey avec un stockage de clés dédié, mais qu'ils ne se trouvent pas dans un dossier dans lequel vous allez activer Autokey, vous pouvez déplacer les projets de ressources existants vers de nouveaux dossiers.

Pour pouvoir activer Autokey avec le stockage des clés dans le même projet, vous devez disposer de l'un des éléments suivants :

  • Un projet Google Cloud dans lequel vous souhaitez activer Autokey et où l'autorisation keyHandles.create n'est pas bloquée par une stratégie de refus IAM.
  • Un dossier Google Cloud dans lequel vous souhaitez activer Autokey et qui contient au moins un projet dans lequel l'autorisation keyHandles.create n'est pas bloquée par une règle de refus IAM.

Rôles requis

Pour obtenir les autorisations nécessaires pour activer et configurer Autokey, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le dossier, le projet ou une ressource parente :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour activer et configurer Autokey. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour activer et configurer Autokey :

  • Pour activer Autokey :
    • cloudkms.autokeyConfigs.*
    • serviceusage.services.enable
  • Pour activer Autokey avec le stockage des clés dans un projet dédié :
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • billing.resourceAssociations.create
  • Pour afficher la configuration Autokey :
    • cloudkms.folders.showEffectiveAutokeyConfig
    • cloudkms.projects.showEffectiveAutokeyConfig
  • Pour afficher toutes les configurations Autokey effectives :
    • cloudasset.assets.query
    • serviceusage.services.use

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Configuration de Terraform

Cette section contient des exemples de variables et de ressources Terraform qui sont des prérequis pour le reste des exemples Terraform de ce document. Si vous n'utilisez pas Terraform pour créer ni gérer vos configurations Autokey, ignorez cette section.

Cliquez ici pour afficher ou masquer l'exemple de configuration Terraform

Cet exemple effectue les étapes de configuration suivantes :

  1. Définissez les variables utilisées dans les exemples Terraform suivants.
  2. Créez un dossier de ressources. Vous pouvez ignorer cette étape si vous prévoyez d'utiliser uniquement le stockage de clés dans le même projet dans des projets individuels.
  3. Attribuez des rôles d'administrateur et d'utilisateur Autokey.
  variable "organization_ID" {
    description = "Your Google Cloud Org ID"
    type        = string
    default     = "ORGANIZATION_ID"
  }

  variable "billing_account" {
    description = "Your Google Cloud Billing Account ID"
    type        = string
    default     = "BILLING_ACCOUNT_ID"
  }

  /* List the users who should have the authority to enable and configure
    Autokey at a folder level */
  variable "autokey_folder_admins" {
    type    = list(string)
    default = [AUTOKEY_ADMIN_USER_IDS]
  }

  /* List the users who should have the authority to protect their resources
    with Autokey */
  variable "autokey_folder_users" {
    type    = list(string)
    default = [AUTOKEY_DEVELOPER_USER_IDS]
  }

  /* List the users who should have the authority to manage crypto operations
    in the Autokey key project */
  variable "autokey_project_kms_admins" {
    type    = list(string)
    default = [KEY_PROJECT_ADMIN_USER_IDS]
  }

  # Create a new folder
  resource "google_folder" "autokey_folder" {
    parent       = "organizations/${var.organization_ID}"
    display_name = "autokey_folder"
  }
  /* To use a folder that already exists, omit this block and instead create a
     variable for the folder ID instead, and then update subsequent resources
     to use the variable. */

  # Set permissions for key admins to use Autokey in this folder
  resource "google_folder_iam_binding" "autokey_folder_admin" {
    folder  = google_folder.autokey_folder.name
    role    = "roles/cloudkms.autokeyAdmin"
    members = var.autokey_folder_admins
  }

  /* Set permissions for users to protect resources with Autokey in
    this folder */
  resource "google_folder_iam_binding" "autokey_folder_users" {
    folder  = google_folder.autokey_folder.name
    role    = "roles/cloudkms.autokeyUser"
    members = var.autokey_folder_users
  }
  

Remplacez les éléments suivants :

  1. BILLING_ACCOUNT_ID : ID de votre compte de facturation Google Cloud . L'ID du compte de facturation est une valeur alphanumérique de 18 caractères séparée par des tirets (par exemple, 010101-F0FFF0-10XX01).
  2. AUTOKEY_ADMIN_USER_IDS : liste des adresses e-mail des utilisateurs auxquels le rôle `roles/cloudkms.autokeyAdmin` doit être attribué (par exemple, "Ariel@example.com", "Charlie@example.com").
  3. AUTOKEY_DEVELOPER_USER_IDS : liste des adresses e-mail des utilisateurs qui doivent disposer du rôle `roles/cloudkms.autokeyUser`, par exemple "Kalani@example.com", "Mahan@example.com".
  4. KEY_PROJECT_ADMIN_USER_IDS : liste des adresses e-mail des utilisateurs qui doivent disposer du rôle `roles/cloudkms.admin` (par exemple, "Sasha@example.com", "Nur@example.com").

Configurer Autokey avec le stockage des clés dans un projet dédié

Lorsque vous utilisez Autokey avec le stockage de clés dans un projet dédié dans un dossier, vous devez choisir un seul projet de clés pour contenir toutes les clés créées par Autokey dans ce dossier. Si vous utilisez le stockage des clés dans le même projet, vous n'avez pas besoin de projet de clés dédié. Passez à Activer Autokey avec le stockage des clés dans le même projet.

Nous vous recommandons de créer un projet de clés pour contenir les ressources Cloud KMS créées par Autokey. Vous devez créer le projet de clé dans votre ressource d'organisation. Si vous disposez déjà d'un projet de clés que vous souhaitez utiliser pour les clés créées par Autokey, vous pouvez ignorer la section Créer un projet de clés et passer à la section Configurer le projet de clés Autokey sur cette page.

Le projet de clé peut être créé dans le même dossier que celui dans lequel 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é.

Si vous envisagez de migrer vers Assured Workloads à l'avenir, créez le projet de clés dans le même dossier que les ressources protégées par ces clés.

Si votre organisation utilise la contrainte de règle d'administration constraints/gcp.restrictCmekCryptoKeyProjects pour s'assurer que toutes les clés CMEK proviennent de projets de clés spécifiés, vous devez ajouter votre projet de clés à la liste des projets autorisés. Pour en savoir plus sur les règles d'administration CMEK, consultez Règles d'administration CMEK.

Créer un projet clé

Console

  1. Dans la console Google Cloud , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Pour Sélectionner une organisation, sélectionnez la ressource d'organisation dans laquelle vous souhaitez créer un projet.
  3. Cliquez sur Create Project (Créer un projet).
  4. Dans la fenêtre Nouveau projet qui s'affiche, saisissez un nom de projet, puis sélectionnez un compte de facturation. Le nom du projet ne peut contenir que des lettres, des chiffres, des guillemets simples, des traits d'union, des espaces ou des points d'exclamation. Il doit comporter entre 4 et 30 caractères.
  5. Pour Emplacement, sélectionnez la ressource que vous souhaitez définir comme parent pour votre projet de clé.
  6. Pour terminer la création du projet, cliquez sur Créer.

gcloud

  • Créez un projet :

    gcloud projects create PROJECT_ID \
        --PARENT_TYPE=PARENT_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant le trousseau de clés.
    • PARENT_TYPE : type de ressource dans laquelle vous souhaitez créer le projet de clé. Saisissez organization pour créer le projet de clé sous une organisation donnée ou saisissez folder pour créer le projet de clé sous un dossier donné.
    • PARENT_ID : ID de l'organisation ou du dossier dans lequel vous souhaitez créer le projet clé.

REST

  • Créez un projet :

    curl "https://cloudresourcemanager.googleapis.com/v3/projects/"
        --request "POST" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{ "projectId": "PROJECT_ID", "name": "PROJECT_NAME", "parent": "PARENT_TYPE/PARENT_ID" }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : identifiant que vous souhaitez utiliser pour votre projet de clé dédié.
    • PROJECT_NAME : nom que vous souhaitez utiliser pour votre projet de clé dédiée.
    • PARENT_TYPE : type de ressource de la ressource parente dans laquelle vous souhaitez créer le projet de clé dédiée (par exemple, organizations ou folders).
    • PARENT_ID" : identifiant de ressource de la ressource parente dans laquelle vous souhaitez créer le projet de clé dédié.

Terraform

L'exemple Terraform suivant crée un projet de clé dédié dans le dossier créé précédemment.

/* Define the project ID to use for the dedicated key project. The project
  ID must be 6 to 30 characters with lowercase letters, digits, hyphens. The
  project ID must start with a letter. Trailing hyphens are prohibited */
variable "key_management_project_ID" {
  description = "Sets the project ID for the dedicated key project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a key project to store keys created by Autokey
resource "google_project" "key_management_project" {
  project_id      = var.key_management_project_ID
  name            = var.key_management_project_ID
  billing_account = var.billing_account
  folder_id       = google_folder.autokey_folder.name
}

output "project_number" {
  value = google_project.key_management_project.number
}

Remplacez KEY_PROJECT_ID par l'ID à utiliser pour le projet de clé dédié, par exemple autokey-key-project.

Configurer un privilège sur un projet

Après avoir créé le projet Cloud KMS, nous vous recommandons de protéger le projet avec un lien (aperçu) pour éviter toute suppression accidentelle. Lorsqu'un privilège de projet est appliqué, la suppression du projet Cloud KMS est bloquée jusqu'à ce que le privilège soit supprimé.

Préparer le projet de clé dédiée

Console

  1. Activez l'API Cloud KMS dans votre projet de clés.

    Activer l'API

  2. Si vous utilisez un nouveau projet de clé, accordez les autorisations d'administrateur Cloud KMS sur le projet de clé. Répétez les étapes suivantes pour vous attribuer le rôle Administrateur Cloud KMS, ainsi qu'à chaque autre administrateur Cloud KMS :

    1. Dans la console Google Cloud , accédez à la page IAM.

      Accéder à IAM

    2. Sélectionnez le projet clé.

    3. Cliquez sur Accorder l'accès, puis saisissez l'adresse e-mail de l'utilisateur.

    4. Sélectionnez le rôle Administrateur Cloud KMS.

    5. Cliquez sur Enregistrer.

gcloud

  1. Activez l'API Cloud KMS dans votre projet de clés :

    gcloud services enable cloudkms.googleapis.com
    
  2. Accordez des autorisations d'administrateur Cloud KMS sur le projet de clé. Répétez la commande suivante pour vous attribuer le rôle roles/cloudkms.admin, ainsi qu'à chaque autre administrateur Cloud KMS :

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro du projet de clé.
    • KEY_ADMIN_EMAIL : adresse e-mail de l'utilisateur responsable de la gestion des clés Cloud KMS.

REST

  1. Activez l'API Cloud KMS dans votre projet de clés :

    curl "https://serviceusage.googleapis.com/v1/projects/PROJECT_ID/services/cloudkms.googleapis.com:enable" \
        --request "POST" \
        --header "authorization: Bearer TOKEN"
    

    Remplacez PROJECT_ID par l'identifiant de votre projet de clé dédiée.

  2. Obtenez la stratégie IAM actuelle pour le projet de clé dédiée.

    curl "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN"
        --header "Content-Type: application/json; charset=utf-8" \
        --data '{"options": {"requestedPolicyVersion": 3}}'
    

    La réponse contient la stratégie d'autorisation actuelle du projet.

  3. Modifiez la stratégie d'autorisation renvoyée pour ajouter le rôle roles/cloudkms.admin à chaque utilisateur administrateur Cloud KMS, y compris vous-même, en utilisant l'exemple de liaison de rôle suivant comme guide : json { "role": "roles/cloudkms.admin", "members": [ "PRINCIPAL_LIST" ], }

    Remplacez PRINCIPAL_LIST par une liste de principaux utilisateur séparés par une virgule (par exemple, admin_1@example.com,admin_2@example.com).

    Cette modification ne prendra effet que lorsque vous aurez défini la nouvelle règle.

  4. Définissez la nouvelle stratégie d'autorisation.

    curl "https://cloudresourcemanager.googleapis.com/1/projects/PROJECT_ID:setIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN" \
        --header "Content-Type: application/json; charset=utf-8" \
        --data 'ALLOW_POLICY'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : identifiant de votre projet de clé dédié.
    • ALLOW_POLICY : le fichier JSON de la stratégie d'autorisation mise à jour que vous avez créé à l'étape précédente, y compris les attributions de rôle existantes et celles que vous venez d'ajouter.

Terraform

L'exemple Terraform suivant active l'API Cloud KMS dans le projet de clé dédié et accorde le rôle roles/cloudkms.admin aux principaux administrateurs Cloud KMS identifiés précédemment.

# Enable the Cloud KMS API in the key project
resource "google_project_service" "enable_api" {
  service                    = "cloudkms.googleapis.com"
  project                    = google_project.key_management_project.project_id
  disable_on_destroy         = false
  disable_dependent_services = false
  depends_on                 = [google_project.key_management_project]
}

/* Grant role for Cloud KMS admins to use Autokey in the
   dedicated key project */
resource "google_project_iam_binding" "autokey_project_admin" {
  project    = google_project.key_management_project.project_id
  role       = "roles/cloudkms.admin"
  members    = var.autokey_project_kms_admins
  depends_on = [ google_project.key_management_project ]
}

Activer Cloud KMS Autokey dans un dossier de ressources

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le dossier dans lequel vous souhaitez activer Autokey avec le stockage de clés de projet dédié.
  3. Dans la section Autokey, cliquez sur Gérer.
  4. Cliquez sur Configurer.
  5. Pour Source de configuration, sélectionnez Configurer pour le dossier.
  6. Pour Configuration, sélectionnez Activer le stockage des clés dans un projet dédié.
  7. Sélectionnez votre projet clé, puis cliquez sur Envoyer.

    Un message confirme que Cloud KMS Autokey est activé dans le dossier.

gcloud

  1. Créez un fichier YAML contenant les AutokeyConfig suivants :

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: DEDICATED_KEY_PROJECT
    keyProject: projects/PROJECT_ID
    

    Remplacez les éléments suivants :

    • FOLDER_NUMBER : numéro du dossier dans lequel vous souhaitez activer Autokey avec le stockage de clés dans un projet dédié.
    • PROJECT_ID : identifiant de votre projet de clé dédié.
  2. Appliquez le fichier AutokeyConfig au dossier :

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Remplacez AUTOKEY_CONFIG_PATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

REST

Créez le AutokeyConfig pour le dossier dans lequel vous souhaitez activer Autokey avec le stockage des clés dans un projet dédié :

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject,keyProjectResolutionMode" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProject": "projects/PROJECT_ID", "keyProjectResolutionMode": "DEDICATED_KEY_PROJECT"}'

Remplacez les éléments suivants :

  • FOLDER_ID : ID du dossier dans lequel vous souhaitez activer Autokey.
  • PROJECT_ID : ID du projet de clé.

Terraform

/* Enable AutokeyConfig for dedicated-project key storage in the
   folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "DEDICATED_KEY_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, and DISABLED. With DEDICATED_KEY_PROJECT, define the
    key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
    be created in the same project as the protected resource. */
}

Configurer l'agent 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 règles 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.

gcloud

  1. Créez l'agent de service Cloud KMS :

    gcloud beta services identity create --service=cloudkms.googleapis.com \
        --project=PROJECT_NUMBER
    

    Remplacez PROJECT_NUMBER par le numéro du projet clé.

    Le résultat ressemble à ce qui suit :

    Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

    Le résultat de la commande indique que le compte de service Cloud EKM (avec le sous-domaine gcp-sa-ekms) a été créé. Toutefois, la commande crée également l'agent de service Cloud KMS (avec le sous-domaine gcp-sa-cloudkms), qui est l'agent de service que vous utiliserez plus tard dans ces instructions.

  2. Accordez à l'agent de service les autorisations d'administrateur Cloud KMS :

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Remplacez PROJECT_NUMBER par le numéro du projet clé.

Terraform

# Create the Cloud KMS service agent
resource "google_project_service_identity" "KMS_Service_Agent" {
  provider   = google-beta
  service    = "cloudkms.googleapis.com"
  project    = google_project.key_management_project.project_id
  depends_on = [google_project.key_management_project]
}

/* Grant role for the Cloud KMS service agent to use delegated
  Cloud KMS administrator permissions */
resource "google_project_iam_member" "autokey_project_admin" {
  project = google_project.key_management_project.project_id
  role    = "roles/cloudkms.admin"
  member  = "serviceAccount:service-${google_project.key_management_project.number}@gcp-sa-cloudkms.iam.gserviceaccount.com"
}

Activer Autokey avec le stockage des clés dans le même projet

Lorsque vous utilisez Autokey avec le stockage des clés dans le même projet, Autokey crée vos clés dans le même projet que les ressources qu'elles protègent. Les projets qui utilisent le stockage de clés dans le même projet peuvent exister dans des dossiers qui utilisent le stockage de clés dans un projet dédié. Lorsque Autokey est activé dans un projet, la configuration Autokey au niveau du projet remplace celle du dossier parent.

Pour activer Autokey avec le stockage des clés dans le même projet pour un projet individuel, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le projet dans lequel vous souhaitez activer Autokey avec le stockage des clés dans le même projet.
  3. Dans la section Autokey, cliquez sur Gérer.
  4. Cliquez sur Configurer.
  5. Pour Source de configuration, sélectionnez Configurer pour le projet.
  6. Pour Configuration, sélectionnez Activer le stockage des clés dans le même projet.
  7. Cliquez sur Envoyer.

    Un message confirme que Cloud KMS Autokey est activé dans le projet.

gcloud

  1. Créez un fichier YAML contenant les AutokeyConfig suivants :

    name: projects/PROJECT_ID/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Remplacez PROJECT_ID par l'identifiant du projet dans lequel vous souhaitez activer Autokey avec le stockage de clés dans le même projet.

  2. Appliquez le AutokeyConfig au projet :

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Remplacez AUTOKEY_CONFIG_PATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

  3. Activez l'API Cloud KMS sur le projet :

    gcloud services enable cloudkms.googleapis.com
    

REST

  1. À l'aide de l'API REST, créez le AutokeyConfig pour le projet dans lequel vous souhaitez activer Autokey avec le stockage des clés dans le même projet :

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/autokeyConfig?updateMask=keyProjectResolutionMode,keyProject" \
        --request "PATCH" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{"keyProjectResolutionMode": "RESOURCE_PROJECT", "keyProject": ""}'
    

    Remplacez PROJECT_ID par l'ID du projet dans lequel vous souhaitez activer Autokey.

  2. Dans la gcloud CLI, activez l'API Cloud KMS sur le projet :

    gcloud services enable cloudkms.googleapis.com
    

Terraform

Pour activer Autokey avec le stockage des clés dans le même projet sur un projet individuel, utilisez une ressource autokey_config_project semblable à ce qui suit :

/* To set autokey config for a project */
resource "google_kms_autokey_config" "autokey_config_project" {
  provider = google-beta
  project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "RESOURCE_PROJECT"
  # For project scope, valid values are RESOURCE_PROJECT or DISABLED
}

Pour activer Autokey avec le stockage des clés dans le même projet pour tous les projets d'un dossier, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le dossier dans lequel vous souhaitez activer Autokey avec le stockage de clés dans le même projet.
  3. Cliquez sur Configurer.
  4. Pour Source de configuration, sélectionnez Configurer pour le dossier.
  5. Pour Configuration, sélectionnez Activer le stockage des clés dans le même projet.
  6. Cliquez sur Envoyer.

    Un message confirme que Cloud KMS Autokey est activé dans le dossier.

gcloud

  1. Créez un fichier YAML contenant les AutokeyConfig suivants :

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Remplacez FOLDER_NUMBER par le numéro du dossier dans lequel vous souhaitez activer Autokey avec le stockage de clés dans le même projet.

  2. Appliquez le fichier AutokeyConfig au dossier :

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Remplacez AUTOKEY_CONFIG_PATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

REST

  1. À l'aide de l'API REST, créez le AutokeyConfig pour le dossier dans lequel vous souhaitez activer Autokey avec le stockage de clés dans le même projet :

    curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProjectResolutionMode,keyProject" \
        --request "PATCH" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{"keyProjectResolutionMode": "RESOURCE_PROJECT", "keyProject": ""}'
    

    Remplacez FOLDER_ID par l'ID du dossier dans lequel vous souhaitez activer Autokey. Cette commande active Autokey avec le stockage des clés dans le même projet pour tous les projets du dossier.

  2. Dans gcloud CLI, activez l'API Cloud KMS dans chaque projet où vous souhaitez utiliser Autokey avec le stockage de clés dans le même projet :

    gcloud services enable cloudkms.googleapis.com
    

    Vous pouvez activer l'API Cloud KMS sur chaque projet en une seule fois ou l'activer sur des projets individuels selon vos besoins. Vos développeurs ne peuvent pas utiliser Autokey dans le projet tant que l'API Cloud KMS n'est pas activée pour ce projet.

Terraform

Pour activer Autokey avec le stockage des clés dans le même projet sur tous les projets d'un dossier, utilisez une ressource folder_config semblable à la suivante :

/* Enable AutokeyConfig on a folder */
resource "google_kms_autokey_config" "folder_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.name
  key_project_resolution_mode = "RESOURCE_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, or DISABLED. With DEDICATED_KEY_PROJECT, define the
     key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
     be created in the same project as the protected resource. */
}

Effacer la configuration Autokey

Vous pouvez effacer la configuration Autokey d'un dossier ou d'un projet pour revenir à la configuration du dossier parent.

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le dossier ou le projet dans lequel vous souhaitez effacer la configuration Autokey.
  3. Dans la section Autokey, cliquez sur Gérer.
  4. Cliquez sur Configurer.
  5. Dans le champ Source de configuration, sélectionnez Hériter.
  6. Cliquez sur Envoyer.

gcloud

  1. Créez un fichier YAML contenant les AutokeyConfig suivants :

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED
    keyProject:
    

    Remplacez les éléments suivants :

    • RESOURCE_TYPE : type de ressource pour laquelle vous souhaitez effacer la configuration Autokey. Définissez-le sur folders ou projects.
    • RESOURCE_ID : identifiant du dossier dans lequel vous souhaitez effacer la configuration Autokey.
  2. Appliquez le code AutokeyConfig au dossier ou au projet :

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Remplacez AUTOKEY_CONFIG_PATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

REST

Décochez la case AutokeyConfig pour le dossier ou le projet pour lesquels vous souhaitez rétablir la configuration Autokey héritée :

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED", "keyProject": ""}'

Remplacez les éléments suivants :

  • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez désactiver Autokey. Définissez-le sur folders ou projects.
  • RESOURCE_ID : identifiant du dossier dans lequel vous souhaitez désactiver Autokey avec le stockage de clés dans le même projet.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED"
}

Afficher la configuration Autokey effective

Vous pouvez afficher la configuration Autokey effective d'un dossier ou d'un projet. La configuration Autokey effective vous indique les éléments suivants :

  • Indique si Autokey est activé sur la ressource sélectionnée.
  • Si Autokey est activé, indique si la ressource sélectionnée utilise le stockage des clés dans un projet dédié ou dans le même projet.
  • Si la ressource sélectionnée utilise le stockage de clés de projet dédié, l'identifiant de ressource du projet de clé dédié.
  • Indique si cette configuration Autokey est héritée d'un dossier parent ou configurée sur la ressource sélectionnée.

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le dossier ou le projet dans lequel vous souhaitez afficher les paramètres Autokey.
  3. Dans la section Autokey, cliquez sur Gérer.

gcloud

Affichez le AutokeyConfig effectif :

gcloud kms autokey-config show-effective-config \
    --RESOURCE_TYPE=RESOURCE_ID

Remplacez les éléments suivants :

  • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez afficher la configuration Autokey effective. Définissez-le sur folder ou project.
  • RESOURCE_ID : identifiant de la ressource pour laquelle vous souhaitez afficher la configuration Autokey effective.

Le résultat ressemble à ce qui suit :

keyProject: KEY_PROJECT
keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE
source:
  name: RESOURCE_IDENTIFIER

Ce résultat inclut les valeurs suivantes :

  • KEY_PROJECT : identifiant de ressource du projet clé (par exemple, projects/PROJECT_ID). Si Autokey est désactivé ou si la ressource est un dossier dans lequel le stockage des clés dans le même projet est activé, ce champ est omis.
  • KEY_PROJECT_RESOLUTION_MODE : keyProjectResolutionMode de la ressource, par exemple RESOURCE_PROJECT, DEDICATED_KEY_PROJECT ou DISABLED. Si Autokey n'est pas activé sur la ressource ou sur une ressource parente, ce champ est omis.
  • RESOURCE_IDENTIFIER : identifiant de ressource de la ressource où le AutokeyConfig est configuré. Cela vous permet de déterminer si le AutokeyConfig est hérité d'une ressource parente ou configuré sur la ressource que vous avez interrogée.

REST

Affichez la AutokeyConfig effective pour un dossier ou un projet :

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:showEffectiveAutokeyConfig" \
    --request "GET" \
    --header "authorization: Bearer TOKEN"
  ```

Replace the following:
  • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez afficher la configuration Autokey. Définissez-le sur folders ou projects.
  • RESOURCE_ID : identifiant de la ressource pour laquelle vous souhaitez afficher la configuration Autokey.

Le résultat ressemble à ce qui suit :

{
  "keyProject": KEY_PROJECT,
  "keyProjectResolutionMode": KEY_PROJECT_RESOLUTION_MODE,
  "source": {
    RESOURCE_IDENTIFIER
  }
}

Ce résultat inclut les valeurs suivantes :

  • KEY_PROJECT : identifiant de ressource du projet clé (par exemple, projects/PROJECT_ID). Si Autokey est désactivé ou si la ressource est un dossier dans lequel le stockage des clés dans le même projet est activé, ce champ est omis.
  • KEY_PROJECT_RESOLUTION_MODE : keyProjectResolutionMode de la ressource, par exemple RESOURCE_PROJECT, DEDICATED_KEY_PROJECT ou DISABLED. Si Autokey n'est pas activé sur la ressource ou sur une ressource parente, ce champ est omis.
  • RESOURCE_IDENTIFIER : identifiant de ressource de la ressource où le AutokeyConfig est configuré. Cela vous permet de déterminer si le AutokeyConfig est hérité d'une ressource parente ou configuré sur la ressource que vous avez interrogée.

SQL

Vous pouvez utiliser une requête SQL avec l'inventaire des éléments cloud pour évaluer la configuration Autokey effective pour tous les projets d'un dossier ou d'une organisation.

  1. Définissez des variables d'environnement bash pour l'ID d'organisation et le champ d'application de la recherche.

    export ORG_ID="ORGANIZATION_ID"
    export TARGET_SCOPE="RESOURCE_TYPE/RESOURCE_ID" 
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID : identifiant numérique de votre organisation.
    • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez afficher les configurations Autokey effectives. Définissez la valeur sur organizations pour afficher les configurations de tous les projets de votre organisation ou sur folders pour afficher les configurations de tous les projets d'un dossier spécifique.
    • RESOURCE_ID : identifiant numérique de l'organisation ou du dossier dans lequel vous souhaitez afficher les configurations Autokey effectives.
  2. Utilisez la commande gcloud asset query pour exécuter la requête.

    gcloud asset query \
        --organization="${ORG_ID}" \
        --statement="
    WITH ProjectConfigs AS (
      SELECT
        p.name AS project_name,
        ARRAY_AGG(
          STRUCT(
            ancestor AS config_source,
            c.resource.data.state AS state,
            c.resource.data.keyProjectResolutionMode AS resolution_mode,
            c.resource.data.keyProject AS key_project
          )
          ORDER BY offset
          LIMIT 1
        )[SAFE_OFFSET(0)] AS effective_config
      FROM
        STANDARD_METADATA p
      CROSS JOIN
        UNNEST(p.ancestors) AS ancestor WITH OFFSET AS offset
      JOIN
        cloudkms_googleapis_com_AutokeyConfig c
      ON
        ancestor = REGEXP_REPLACE(c.name, r'^//cloudkms\.googleapis\.com/([^/]+/\d+)/autokeyConfig$', r'\1')
      WHERE
        p.assetType = 'cloudresourcemanager.googleapis.com/Project'
      GROUP BY
        p.name
    )
    SELECT
      REPLACE(r.name, '//cloudresourcemanager.googleapis.com/', '') AS project_name,
      p.resource.data.projectId AS project_id,
      COALESCE(rc.effective_config.config_source, 'No Autokey') AS effective_config_source,
      rc.effective_config.state AS autokey_config_state,
      rc.effective_config.resolution_mode AS resolution_mode,
      CASE 
        WHEN rc.effective_config.resolution_mode = 'RESOURCE_PROJECT' THEN p.resource.data.projectId
        ELSE COALESCE(REPLACE(rc.effective_config.key_project, 'projects/', ''), 'No Key Project')
      END AS key_project
    FROM
      STANDARD_METADATA r
    LEFT JOIN
      ProjectConfigs rc
    ON
      r.name = rc.project_name
    LEFT JOIN
      cloudresourcemanager_googleapis_com_Project p
    ON
      r.name = p.name
    WHERE
      r.assetType = 'cloudresourcemanager.googleapis.com/Project'
      AND '${TARGET_SCOPE}' IN UNNEST(r.ancestors)
    "
    

    Le résultat inclut les champs suivants :

    • project_number : identifiant numérique complet de la ressource de chaque projet (par exemple, projects/PROJECT_NUMBER).
    • project_id : identifiant de chaque projet, par exemple PROJECT_ID.
    • effective_config_source : identifiant de ressource de la ressource où la configuration Autokey du projet est définie (par exemple, folders/FOLDER_NUMBER si la configuration est héritée d'un dossier parent ou projects/PROJECT_NUMBER si la configuration est définie sur le projet). Si le projet ne possède pas ou n'hérite pas d'un AutokeyConfig, ce champ affiche No Autokey.
    • autokey_config_state : indique si une configuration Autokey est ACTIVE dans le dossier, même si cette configuration est DISABLED. Si le projet ne possède pas ou n'hérite pas d'un AutokeyConfig, ce champ est vide.
    • resolution_mode : mode de résolution du projet clé de la configuration Autokey effective sur le projet.
    • key_project : indique où Autokey crée des clés pour les ressources du projet (par exemple, projects/KEY_PROJECT_ID lorsque le projet utilise le stockage des clés dans un projet dédié ou RESOURCE_PROJECT_ID lorsque le projet utilise le stockage des clés dans le même projet). Lorsque Autokey n'est pas activé dans le projet, ce champ affiche No key project.

Désactiver Autokey

Les rôles qui peuvent activer Autokey peuvent également le désactiver. Pour désactiver Autokey, vous pouvez effacer AutokeyConfig ou définir feedbackKeyProjectResolutionMode sur DISABLED. Vous pouvez désactiver Autokey pour un dossier ou un projet. Vous pouvez également désactiver AutoKey pour des projets individuels dans un dossier où AutoKey est activé.

Une fois Autokey désactivé pour un dossier ou un projet, l'agent de service Cloud KMS ne peut plus créer de clés pour les développeurs lorsqu'ils créent des ressources dans ce dossier ou projet.

Si vous souhaitez désactiver complètement Autokey, nous vous recommandons également de supprimer les liaisons IAM pour les rôles roles/cloudkms.autokeyAdmin et roles/cloudkms.autokeyUser.

La désactivation d'Autokey n'a aucune incidence sur les clés existantes dans le projet de clés. Vous pouvez continuer à utiliser ces clés pour protéger vos ressources.

Désactiver Autokey pour un dossier ou un projet

Console

  1. Dans la console Google Cloud , accédez à la page Commandes de gestion des clés.

    Accéder aux commandes de gestion des clés

  2. Dans le sélecteur de contexte, sélectionnez le dossier ou le projet dans lequel vous souhaitez désactiver Autokey.
  3. Dans la section Autokey, cliquez sur Gérer.
  4. Cliquez sur Configurer.
  5. Pour Source de configuration, sélectionnez Configurer pour le dossier ou Configurer pour le projet.
  6. Pour Configuration, sélectionnez Désactiver AutoKey pour le dossier ou Désactiver AutoKey pour le projet.
  7. Cliquez sur Envoyer.

    Un message s'affiche pour vous demander de confirmer que vous souhaitez désactiver Autokey.

  8. Pour désactiver Autokey, cliquez sur Confirmer.

    Un message confirme que Cloud KMS Autokey est désactivé.

gcloud

  1. Créez un fichier YAML contenant les AutokeyConfig suivants :

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: DISABLED
    keyProject:
    

    Remplacez les éléments suivants :

    • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez désactiver Autokey. Définissez-le sur folders ou projects.
    • RESOURCE_ID : identifiant du dossier dans lequel vous souhaitez désactiver Autokey avec le stockage de clés dans le même projet.
  2. Appliquez le code AutokeyConfig au dossier ou au projet :

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Remplacez AUTOKEY_CONFIG_PATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

REST

Mettez à jour le fichier AutokeyConfig du dossier ou du projet pour lequel vous souhaitez désactiver Autokey :

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "DISABLED", "keyProject": ""}'

Remplacez les éléments suivants :

  • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez désactiver Autokey. Définissez-le sur folders ou projects.
  • RESOURCE_ID : identifiant du dossier dans lequel vous souhaitez désactiver Autokey avec le stockage de clés dans le même projet.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "DISABLED"
}

Révoquer les rôles Autokey

Si vous désactivez Autokey en mettant à jour AutokeyConfig, l'agent de service Cloud KMS ne pourra plus provisionner de clés dans le projet ou le dossier concerné. Toutefois, si vous souhaitez désactiver complètement Autokey, nous vous recommandons de supprimer également les liaisons IAM pour les rôles roles/cloudkms.autokeyAdmin et roles/cloudkms.autokeyUser.

  1. Facultatif : Révoquez le rôle roles/cloudkms.autokeyAdmin :

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyAdmin \
        --member=user:USER_EMAIL
    

    Remplacez les éléments suivants :

    • FOLDER_ID : ID du dossier dans lequel vous avez désactivé Autokey.
    • USER_EMAIL : adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer l'autorisation de gérer Autokey.
  2. Facultatif : Révoquez le rôle roles/cloudkms.autokeyUser au niveau du dossier :

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Remplacez les éléments suivants :

    • FOLDER_ID : ID du dossier dans lequel vous avez désactivé Autokey.
    • USER_EMAIL : adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer l'autorisation d'utiliser Autokey.
  3. (Facultatif) Révoquez le rôle roles/cloudkms.autokeyUser au niveau du projet :

    gcloud projects remove-iam-policy-binding \
        RESOURCE_PROJECT_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Remplacez les éléments suivants :

    • RESOURCE_PROJECT_NUMBER : numéro du projet de ressources dans le dossier où vous avez désactivé Autokey.
    • USER_EMAIL : adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer l'autorisation d'utiliser Autokey.
  4. Facultatif : Si vous ne prévoyez pas de continuer à utiliser le projet de clé pour Autokey pour d'autres dossiers, révoquez le rôle roles/cloudkms.admin pour l'agent de service Cloud KMS :

    gcloud projects remove-iam-policy-binding \
        KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Remplacez KEY_PROJECT_NUMBER par l'ID numérique du projet de clé.

  5. Facultatif : Si vous ne prévoyez pas de continuer à utiliser les clés créées dans le projet de clés, révoquez le rôle roles/cloudkms.admin pour l'administrateur Cloud KMS :

    gcloud projects remove-iam-policy-binding \
        KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Remplacez les éléments suivants :

    • KEY_PROJECT_NUMBER : numéro du projet de clé.
    • KEY_ADMIN_EMAIL : adresse e-mail de l'utilisateur auquel vous souhaitez révoquer l'autorisation de configurer Autokey.

Étapes suivantes