Cette page vous explique comment activer et configurer Autokey Cloud KMS dans un dossier de ressources. Pour en savoir plus sur Autokey, consultez la section Présentation de la clé automatique. Les étapes décrites sur cette page doivent être effectuées 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 d'organisation contenant un dossier pour 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 sur ce dossier active Autokey pour tous les projets de ressources du dossier.
- Si vous avez des projets de ressources pour lesquels vous souhaitez utiliser Autokey, 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 dans de nouveaux dossiers.
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 l'organisation ou le dossier:
-
Administrateur Autokey Cloud KMS (
roles/cloudkms.autokeyAdmin
) -
Administrateur IAM de dossiers (
roles/resourcemanager.folderIamAdmin
) -
Utilisateur du compte de facturation (
roles/billing.user
)
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
Vous devez disposer des autorisations suivantes 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.
Décider comment 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 souhaitez utiliser Terraform pour activer Autokey, consultez la section Activer Autokey à l'aide de Terraform sur cette page. Si vous ne souhaitez pas utiliser Terraform, commencez par suivre les instructions de la section suivante.
Configurer le projet de clé
Nous vous recommandons de créer un projet de clé pour contenir les ressources Cloud KMS créées par Autokey. Vous devez créer le projet de clé dans la ressource de votre organisation. Si vous disposez déjà d'un projet de 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 passer à la section Configurer le projet de clé 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é, 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 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é à la liste des projets autorisés. Pour en savoir plus sur les règles d'administration CMEK, consultez la section Règles d'administration CMEK.
Créer un projet clé
Console
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Pour Sélectionner une organisation, sélectionnez la ressource d'organisation dans laquelle vous souhaitez créer un projet.
- Cliquez sur Create Project (Créer un projet).
- 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.
- Pour Emplacement, sélectionnez la ressource que vous souhaitez définir comme parente de votre projet clé.
- 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 dans laquelle vous souhaitez créer le nouveau projet de clé. Saisissezorganization
pour créer le projet de clé sous une organisation donnée oufolder
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
Activez l'API Cloud KMS sur votre projet de clé.
Si vous utilisez un nouveau projet de clé, accordez des autorisations d'administrateur Cloud KMS sur le projet de clé. Répétez les étapes suivantes pour attribuer le rôle Administrateur Cloud KMS à vous-même et à chaque autre utilisateur administrateur Cloud KMS:
Dans la console Google Cloud, accédez à la page IAM.
Sélectionnez le projet clé.
Cliquez sur
Accorder l'accès, puis saisissez l'adresse e-mail de l'utilisateur.Sélectionnez le rôle Administrateur Cloud KMS.
Cliquez sur Enregistrer.
gcloud
Activez l'API Cloud KMS sur votre projet de clé:
gcloud services enable cloudkms.googleapis.com
Accordez des autorisations d'administrateur Cloud KMS au projet de clé. Répétez la commande suivante pour attribuer le rôle
roles/cloudkms.admin
à vous-même et à tous les autres 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 du projet de clé.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
Dans la console Google Cloud, accédez à la page Commandes KMS.
Dans le sélecteur de contexte, sélectionnez le dossier dans lequel vous souhaitez activer Autokey.
Cliquez sur Activer.
Sélectionnez votre projet clé, puis cliquez sur 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 dans lequel vous souhaitez 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 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 a besoin d'autorisations d'administrateur Cloud KMS.
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-domainegcp-sa-cloudkms
), qui est l'agent de service que vous utiliserez plus tard dans ces instructions.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é.
Accorder 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 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 ce projet.
Choisissez l'une des étapes suivantes, ou les deux:
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: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 accorder l'autorisation d'utiliser Autokey.
Attribuez 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 créer des ressources protégées à l'aide de clés créées à la demande par Autokey, consultez 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 utilisateur
- Configurer l'agent de service Cloud KMS
- Activer Autokey
Vous devez créer des projets de ressources séparément 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-cloudkms.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 = "projects/${google_project.key_management_project.project_id}"
}
Remplacez les éléments suivants :
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és par des tirets (par exemple,010101-F0FFF0-10XX01
).AUTOKEY_ADMIN_USER_IDS
: liste des adresses e-mail des utilisateurs qui doivent disposer du rôleroles/cloudkms.autokeyAdmin
(par exemple,"Ariel@example.com", "Charlie@example.com"
).AUTOKEY_DEVELOPER_USER_IDS
: liste des adresses e-mail des utilisateurs qui doivent disposer du rôleroles/cloudkms.autokeyUser
(par exemple,"Kalani@example.com", "Mahan@example.com"
).KEY_PROJECT_ADMIN_USER_IDS
: liste des adresses e-mail des utilisateurs qui doivent disposer du rôleroles/cloudkms.admin
(par exemple,"Sasha@example.com", "Nur@example.com"
).KEY_PROJECT_ID
: ID à utiliser pour le projet de clé (par exemple,autokey-key-project
).
Forcer l'utilisation d'Autokey
Si vous souhaitez appliquer l'utilisation d'Autokey dans un dossier, vous pouvez le faire en combinant les contrôles des accès IAM avec les règles d'administration des clés de chiffrement gérées par le client (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 appliquer l'utilisation d'Autokey dans un dossier, procédez comme suit:
Supprimez l'accès à la création manuelle de clés dans le projet de clé. Si les clés ne peuvent pas être créées 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 la page Contrôle des accès avec IAM.
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.Définissez une règle d'administration sur le dossier pour exiger que les clés utilisées pour le CMEK doivent provenir du projet de clé Autokey à l'aide de la contrainte
constraints/gcp.restrictCmekCryptoKeyProjects
. Pour en savoir plus, consultez la page Limiter l'utilisation des clés Cloud KMS pour 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 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 lorsqu'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 aucun impact sur les clés existantes du projet de clé. Vous pouvez continuer à utiliser ces clés pour protéger vos ressources.
Effacer AutokeyConfig
Console
Dans la console Google Cloud, accédez à la page Commandes KMS.
Dans le sélecteur de contexte, sélectionnez le dossier dans lequel vous souhaitez désactiver Autokey.
Cliquez sur Désactiver.
Un message s'affiche pour vous demander de confirmer que vous souhaitez désactiver Autokey.
Pour désactiver Autokey, cliquez sur Confirmer.
Un message confirme que Cloud KMS Autokey est désactivé sur le dossier.
API
Décochez AutokeyConfig
pour le dossier dans lequel 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
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.
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.
(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.
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 clé.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 de clé.USER_EMAIL
: adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer l'autorisation d'utiliser Autokey.
Étape suivante
- Découvrez quand utiliser la clé automatique.
- Découvrez le fonctionnement d'Autokey.
- Vos développeurs Autokey peuvent désormais créer des ressources protégées à l'aide d'Autokey.