En esta página, se muestra cómo habilitar y configurar la clave automática de Cloud KMS en una carpeta de recursos. Para obtener más información sobre la clave automática, consulta Descripción general de las claves automáticas. Un administrador de seguridad debe completar los pasos en esta página.
Antes de comenzar
Para poder habilitar la clave automática de Cloud KMS, debes contar con lo siguiente:
- Un recurso de organización que contiene una carpeta en la que deseas habilitar la clave automática Si no tienes una carpeta en la que desees habilitar la clave automática, puedes crear una carpeta de recursos nueva. Si habilitas Autokey en esta carpeta, también se habilitará para todos los proyectos de recursos de la carpeta.
- Si tienes proyectos de recursos en los que deseas usar la llave automática, pero no están dentro de una carpeta en la que habilitarás la clave automática, puedes mover los proyectos de recursos existentes a carpetas nuevas.
Funciones obligatorias
Si quieres obtener los permisos que necesitas para habilitar y configurar la clave automática, pídele a tu administrador que te otorgue los siguientes roles de IAM en la organización o carpeta:
-
Administrador de claves automáticas de Cloud KMS (
roles/cloudkms.autokeyAdmin
) -
Administrador de IAM de carpeta (
roles/resourcemanager.folderIamAdmin
) -
Usuario de la cuenta de facturación (
roles/billing.user
)
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Estos roles predefinidos contienen los permisos necesarios para habilitar y configurar la clave automática. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para habilitar y configurar la clave automática:
-
cloudkms.autokeyConfigs.*
-
cloudkms.projects.showEffectiveAutokeyConfig
-
resourcemanager.folders.get
-
resourcemanager.folders.getIamPolicy
-
resourcemanager.folders.setIamPolicy
-
billing.resourceAssociations.create
Es posible que también puedas obtener estos permisos con funciones personalizadas o con otras funciones predefinidas.
Decide cómo quieres habilitar la clave automática
Puedes habilitar la clave automática como parte de tu estrategia de infraestructura como servicio mediante Terraform para realizar los cambios de configuración necesarios. Si deseas usar Terraform para habilitar la clave automática, consulta Habilita la clave automática con Terraform en esta página. Si no quieres usar Terraform, comienza por las instrucciones de la siguiente sección.
Configura el proyecto clave
Recomendamos crear un proyecto de clave nuevo que contenga los recursos de Cloud KMS que creó Autokey. Debes crear el proyecto de claves dentro del recurso de tu organización. Si ya tienes un proyecto de clave que quieres usar para las claves que creó Autokey, puedes omitir la sección Crear un proyecto de clave y continuar desde Configura el proyecto de claves de Autokey en esta página.
El proyecto clave se puede crear dentro de la misma carpeta en la que planeas habilitar la Clave automática. No debes crear otros recursos dentro del proyecto de la clave. Si intentas crear recursos protegidos por Autokey en el proyecto de la clave, esta función rechaza la solicitud de una clave nueva.
Si es posible que desees migrar a Assured Workloads en el futuro, crea el proyecto de clave dentro de la misma carpeta que los recursos protegidos por esas claves.
Si tu organización usa la restricción de la política de la organización constraints/gcp.restrictCmekCryptoKeyProjects
para garantizar que todas las CMEK sean de proyectos clave especificados, debes agregar el proyecto de clave a la lista de proyectos permitidos. Para obtener más información sobre la política de la organización de CMEK, consulta las Políticas de la organización de CMEK.
Crea un proyecto clave
Console
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En Seleccionar organización, elige el recurso de organización en el que deseas crear un proyecto.
- Haz clic en Crear proyecto.
- En la ventana Proyecto nuevo que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación. El nombre de un proyecto solo puede contener letras, números, comillas simples, guiones, espacios o signos de exclamación, y debe tener entre 4 y 30 caracteres.
- En Ubicación, selecciona el recurso que deseas que sea el superior para tu proyecto de clave.
- Para terminar de crear el proyecto, haz clic en Crear.
gcloud
Crea un proyecto nuevo:
gcloud projects create PROJECT_ID \ --PARENT_TYPE=PARENT_ID
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto que contiene el llavero de claves.PARENT_TYPE
: Es el tipo de recurso en el que deseas crear el proyecto de clave nuevo. Ingresaorganization
para crear el proyecto de clave nuevo en una organización determinada o ingresafolder
para crear el proyecto de clave nuevo en una carpeta determinada.PARENT_ID
: Es el ID de la organización o carpeta en la que deseas crear el proyecto de clave.
Prepara el proyecto de claves de Autokey
Console
Habilita la API de Cloud KMS en tu proyecto de clave.
Si usas un proyecto de clave nuevo, otorga permisos de administrador de Cloud KMS en el proyecto de clave a tus usuarios administradores de Cloud KMS:
En la consola de Google Cloud, ve a la página IAM.
Selecciona el proyecto clave.
Haz clic en
Otorgar acceso y, luego, ingresa la dirección de correo electrónico del usuario.Selecciona el rol Administrador de Cloud KMS.
Haz clic en Guardar.
gcloud
Habilita la API de Cloud KMS en tu proyecto de clave:
gcloud services enable cloudkms.googleapis.com
Otorga permisos de administrador de Cloud KMS en el proyecto clave a tus usuarios administradores de Cloud KMS:
gcloud projects add-iam-policy-binding PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=user:KEY_ADMIN_EMAIL
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número del proyecto clave.KEY_ADMIN_EMAIL
: Es la dirección de correo electrónico del usuario responsable de administrar las claves de Cloud KMS.
Habilita la clave automática de Cloud KMS en una carpeta de recursos
Console
En la consola de Google Cloud, ve a la página Controles de KMS.
En el selector de contexto, selecciona la carpeta en la que deseas habilitar la Clave automática.
Haz clic en Habilitar.
Selecciona tu proyecto clave y haz clic en Enviar.
Un mensaje confirma que la clave automática de Cloud KMS está habilitada en la carpeta.
API
Crea la AutokeyConfig
para la carpeta en la que deseas habilitar la clave automática:
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"}'
Reemplaza lo siguiente:
FOLDER_ID
: El ID de la carpeta en la que deseas habilitar la clave automáticaPROJECT_ID
: Es el ID del proyecto clave.
Configura el agente de servicio de Cloud KMS
El agente de servicio de Cloud KMS para un proyecto clave crea claves y aplica vinculaciones de políticas de IAM durante la creación de recursos, en nombre de un administrador humano de Cloud KMS. Para poder crear y asignar claves, el agente de servicio de Cloud KMS requiere permisos de administrador de Cloud KMS.
Crea el agente de servicio de Cloud KMS:
gcloud beta services identity create --service=cloudkms.googleapis.com \ --project=PROJECT_NUMBER
Reemplaza
PROJECT_NUMBER
por el número del proyecto clave.Otorga permisos de administrador de Cloud KMS al agente de servicio:
gcloud projects add-iam-policy-binding PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
por el número del proyecto clave.
Otorgar roles de usuario de Autokey
Antes de que tus desarrolladores puedan usar la clave automática, debes otorgarles la función requerida. Puedes otorgar el rol a nivel de carpeta o de proyecto. Esta función permite a los desarrolladores solicitar claves al agente de servicio de Cloud KMS mientras crean recursos en esa carpeta o proyecto.
Elige uno de estos pasos o ambos:
Otorga el rol
roles/cloudkms.autokeyUser
a nivel de carpeta:gcloud resource-manager folders add-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
FOLDER_ID
: El ID de la carpeta en la que deseas habilitar la clave automáticaUSER_EMAIL
: La dirección de correo electrónico del usuario al que deseas otorgar permiso para usar la clave automática.
Otorga el rol
roles/cloudkms.autokeyUser
a nivel de proyecto:gcloud projects add-iam-policy-binding PROJECT_NUMBER \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto del recurso.USER_EMAIL
: La dirección de correo electrónico del usuario al que deseas otorgar permiso para usar la clave automática.
Tus desarrolladores de Autokey ahora pueden crear claves a pedido. Para aprender a crear recursos protegidos con claves creadas a pedido por Clave automática, consulta Cómo crear recursos protegidos mediante Clave automática.
Habilita la clave automática con Terraform
En el siguiente ejemplo de Terraform, se automatizan los siguientes pasos de configuración:
- Crea una carpeta de recursos
- Crea un proyecto clave
- Otorga permisos de usuario
- Configura el agente de servicio de Cloud KMS
- Habilitar tecla automática
Debes crear proyectos de recursos por separado dentro de la carpeta de recursos.
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 = google_project.key_management_project.project_id
}
Reemplaza lo siguiente:
BILLING_ACCOUNT_ID
: El ID de la cuenta de facturación de Google Cloud El ID de la cuenta de facturación es un valor alfanumérico de 18 caracteres separado por guiones, por ejemplo,010101-F0FFF0-10XX01
.AUTOKEY_ADMIN_USER_IDS
: Es una lista de direcciones de correo electrónico para los usuarios que deben tener la funciónroles/cloudkms.autokeyAdmin
, por ejemplo,"Ariel@example.com", "Charlie@example.com"
.AUTOKEY_DEVELOPER_USER_IDS
: Es una lista de direcciones de correo electrónico para los usuarios que deben tener la funciónroles/cloudkms.autokeyUser
, por ejemplo,"Kalani@example.com", "Mahan@example.com"
.KEY_PROJECT_ADMIN_USER_IDS
: Es una lista de direcciones de correo electrónico para los usuarios que deben tener la funciónroles/cloudkms.admin
, por ejemplo,"Sasha@example.com", "Nur@example.com"
.KEY_PROJECT_ID
: Es el ID que se usará para el proyecto clave, por ejemplo,autokey-key-project
.
Aplicar de manera forzosa el uso de las claves automáticas
Si deseas aplicar el uso de la clave automática dentro de una carpeta, puedes hacerlo combinando los controles de acceso de IAM con las políticas de la organización de CMEK. Para ello, se quitan los permisos de creación de claves de las principales que no sean el agente de servicio de Cloud KMS y, luego, se exige que todos los recursos estén protegidos por CMEK con el proyecto de clave de clave automática.
Para aplicar de manera forzosa el uso de claves automáticas dentro de una carpeta, completa los siguientes pasos:
Quita el acceso para crear claves de forma manual en el proyecto de claves. Si las claves no se pueden crear de forma manual, solo las claves creadas por Autokey se podrán crear en este proyecto. Para obtener más información sobre cómo controlar el acceso, consulta Control de acceso con la IAM.
Establece una política de la organización en la carpeta para exigir que los recursos estén protegidos con una CMEK mediante la restricción
constraints/gcp.restrictNonCmekServices
. Para obtener más información, consulta la sección sobre cómo requerir protección con CMEK.Configura una política de la organización en la carpeta para exigir que las claves que se usan para CMEK sean del proyecto de claves de claves automáticas mediante la restricción
constraints/gcp.restrictCmekCryptoKeyProjects
. Si quieres obtener más información, consulta Limita el uso de claves de Cloud KMS para CMEK.
Inhabilitar tecla automática
La clave automática de Cloud KMS está habilitada y también inhabilitada a nivel de la carpeta. Los mismos roles que pueden habilitar la Clave automática para una carpeta pueden inhabilitar la Clave automática
para esa carpeta. Para inhabilitar la Clave automática en una carpeta, debes borrar la AutokeyConfig
para quitar la asociación entre la carpeta y el proyecto de la clave de Autokey.
Después de que se quita la configuración de la clave automática en la carpeta, el agente de servicio de Cloud KMS ya no puede crear claves para los desarrolladores cuando crean recursos en la carpeta. Si quitas el vínculo entre la carpeta y el proyecto clave, se inhabilita la clave automática en la carpeta. Sin embargo, te recomendamos que también quites las vinculaciones de IAM para las funciones roles/cloudkms.autokeyAdmin
y roles/cloudkms.autokeyUser
.
Inhabilitar la clave automática no afecta las claves existentes en el proyecto clave. Puedes seguir usando estas claves para proteger tus recursos.
Borrar AutokeyConfig
Console
En la consola de Google Cloud, ve a la página Controles de KMS.
En el selector de contexto, selecciona la carpeta en la que deseas inhabilitar la Clave automática.
Haga clic en Inhabilitar.
Aparecerá un mensaje para que confirmes que deseas inhabilitar la Tecla automática.
Para inhabilitar la clave automática, haz clic en Confirmar.
Un mensaje confirma que la clave automática de Cloud KMS está inhabilitada en la carpeta.
API
Borra el archivo AutokeyConfig
de la carpeta en la que deseas inhabilitar la Clave automática:
curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
--request "PATCH" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{}'
Reemplaza lo siguiente:
FOLDER_ID
: El ID de la carpeta en la que deseas inhabilitar la clave automática.
Revocar roles de tecla automática
Revoca el rol
roles/cloudkms.autokeyAdmin
(opcional):gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyAdmin \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
FOLDER_ID
: Es el ID de la carpeta en la que inhabilitaste la clave automática.USER_EMAIL
: Es la dirección de correo electrónico del usuario al que deseas revocarle el permiso para administrar la clave automática.
Revoca la función
roles/cloudkms.autokeyUser
a nivel de la carpeta (opcional):gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
FOLDER_ID
: Es el ID de la carpeta en la que inhabilitaste la clave automática.USER_EMAIL
: Es la dirección de correo electrónico del usuario al que deseas revocarle el permiso para usar la clave automática.
Revoca la función
roles/cloudkms.autokeyUser
a nivel del proyecto (opcional):gcloud projects remove-iam-policy-binding RESOURCE_PROJECT_NUMBER \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
RESOURCE_PROJECT_NUMBER
: Es el número de proyecto de un proyecto de recursos dentro de la carpeta en el que inhabilitaste la clave automática.USER_EMAIL
: Es la dirección de correo electrónico del usuario al que deseas revocarle el permiso para usar la clave automática.
Opcional: Si no planeas seguir usando el proyecto de clave de Autokey para otras carpetas, revoca la función
roles/cloudkms.admin
para el agente de servicio de 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
Reemplaza
KEY_PROJECT_NUMBER
por el ID numérico del proyecto clave.Si no planeas seguir usando claves creadas dentro del proyecto de claves, revoca la función
roles/cloudkms.admin
para el administrador de Cloud KMS (opcional):gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=user:KEY_ADMIN_EMAIL
Reemplaza lo siguiente:
KEY_PROJECT_NUMBER
: Es el número del proyecto clave.USER_EMAIL
: Es la dirección de correo electrónico del usuario al que deseas revocarle el permiso para usar la clave automática.
¿Qué sigue?
- Obtén más información sobre cuándo usar la llave automática.
- Obtén más información sobre cómo funciona la clave automática.
- Los desarrolladores de Autokey ahora pueden crear recursos protegidos con Autokey.