En este documento, se muestra cómo habilitar y configurar Autokey de Cloud KMS con la Google Cloud consola, Google Cloud CLI, la API de Cloud KMS o Terraform. Puedes habilitar Autokey con el almacenamiento de claves en un proyecto dedicado para una carpeta, o bien habilitar Autokey con el almacenamiento de claves en el mismo proyecto para un proyecto individual o para todos los proyectos dentro de una carpeta. Para obtener más información sobre Autokey, consulta Descripción general de Autokey.
Este documento está dirigido a los administradores.
Herencia de la configuración de Autokey
Cuando configuras Autokey en una carpeta, las carpetas y los proyectos secundarios dentro de esa carpeta heredan la configuración de Autokey de su carpeta principal. Cuando configuras Autokey en una carpeta o un proyecto secundarios, decides si heredar la configuración del recurso principal o crear una nueva configuración de Autokey para ese recurso. Los parámetros de configuración de Autokey aplicados en los recursos secundarios anulan la configuración de la carpeta principal.
En la siguiente tabla, se muestran los casos de uso admitidos para la configuración de Autokey:
| Tipo de recurso | Configuración de Autokey | Descripción |
|---|---|---|
| Organización | No aplicable | Autokey no se puede habilitar para las organizaciones. Los recursos secundarios
dentro de una organización heredan un recurso AutokeyConfig
vacío. En la consola de Google Cloud , estos recursos muestran un Estado de Autokey como No habilitado. Si deseas restringir el uso de Autokey en tu organización o inhabilitarlo por completo, puedes usar políticas de la organización. Para obtener más información, consulta Cómo controlar el uso de las claves automáticas. |
| Carpeta | DEDICATED_KEY_PROJECT |
Autokey con almacenamiento de claves en un proyecto dedicado está habilitado para los proyectos de recursos dentro de la carpeta. En el caso de los proyectos de recursos que heredan esta configuración, Autokey crea claves en el proyecto de claves dedicado. |
| Carpeta | RESOURCE_PROJECT |
Autokey con almacenamiento de claves en el mismo proyecto está habilitado para los proyectos de recursos dentro de la carpeta. En el caso de los proyectos de recursos que heredan esta configuración, Autokey crea claves en el mismo proyecto que los recursos que protegen. |
| Carpeta | DISABLED |
Autokey está inhabilitado en la carpeta. Sin embargo, las carpetas y los proyectos secundarios pueden anular esta configuración. Si deseas restringir Autokey en tu carpeta o inhabilitarla por completo, puedes usar políticas de la organización. Para obtener más información, consulta Cómo controlar el uso de las claves automáticas. |
| Carpeta | KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED |
La carpeta hereda la configuración de Autokey de su carpeta o organización principal. |
| Proyecto | RESOURCE_PROJECT |
Autokey con almacenamiento de claves en el mismo proyecto está habilitado para el proyecto de recursos. En el caso de los recursos creados en este proyecto, Autokey crea claves en el mismo proyecto. |
| Proyecto | DISABLED |
Autokey está inhabilitado para el proyecto de recursos. Los desarrolladores que crean recursos en este proyecto deben crear y aprovisionar claves de forma manual si desean usar la CMEK para los recursos que crean. |
| Proyecto | KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED |
El proyecto hereda la configuración de Autokey de su carpeta principal. |
Antes de comenzar
Antes de habilitar Autokey con el almacenamiento de claves en un proyecto dedicado para una carpeta, debes tener lo siguiente:
Es un recurso de organización que contiene una carpeta en la que deseas habilitar Autokey. Si no tienes una carpeta en la que quieras habilitar Autokey, puedes crear una carpeta de recursos nueva. Si habilitas Autokey en esta carpeta, se habilitará para todos los proyectos de recursos que contiene.
Si tienes proyectos de recursos en los que quieres usar Autokey con almacenamiento de claves de proyectos dedicados, pero no están dentro de una carpeta en la que habilitarás Autokey, puedes mover proyectos de recursos existentes a carpetas nuevas.
Antes de habilitar Autokey con el almacenamiento de claves en el mismo proyecto, debes tener uno de los siguientes elementos:
- Un proyecto Google Cloud en el que deseas habilitar Autokey y en el que el permiso
keyHandles.createno está bloqueado por una política de denegación de IAM. - Una carpeta Google Cloud en la que deseas habilitar Autokey, que contiene al menos un proyecto en el que el permiso
keyHandles.createno está bloqueado por una política de denegación de IAM.
Roles obligatorios
Para obtener los permisos que necesitas para habilitar y configurar Autokey, pídele a tu administrador que te otorgue los siguientes roles de IAM en la carpeta, el proyecto o un recurso principal:
-
Para habilitar Autokey, haz lo siguiente:
- Administrador de Autokey de Cloud KMS (
roles/cloudkms.autokeyAdmin) - Administrador de Service Usage ()
roles/serviceusage.serviceUsageAdmin
- Administrador de Autokey de Cloud KMS (
-
Para habilitar Autokey con el almacenamiento de claves en un proyecto dedicado, haz lo siguiente:
- Administrador de IAM de carpeta (
roles/resourcemanager.folderIamAdmin) - Usuario de la cuenta de facturación (
roles/billing.user)
- Administrador de IAM de carpeta (
-
Para ver la configuración de Autokey, haz lo siguiente:
Visualizador de Cloud KMS (
roles/cloudkms.viewer) -
Para ver todos los parámetros de configuración de Autokey efectivos, haz lo siguiente:
- Visualizador de Cloud Asset (
roles/cloudasset.viewer) en la organización - Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer)
- Visualizador de Cloud Asset (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para habilitar y configurar Autokey. 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 Autokey:
-
Para habilitar Autokey, haz lo siguiente:
-
cloudkms.autokeyConfigs.* -
serviceusage.services.enable
-
-
Para habilitar Autokey con el almacenamiento de claves en un proyecto dedicado, haz lo siguiente:
-
resourcemanager.folders.get -
resourcemanager.folders.getIamPolicy -
resourcemanager.folders.setIamPolicy -
billing.resourceAssociations.create
-
-
Para ver la configuración de Autokey, haz lo siguiente:
-
cloudkms.folders.showEffectiveAutokeyConfig -
cloudkms.projects.showEffectiveAutokeyConfig
-
-
Para ver todos los parámetros de configuración de Autokey efectivos, haz lo siguiente:
-
cloudasset.assets.query -
serviceusage.services.use
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Configuración de Terraform
En esta sección, se incluyen ejemplos de variables y recursos de Terraform que son requisitos previos para el resto de los ejemplos de Terraform que se incluyen en este documento. Si no usas Terraform para crear o administrar tus parámetros de configuración de Autokey, omite esta sección.
Haz clic aquí para mostrar u ocultar la muestra de configuración de Terraform
En este ejemplo, se completan los siguientes pasos de configuración:
- Define variables que se usan en muestras posteriores de Terraform.
- Crea una carpeta de recursos. Puedes omitir este paso si planeas usar solo el almacenamiento de claves del mismo proyecto en proyectos individuales.
- Otorga roles de administrador y usuario de 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 }
Reemplaza lo siguiente:
BILLING_ACCOUNT_ID: El ID de tu cuenta de Google Cloud facturación 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 de los usuarios que deben tener el rol "roles/cloudkms.autokeyAdmin", por ejemplo,"Ariel@example.com", "Charlie@example.com".AUTOKEY_DEVELOPER_USER_IDS: Es una lista de direcciones de correo electrónico de los usuarios que deben tener el rol `roles/cloudkms.autokeyUser`, por ejemplo,"Kalani@example.com", "Mahan@example.com".KEY_PROJECT_ADMIN_USER_IDS: Es una lista de direcciones de correo electrónico de los usuarios que deben tener el rol `roles/cloudkms.admin` (por ejemplo,"Sasha@example.com", "Nur@example.com").
Configura Autokey con el almacenamiento de claves en un proyecto dedicado
Cuando usas Autokey con almacenamiento de claves de proyecto dedicado en una carpeta, debes elegir un solo proyecto de claves para que contenga todas las claves creadas por Autokey en esa carpeta. Si usas el almacenamiento de claves en el mismo proyecto, no necesitas un proyecto de claves dedicado. Continúa desde Habilita Autokey con el almacenamiento de claves en el mismo proyecto.
Te recomendamos que crees un proyecto de claves nuevo para que contenga los recursos de Cloud KMS creados por Autokey. Debes crear el proyecto de clave dentro del recurso de organización. Si ya tienes un proyecto de claves que deseas usar para las claves creadas por Autokey, puedes omitir la sección Crea un proyecto de claves y continuar desde Configura el proyecto de claves de Autokey en esta página.
El proyecto de claves se puede crear dentro de la misma carpeta en la que planeas habilitar Autokey. No debes crear otros recursos dentro del proyecto de clave. Si intentas crear recursos protegidos por Autokey en el proyecto de claves, Autokey rechazará la solicitud de una clave nueva.
Si es posible que desees migrar a Assured Workloads en el futuro, crea el proyecto de claves dentro de la misma carpeta que los recursos protegidos por esas claves.
Si tu organización usa la restricción de política de la organización constraints/gcp.restrictCmekCryptoKeyProjects para garantizar que todas las CMEK provengan de proyectos clave especificados, debes agregar tu proyecto clave a la lista de proyectos permitidos. Para obtener más información sobre la política de la organización de CMEK, consulta Políticas de la organización de CMEK.
Crea un proyecto clave
Console
-
En la Google Cloud consola, ve a la página Administrar recursos.
- En Seleccionar organización, selecciona el recurso de la 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 principal de tu proyecto clave.
- Para terminar de crear el proyecto, haz clic en Crear.
gcloud
Crea un proyecto nuevo:
gcloud projects create PROJECT_ID \ --PARENT_TYPE=PARENT_IDReemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto que contiene el llavero de claves.PARENT_TYPE: Es el tipo de recurso en el que deseas crear el nuevo proyecto de claves. Ingresaorganizationpara crear el nuevo proyecto de clave en una organización determinada o ingresafolderpara crear el nuevo proyecto de clave en una carpeta determinada.PARENT_ID: Es el ID de la organización o la carpeta en la que deseas crear el proyecto clave.
REST
Crea un proyecto nuevo:
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" }'Reemplaza lo siguiente:
PROJECT_ID: Es el identificador que deseas usar para tu proyecto de claves dedicado.PROJECT_NAME: Es el nombre que deseas usar para tu proyecto de clave dedicada.PARENT_TYPE: Es el tipo de recurso principal en el que deseas crear el proyecto de clave dedicada, por ejemplo,organizationsofolders.PARENT_ID": Es el identificador del recurso principal en el que deseas crear el proyecto de clave dedicada.
Terraform
En el siguiente ejemplo de Terraform, se crea un proyecto de claves dedicado en la carpeta creada anteriormente.
/* 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
}
Reemplaza KEY_PROJECT_ID por el ID que se usará para el proyecto de clave dedicada, por ejemplo, autokey-key-project.
Cómo configurar una retención del proyecto
Después de crear el proyecto de Cloud KMS, te recomendamos que lo protejas con una retención (versión preliminar) para evitar la eliminación accidental. Cuando se aplica una retención del proyecto, se bloquea la eliminación del proyecto de Cloud KMS hasta que se quite la retención.
Prepara el proyecto de claves dedicado
Console
Habilita la API de Cloud KMS en tu proyecto de claves.
Si usas un proyecto de claves nuevo, otorga permisos de administrador de Cloud KMS en el proyecto de claves. Repite los siguientes pasos para otorgarte a ti mismo y a cada uno de los demás usuarios administradores de Cloud KMS el rol de administrador 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 claves:
gcloud services enable cloudkms.googleapis.comOtorga permisos de administrador de Cloud KMS en el proyecto de la clave. Repite el siguiente comando para otorgarte el rol de
roles/cloudkms.admina ti y a cada uno de los demás usuarios administradores de Cloud KMS:gcloud projects add-iam-policy-binding PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=user:KEY_ADMIN_EMAILReemplaza lo siguiente:
PROJECT_NUMBER: Es el número del proyecto de claves.KEY_ADMIN_EMAIL: Es la dirección de correo electrónico del usuario responsable de administrar las claves de Cloud KMS.
REST
Habilita la API de Cloud KMS en tu proyecto de claves:
curl "https://serviceusage.googleapis.com/v1/projects/PROJECT_ID/services/cloudkms.googleapis.com:enable" \ --request "POST" \ --header "authorization: Bearer TOKEN"Reemplaza
PROJECT_IDpor el identificador de tu proyecto de clave dedicada.Obtén la política de IAM actual para el proyecto de clave dedicada.
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 respuesta contiene la política de permisos actual del proyecto.
Modifica la política de permiso que se devolvió para agregar el rol
roles/cloudkms.admina cada usuario administrador de Cloud KMS, incluido tú, con la siguiente vinculación de rol de ejemplo como guía:json { "role": "roles/cloudkms.admin", "members": [ "PRINCIPAL_LIST" ], }Reemplaza
PRINCIPAL_LISTpor una lista separada por comas de principales de usuario, por ejemplo,admin_1@example.com,admin_2@example.com.Este cambio no se hará efectivo hasta que establezcas la nueva política.
Establece la nueva política de permisos.
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'Reemplaza lo siguiente:
PROJECT_ID: Es el identificador de tu proyecto de claves dedicado.ALLOW_POLICY: Es el JSON de la política de permiso actualizada que creaste en el paso anterior, incluidas las concesiones de roles existentes y las que acabas de agregar.
Terraform
En el siguiente ejemplo de Terraform, se habilita la API de Cloud KMS en el proyecto de clave dedicado y se otorga el rol roles/cloudkms.admin a las principales administradoras de Cloud KMS identificadas anteriormente.
# 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 ]
}
Habilita Autokey de Cloud KMS en una carpeta de recursos
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona la carpeta en la que deseas habilitar Autokey con almacenamiento de claves de proyectos dedicados.
- En la sección Autokey, haz clic en Administrar.
- Haz clic en Configurar.
- En Fuente de configuración, selecciona Configurar para la carpeta.
- En Configuración, selecciona Habilitar el almacenamiento de claves en un proyecto dedicado.
Selecciona tu proyecto clave y, luego, haz clic en Enviar.
Un mensaje confirma que Autokey de Cloud KMS está habilitado en la carpeta.
gcloud
Crea un archivo YAML que contenga el siguiente
AutokeyConfig:name: folders/FOLDER_NUMBER/autokeyConfig keyProjectResolutionMode: DEDICATED_KEY_PROJECT keyProject: projects/PROJECT_IDReemplaza lo siguiente:
FOLDER_NUMBER: Es el número de la carpeta en la que deseas habilitar Autokey con almacenamiento de claves de proyecto dedicado.PROJECT_ID: Es el identificador de tu proyecto de claves dedicado.
Aplica el archivo
AutokeyConfiga la carpeta:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHReemplaza AUTOKEY_CONFIG_PATH por la ruta de acceso al archivo YAML que creaste en el paso anterior.
REST
Crea el AutokeyConfig para la carpeta en la que deseas habilitar Autokey con almacenamiento de claves en un proyecto dedicado:
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"}'
Reemplaza lo siguiente:
FOLDER_ID: Es el ID de la carpeta en la que deseas habilitar Autokey.PROJECT_ID: Es el ID del proyecto de claves.
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. */
}
Configura el agente de servicio de Cloud KMS
El agente de servicio de Cloud KMS para un proyecto de claves 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.
gcloud
Crea el agente de servicio de Cloud KMS:
gcloud beta services identity create --service=cloudkms.googleapis.com \ --project=PROJECT_NUMBERReemplaza
PROJECT_NUMBERpor el número del proyecto clave.El resultado es similar a lo siguiente:
Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.comEl resultado del comando indica que se creó la cuenta de servicio de Cloud EKM (con el subdominio
gcp-sa-ekms). Sin embargo, el comando también crea el agente de servicio de Cloud KMS (con el subdominiogcp-sa-cloudkms), que es el agente de servicio que usarás más adelante en estas instrucciones.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.comReemplaza
PROJECT_NUMBERpor el número del proyecto clave.
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"
}
Habilita Autokey con el almacenamiento de claves en el mismo proyecto
Cuando usas Autokey con almacenamiento de claves en el mismo proyecto, Autokey crea tus claves dentro del mismo proyecto que los recursos que protegen. Los proyectos que usan el almacenamiento de claves del mismo proyecto pueden existir dentro de carpetas que usan el almacenamiento de claves del proyecto dedicado. Cuando Autokey está habilitado en un proyecto, la configuración de Autokey a nivel del proyecto anula la configuración de Autokey en la carpeta principal.
Para habilitar Autokey con almacenamiento de claves en el mismo proyecto para un proyecto individual, completa los siguientes pasos:
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona el proyecto en el que deseas habilitar Autokey con el almacenamiento de claves en el mismo proyecto.
- En la sección Autokey, haz clic en Administrar.
- Haz clic en Configurar.
- En Fuente de configuración, selecciona Configurar para el proyecto.
- En Configuración, selecciona Habilitar el almacenamiento de claves en el mismo proyecto.
Haz clic en Enviar.
Un mensaje confirma que Autokey de Cloud KMS está habilitado en el proyecto.
gcloud
Crea un archivo YAML que contenga el siguiente
AutokeyConfig:name: projects/PROJECT_ID/autokeyConfig keyProjectResolutionMode: RESOURCE_PROJECT keyProject:Reemplaza
PROJECT_IDpor el identificador del proyecto en el que deseas habilitar Autokey con el almacenamiento de claves en el mismo proyecto.Aplica el
AutokeyConfigal proyecto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHReemplaza AUTOKEY_CONFIG_PATH por la ruta de acceso al archivo YAML que creaste en el paso anterior.
Habilita la API de Cloud KMS en el proyecto:
gcloud services enable cloudkms.googleapis.com
REST
Con la API de REST, crea el objeto
AutokeyConfigpara el proyecto en el que deseas habilitar Autokey con el almacenamiento de claves en el mismo proyecto: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": ""}'Reemplaza
PROJECT_IDpor el ID del proyecto en el que deseas habilitar Autokey.En gcloud CLI, habilita la API de Cloud KMS en el proyecto:
gcloud services enable cloudkms.googleapis.com
Terraform
Para habilitar Autokey con almacenamiento de claves en el mismo proyecto en un proyecto individual, usa un recurso autokey_config_project similar al siguiente:
/* 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
}
Para habilitar Autokey con almacenamiento de claves en el mismo proyecto para todos los proyectos dentro de una carpeta, completa los siguientes pasos:
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona la carpeta en la que deseas habilitar Autokey con el almacenamiento de claves en el mismo proyecto.
- Haz clic en Configurar.
- En Fuente de configuración, selecciona Configurar para la carpeta.
- En Configuración, selecciona Habilitar el almacenamiento de claves en el mismo proyecto.
Haz clic en Enviar.
Un mensaje confirma que Autokey de Cloud KMS está habilitado en la carpeta.
gcloud
Crea un archivo YAML que contenga el siguiente
AutokeyConfig:name: folders/FOLDER_NUMBER/autokeyConfig keyProjectResolutionMode: RESOURCE_PROJECT keyProject:Reemplaza
FOLDER_NUMBERpor el número de la carpeta en la que deseas habilitar Autokey con el almacenamiento de claves del mismo proyecto.Aplica el archivo
AutokeyConfiga la carpeta:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHReemplaza AUTOKEY_CONFIG_PATH por la ruta de acceso al archivo YAML que creaste en el paso anterior.
REST
Con la API de REST, crea el objeto
AutokeyConfigpara la carpeta en la que deseas habilitar Autokey con el almacenamiento de claves en el mismo proyecto: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": ""}'Reemplaza
FOLDER_IDpor el ID de la carpeta en la que deseas habilitar Autokey. Este comando habilita Autokey con almacenamiento de claves en el mismo proyecto para todos los proyectos de la carpeta.En gcloud CLI, habilita la API de Cloud KMS en cada proyecto en el que desees usar Autokey con el almacenamiento de claves en el mismo proyecto:
gcloud services enable cloudkms.googleapis.comPuedes habilitar la API de Cloud KMS en todos los proyectos a la vez o en proyectos individuales según sea necesario. Tus desarrolladores no podrán usar Autokey en el proyecto hasta que se habilite la API de Cloud KMS para ese proyecto.
Terraform
Para habilitar Autokey con almacenamiento de claves en el mismo proyecto en todos los proyectos de una carpeta, usa un recurso folder_config similar al siguiente:
/* 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. */
}
Borra la configuración de Autokey
Puedes borrar la configuración de Autokey en una carpeta o un proyecto para volver a usar la configuración de la carpeta principal.
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona la carpeta o el proyecto en el que deseas borrar la configuración de Autokey.
- En la sección Autokey, haz clic en Administrar.
- Haz clic en Configurar.
- En Fuente de configuración, selecciona Heredar.
- Haz clic en Enviar.
gcloud
Crea un archivo YAML que contenga el siguiente
AutokeyConfig:name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED keyProject:Reemplaza lo siguiente:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas borrar la configuración de Autokey. Se establece enfoldersoprojects.RESOURCE_ID: Es el identificador de la carpeta en la que deseas borrar la configuración de Autokey.
Aplica el archivo
AutokeyConfiga la carpeta o al proyecto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHReemplaza AUTOKEY_CONFIG_PATH por la ruta de acceso al archivo YAML que creaste en el paso anterior.
REST
Borra AutokeyConfig para la carpeta o el proyecto en el que deseas revertir la configuración heredada de 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": "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED", "keyProject": ""}'
Reemplaza lo siguiente:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas inhabilitar Autokey. Se establece enfoldersoprojects.RESOURCE_ID: Es el identificador de la carpeta en la que deseas inhabilitar Autokey con el almacenamiento de claves del mismo proyecto.
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"
}
Cómo ver la configuración efectiva de Autokey
Puedes ver la configuración de Autokey vigente de una carpeta o un proyecto. La configuración efectiva de Autokey te indica lo siguiente:
- Indica si Autokey está habilitado en el recurso seleccionado.
- Si Autokey está habilitada, indica si el recurso seleccionado usa el almacenamiento de claves en un proyecto dedicado o en el mismo proyecto.
- Si el recurso seleccionado usa almacenamiento de claves de proyecto dedicado, es el identificador de recurso del proyecto de claves dedicado.
Indica si esta configuración de Autokey se hereda de una carpeta principal o se configura en el recurso seleccionado.
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona la carpeta o el proyecto en el que deseas ver la configuración de Autokey.
- En la sección Autokey, haz clic en Administrar.
gcloud
Consulta el AutokeyConfig vigente:
gcloud kms autokey-config show-effective-config \
--RESOURCE_TYPE=RESOURCE_ID
Reemplaza lo siguiente:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas ver la configuración efectiva de Autokey. Se establece enfolderoproject.RESOURCE_ID: Es el identificador del recurso en el que deseas ver la configuración efectiva de Autokey.
El resultado es similar a lo siguiente:
keyProject: KEY_PROJECT
keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE
source:
name: RESOURCE_IDENTIFIER
En esta salida, se incluyen los siguientes valores:
KEY_PROJECT: Es el identificador de recurso del proyecto clave, por ejemplo,projects/PROJECT_ID. Si Autokey está inhabilitada o si el recurso es una carpeta en la que está habilitado el almacenamiento de claves en el mismo proyecto, se omite este campo.KEY_PROJECT_RESOLUTION_MODE: ElkeyProjectResolutionModedel recurso, por ejemplo,RESOURCE_PROJECT,DEDICATED_KEY_PROJECToDISABLED. Si Autokey no está habilitado en el recurso o en algún recurso principal, se omite este campo.RESOURCE_IDENTIFIER: Es el identificador del recurso en el que se configura elAutokeyConfig. Esto te permite determinar si elAutokeyConfigse hereda de un recurso principal o se configura en el recurso sobre el que realizaste la consulta.
REST
Para ver el AutokeyConfig vigente de una carpeta o un proyecto, haz lo siguiente:
curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:showEffectiveAutokeyConfig" \
--request "GET" \
--header "authorization: Bearer TOKEN"
```
Replace the following:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas ver la configuración de Autokey. Se establece enfoldersoprojects.RESOURCE_ID: Es el identificador del recurso en el que deseas ver la configuración de Autokey.
El resultado es similar a lo siguiente:
{
"keyProject": KEY_PROJECT,
"keyProjectResolutionMode": KEY_PROJECT_RESOLUTION_MODE,
"source": {
RESOURCE_IDENTIFIER
}
}
En esta salida, se incluyen los siguientes valores:
KEY_PROJECT: Es el identificador de recurso del proyecto clave, por ejemplo,projects/PROJECT_ID. Si Autokey está inhabilitada o si el recurso es una carpeta en la que se habilitó el almacenamiento de claves en el mismo proyecto, se omite este campo.KEY_PROJECT_RESOLUTION_MODE: ElkeyProjectResolutionModedel recurso, por ejemplo,RESOURCE_PROJECT,DEDICATED_KEY_PROJECToDISABLED. Si Autokey no está habilitado en el recurso o en algún recurso principal, se omite este campo.RESOURCE_IDENTIFIER: Es el identificador del recurso en el que se configura elAutokeyConfig. Esto te permite determinar si elAutokeyConfigse hereda de un recurso principal o se configura en el recurso sobre el que realizaste la consulta.
SQL
Puedes usar una consulta en SQL con Cloud Asset Inventory para evaluar la configuración efectiva de Autokey para todos los proyectos dentro de una carpeta o una organización.
Establece variables de entorno de bash para el ID de la organización y el alcance de la búsqueda.
export ORG_ID="ORGANIZATION_ID" export TARGET_SCOPE="RESOURCE_TYPE/RESOURCE_ID"Reemplaza lo siguiente:
ORGANIZATION_ID: Es el identificador numérico de tu organización.RESOURCE_TYPE: Es el tipo de recurso en el que deseas ver la configuración efectiva de Autokey. Establece el valor enorganizationspara ver las configuraciones de todos los proyectos de tu organización o enfolderspara ver las configuraciones de todos los proyectos dentro de una carpeta específica.RESOURCE_ID: Es el identificador numérico de la organización o la carpeta en la que deseas ver la configuración efectiva de Autokey.
Usa el comando
gcloud asset querypara ejecutar la consulta.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) "El resultado incluye los siguientes campos:
project_number: Es el identificador numérico completo del recurso de cada proyecto, por ejemplo,projects/PROJECT_NUMBER.project_id: Es el identificador de cada proyecto, por ejemplo,PROJECT_ID.effective_config_source: Es el identificador del recurso en el que se establece la configuración de Autokey del proyecto, por ejemplo,folders/FOLDER_NUMBERsi la configuración se hereda de una carpeta principal oprojects/PROJECT_NUMBERsi la configuración se establece en el proyecto. Si el proyecto no tiene ni hereda unAutokeyConfig, este campo muestraNo Autokey.autokey_config_state: Indica si hay una configuración de AutokeyACTIVEen la carpeta, incluso si esa configuración esDISABLED. Si el proyecto no tiene ni hereda unAutokeyConfig, este campo estará vacío.resolution_mode: Es el modo de resolución del proyecto clave de la configuración de Autokey efectiva en el proyecto.key_project: Indica dónde Autokey crea claves para los recursos del proyecto; por ejemplo,projects/KEY_PROJECT_IDcuando el proyecto usa el almacenamiento de claves en un proyecto dedicado oRESOURCE_PROJECT_IDcuando el proyecto usa el almacenamiento de claves en el mismo proyecto. Cuando Autokey no está habilitada en el proyecto, este campo muestraNo key project.
Inhabilita Autokey
Los mismos roles que pueden habilitar Autokey también pueden inhabilitarlo. Para inhabilitar Autokey, puedes borrar AutokeyConfig o establecer feedbackKeyProjectResolutionMode en DISABLED. Puedes inhabilitar Autokey en una carpeta o un proyecto. También puedes inhabilitar Autokey para proyectos individuales dentro de una carpeta en la que Autokey esté habilitado.
Después de inhabilitar Autokey para una carpeta o un proyecto, el agente de servicio de Cloud KMS ya no podrá crear claves para los desarrolladores cuando creen recursos en esa carpeta o proyecto.
Si deseas inhabilitar por completo Autokey, te recomendamos que también quites las vinculaciones de IAM para los roles roles/cloudkms.autokeyAdmin y roles/cloudkms.autokeyUser.
La inhabilitación de Autokey no afecta las claves existentes en el proyecto de claves. Puedes seguir usando estas claves para proteger tus recursos.
Inhabilita Autokey para una carpeta o un proyecto
Console
-
En la consola de Google Cloud , ve a la página Controles de administración de claves.
- En el selector de contexto, selecciona la carpeta o el proyecto en el que deseas inhabilitar Autokey.
- En la sección Autokey, haz clic en Administrar.
- Haz clic en Configurar.
- En Fuente de configuración, selecciona Configurar para la carpeta o Configurar para el proyecto.
- En Configuración, selecciona Inhabilitar Autokey para la carpeta o Inhabilitar Autokey para el proyecto.
Haz clic en Enviar.
Aparecerá un mensaje en el que se te pedirá que confirmes que deseas inhabilitar Autokey.
Para inhabilitar Autokey, haz clic en Confirmar.
Un mensaje confirma que Autokey de Cloud KMS está inhabilitado.
gcloud
Crea un archivo YAML que contenga el siguiente
AutokeyConfig:name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig keyProjectResolutionMode: DISABLED keyProject:Reemplaza lo siguiente:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas inhabilitar Autokey. Se establece enfoldersoprojects.RESOURCE_ID: Es el identificador de la carpeta en la que deseas inhabilitar Autokey con el almacenamiento de claves del mismo proyecto.
Aplica el archivo
AutokeyConfiga la carpeta o el proyecto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHReemplaza AUTOKEY_CONFIG_PATH por la ruta de acceso al archivo YAML que creaste en el paso anterior.
REST
Actualiza el AutokeyConfig para la carpeta o el proyecto en el que deseas inhabilitar 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": ""}'
Reemplaza lo siguiente:
RESOURCE_TYPE: Es el tipo de recurso en el que deseas inhabilitar Autokey. Se establece enfoldersoprojects.RESOURCE_ID: Es el identificador de la carpeta en la que deseas inhabilitar Autokey con el almacenamiento de claves del mismo proyecto.
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"
}
Cómo revocar roles de Autokey
Si inhabilitas Autokey actualizando AutokeyConfig, se impedirá que el agente de servicio de Cloud KMS aprovisione claves nuevas en el proyecto o la carpeta afectados. Sin embargo, si deseas inhabilitar Autokey por completo, te recomendamos que también quites las vinculaciones de IAM para los roles roles/cloudkms.autokeyAdmin y roles/cloudkms.autokeyUser.
Opcional: Revoca el rol
roles/cloudkms.autokeyAdmin:gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyAdmin \ --member=user:USER_EMAILReemplaza lo siguiente:
FOLDER_ID: Es el ID de la carpeta en la que inhabilitaste Autokey.USER_EMAIL: La dirección de correo electrónico del usuario al que deseas revocar el permiso para administrar Autokey.
Opcional: Revoca el rol
roles/cloudkms.autokeyUsera nivel de la carpeta:gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAILReemplaza lo siguiente:
FOLDER_ID: Es el ID de la carpeta en la que inhabilitaste Autokey.USER_EMAIL: Es la dirección de correo electrónico del usuario al que deseas revocar el permiso para usar Autokey.
Opcional: Revoca el rol
roles/cloudkms.autokeyUsera nivel del proyecto:gcloud projects remove-iam-policy-binding \ RESOURCE_PROJECT_NUMBER \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAILReemplaza lo siguiente:
RESOURCE_PROJECT_NUMBER: Es el número del proyecto de un proyecto de recursos dentro de la carpeta en la que inhabilitaste Autokey.USER_EMAIL: Es la dirección de correo electrónico del usuario al que deseas revocar el permiso para usar Autokey.
Opcional: Si no planeas seguir usando el proyecto de claves para Autokey en otras carpetas, revoca el rol
roles/cloudkms.adminpara 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.comReemplaza
KEY_PROJECT_NUMBERpor el ID numérico del proyecto clave.Opcional: Si no planeas seguir usando las claves creadas dentro del proyecto de claves, revoca el rol
roles/cloudkms.adminpara el administrador de Cloud KMS:gcloud projects remove-iam-policy-binding \ KEY_PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=user:KEY_ADMIN_EMAILReemplaza lo siguiente:
KEY_PROJECT_NUMBER: Es el número del proyecto de la clave.KEY_ADMIN_EMAIL: Es la dirección de correo electrónico del usuario al que deseas revocar el permiso para configurar Autokey.
¿Qué sigue?
- Obtén más información sobre cuándo usar Autokey.
- Obtén más información sobre cómo funciona Autokey.
- Obtén más información para controlar el uso de Autokey.
- Tus desarrolladores de Autokey ahora pueden crear recursos protegidos con Autokey.