Activer Cloud KMS Autokey

Cette page vous explique comment activer et configurer Autokey Cloud KMS dans un dossier de ressources. Pour en savoir plus sur Autokey, consultez Présentation d'Autokey Étapes indiquées sur cette page doit être effectuée par un administrateur de la sécurité.

Avant de commencer

Avant de pouvoir activer Cloud KMS Autokey, vous devez disposer des éléments suivants :

  • Une ressource Organisation contenant un dossier sur lequel vous souhaitez activer Autokey. Si vous n'avez pas de dossier dans lequel Autokey, vous pouvez créer une ressource dossier. L'activation d'Autokey sur ce dossier active Clé automatique pour tous les projets de ressources du dossier.
  • Si vous avez des projets de ressources dans lesquels vous voulez utiliser Autokey, et non dans un dossier où vous activerez Autokey, peuvent déplacer des projets de ressources existants vers de nouveaux dossiers.

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour activer et configurer Autokey, demandez à votre administrateur de vous accorder le les rôles IAM suivants sur l'organisation ou le dossier:

Pour en savoir plus sur l'attribution de rôles, consultez la page 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

Les autorisations suivantes sont requises pour activer et configurer Autokey:

  • cloudkms.autokeyConfigs.*
  • cloudkms.projects.showEffectiveAutokeyConfig
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.setIamPolicy
  • billing.resourceAssociations.create

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

Choisissez la manière dont vous souhaitez activer Autokey

Vous pouvez activer Autokey dans le cadre de votre stratégie d'infrastructure en tant que code en utilisant Terraform pour effectuer les modifications de configuration requises. Si vous si vous souhaitez utiliser Terraform pour activer Autokey, consultez la section Activer Autokey à l'aide de Terraform sur cette page. Si vous ne voulez pas utiliser Terraform, commencez par suivre les instructions de la section suivante.

Configurer le projet clé

Nous vous recommandons de créer un projet de clé qui contiendra les ressources Cloud KMS créé par Autokey. Vous devez créer le projet de clé dans la ressource de votre organisation. Si vous avez déjà un projet clé que vous souhaitez utiliser Pour les clés créées par Autokey, vous pouvez ignorer la section Créer un projet de clé et continuer dans Configure the Autokey key project (Configurer le projet de clé Autokey) sur cette page.

Le projet de clé peut être créé dans le dossier où vous prévoyez d'activer Autokey. Vous ne devez pas créer d'autres ressources dans le projet de clé. Si vous tentez de créer des ressources protégées par Autokey dans la clé projet, Autokey rejette la demande de nouvelle clé.

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

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

Créer un projet de 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. Dans le champ Sélectionner une organisation, sélectionnez la ressource d'organisation au sein de laquelle vous voulez 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. 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. Dans le champ Emplacement, sélectionnez la ressource que vous souhaitez désigner comme parent. votre projet clé.
  6. Pour terminer de créer le 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 la ressource où vous souhaitez créer le projet de clé. Saisissez organization pour créer le projet de clé sous une organisation donnée ou folder pour le créer sous un dossier donné.
    • PARENT_ID : ID de l'organisation ou du dossier dans lequel vous souhaitez créer le projet clé.

Préparer le projet de clé Autokey

Console

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

    Activer l'API

  2. Si vous utilisez un nouveau projet de clé, accordez à Cloud KMS les autorisations d'administrateur sur le projet de clé à votre administrateurs:

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

      Accéder à IAM

    2. Sélectionnez le projet de clé.

    3. Cliquez sur Attribuer. 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 sur votre projet de clé:

    gcloud services enable cloudkms.googleapis.com
    
  2. Accorder des autorisations d'administrateur Cloud KMS sur le projet de clé à vos administrateurs 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 de projet de la clé projet.
    • KEY_ADMIN_EMAIL : adresse e-mail de l'utilisateur responsable de la gestion des clés Cloud KMS.

Activer Cloud KMS Autokey sur un dossier de ressources

Console

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

    OK aux contrôles KMS

  2. À partir du sélecteur de contexte, sélectionnez le dossier pour lequel vous souhaitez activer l'accès Autokey.

  3. Cliquez sur Activer.

  4. Sélectionnez votre projet de clé, puis cliquez sur Submit (Envoyer).

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

API

Créez le AutokeyConfig pour le dossier dans lequel vous souhaitez activer Autokey :

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

Remplacez les éléments suivants :

  • FOLDER_ID: ID du dossier où vous voulez activer Autokey.
  • PROJECT_ID : ID du projet de clé.

Configurer l'agent de service Cloud KMS

L'agent de service Cloud KMS d'un projet de clé crée des clés applique des liaisons de stratégie IAM lors de la création des ressources, pour le compte d'un administrateur Cloud KMS. Pour pouvoir créer et attribuer des touches, L'agent de service Cloud KMS nécessite un administrateur Cloud KMS autorisations.

  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 de projet de la clé. projet.

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

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

    Remplacez PROJECT_NUMBER par le numéro de projet de la clé. projet.

Attribuer des rôles utilisateur Autokey

Avant que vos développeurs puissent utiliser Autokey, vous devez leur accorder le rôle requis. Vous pouvez attribuer le rôle au niveau du dossier ou au niveau du projet à l'échelle du projet. Ce rôle permet aux développeurs de demander des clés à partir de Cloud KMS l'agent de service lors de la création des ressources dans ce dossier ou projet.

Choisissez l'une des options suivantes ou les deux:

  • Accordez 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:USER_EMAIL
    

    Remplacez les éléments suivants :

    • FOLDER_ID: ID du dossier dans lequel vous souhaitez activer Autokey.
    • USER_EMAIL: adresse e-mail de l'utilisateur auquel vous souhaitez autoriser l'utilisation d'Autokey.
  • Accordez le rôle roles/cloudkms.autokeyUser au niveau du projet:

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

    Remplacez les éléments suivants :

    • PROJECT_ID: ID du projet de ressources.
    • USER_EMAIL : adresse e-mail de l'utilisateur auquel vous souhaitez accorder l'autorisation d'utiliser Autokey.

Vos développeurs Autokey peuvent désormais créer des clés à la demande. Pour savoir comment pour créer des ressources protégées à l'aide de clés créées à la demande par Autokey, consultez la page Créer des ressources protégées à l'aide d'Autokey.

Activer Autokey à l'aide de Terraform

L'exemple Terraform suivant automatise les étapes de configuration suivantes :

  • Créer un dossier de ressources
  • Créer un projet clé
  • Accorder des autorisations à l'utilisateur
  • Configurer l'agent de service Cloud KMS
  • Activer Autokey

Vous devez créer séparément des projets de ressources dans le dossier de ressources.

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]
}

/* The project ID to use for the 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 Key Management Project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a new folder
resource "google_folder" "autokey_folder" {
  parent       = "organizations/${var.organization_ID}"
  display_name = "autokey_folder"
}

# 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
}

# 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
}

# Grant role for Cloud KMS admins to use Autokey in the 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 ]
}

# 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]
}

# Create 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 admin 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-ekms.iam.gserviceaccount.com"
}

/* Enable AutokeyConfig in this folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = google_project.key_management_project.project_id
}

Remplacez les éléments suivants :

  • BILLING_ACCOUNT_ID: votre facturation Google Cloud ID de compte Google Ads. L'ID du compte de facturation est une valeur alphanumérique à 18 caractères séparés par un tiret, par exemple 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: liste des adresses e-mail pour les utilisateurs devant avoir le rôle roles/cloudkms.autokeyAdmin, pour Exemple : "Ariel@example.com", "Charlie@example.com".
  • AUTOKEY_DEVELOPER_USER_IDS: liste des adresses e-mail pour les utilisateurs devant avoir le rôle roles/cloudkms.autokeyUser, pour Exemple : "Kalani@example.com", "Mahan@example.com".
  • KEY_PROJECT_ADMIN_USER_IDS: liste des adresses e-mail pour les utilisateurs qui doivent avoir le rôle roles/cloudkms.admin (par exemple, "Sasha@example.com", "Nur@example.com"
  • KEY_PROJECT_ID: ID à utiliser pour la clé projet, par exemple autokey-key-project.

Appliquer l'utilisation d'Autokey

Vous pouvez imposer l'utilisation d'Autokey au sein d'un dossier. en combinant le contrôle des accès IAM avec des règles d'administration CMEK. Pour ce faire, les autorisations de création de clés sont supprimées des principaux autres que l'agent de service Cloud KMS, puis toutes les ressources sont protégées par CMEK à l'aide du projet de clé Autokey.

Pour imposer l'utilisation d'Autokey dans un dossier, procédez comme suit:

  1. Supprimez l'accès pour créer des clés manuellement dans le projet de clé. Si les clés ne peuvent pas être manuellement, seules les clés créées par Autokey peuvent être créées dans ce projet. Pour en savoir plus sur le contrôle des accès, consultez Contrôle des accès avec IAM

  2. Définissez une règle d'administration sur le dossier pour exiger que les ressources doivent être protégées par une clé CMEK à l'aide de la contrainte constraints/gcp.restrictNonCmekServices. Pour en savoir plus, consultez la section Exiger la protection CMEK.

  3. Définissez une règle d'administration sur le dossier afin d'exiger que les clés utilisées pour les CMEK doit provenir du projet de clé Autokey à l'aide de la Contrainte constraints/gcp.restrictCmekCryptoKeyProjects. Pour plus pour en savoir plus, consultez Limitez l'utilisation de clés Cloud KMS pour les CMEK.

Désactiver Autokey

Cloud KMS Autokey est activé et désactivé au niveau du dossier. Les mêmes rôles qui peuvent activer Autokey pour un dossier peuvent le désactiver. Pour désactiver Autokey sur un dossier, vous devez effacer le AutokeyConfig pour supprimer l'association entre le dossier et le Projet de clé Autokey.

Une fois la configuration Autokey du dossier supprimée, L'agent de service Cloud KMS ne peut plus créer de clés pour les développeurs lorsque ils créent des ressources dans le dossier. Supprimer le lien entre le dossier et le projet de clé désactive Autokey dans le dossier. Toutefois, 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é. Toi peuvent continuer à les utiliser pour protéger vos ressources.

Effacer AutokeyConfig

Console

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

    OK aux contrôles KMS

  2. Dans le sélecteur de contexte, sélectionnez le dossier que vous souhaitez désactiver. Autokey.

  3. Cliquez sur Désactiver.

    Un message s'affiche pour vous inviter à confirmer la désactivation. Autokey.

  4. Pour désactiver Autokey, cliquez sur Confirm (Confirmer).

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

API

Effacez l'élément AutokeyConfig du dossier que vous souhaitez désactiver. Autokey:

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

Remplacez les éléments suivants :

  • FOLDER_ID : ID du dossier dans lequel vous souhaitez désactiver Autokey.

Révoquer des rôles Autokey

  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 de projet d'un projet de ressources dans le 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.
  4. Facultatif: Si vous ne prévoyez pas de continuer à utiliser le projet de clé pour Clé automatique pour les 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-ekms.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é, 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 projet clé.
    • USER_EMAIL : adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer l'autorisation d'utiliser Autokey.

Étape suivante