En esta página, se muestra cómo habilitar y configurar Autokey de Cloud KMS en un carpeta de recursos. Para obtener más información sobre Autokey, consulta Descripción general de Autokey. Los pasos que se indican en esta página debe completarla un administrador de seguridad.
Antes de comenzar
Antes de poder habilitar Autokey de Cloud KMS, debes contar con lo siguiente:
- Un recurso de organización que contiene una carpeta en la que deseas habilitar Autokey Si no tienes una carpeta para habilitar Autokey, puedes crear un nuevo recurso carpeta. Si habilitas Autokey en esta carpeta, se habilitará para todos los proyectos de recursos de la carpeta.
- Si tienes proyectos de recursos en los que deseas usar Autokey, pero no están en una carpeta en la que habilitarás Autokey, Pueden mover proyectos de recursos existentes a carpetas nuevas.
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 organización o carpeta:
-
Administrador de Autokey de Cloud KMS (
roles/cloudkms.autokeyAdmin
) -
Administrador de IAM de carpeta (
roles/resourcemanager.folderIamAdmin
) -
Usuario de la cuenta de facturación (
roles/billing.user
)
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:
-
cloudkms.autokeyConfigs.*
-
cloudkms.projects.showEffectiveAutokeyConfig
-
resourcemanager.folders.get
-
resourcemanager.folders.getIamPolicy
-
resourcemanager.folders.setIamPolicy
-
billing.resourceAssociations.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Decide cómo quieres habilitar Autokey
Puedes habilitar Autokey como parte de tu infraestructura como código con Terraform para realizar los cambios de configuración requeridos. Si si quieres usar Terraform para habilitar Autokey, consulta Habilita Autokey con Terraform en esta página. Si no quieres usar Terraform, primero sigue las instrucciones de la siguiente sección.
Configura el proyecto clave
Recomendamos crear un proyecto de clave nuevo para que contenga los recursos de Cloud KMS que creó Autokey. Debes crear el proyecto clave dentro de tu recurso de la organización. Si ya tienes un proyecto clave Para las claves que creó Autokey, puedes omitir la sección Crear un proyecto clave y continuar desde Configura el proyecto de claves de Autokey en esta página.
El proyecto clave se puede crear en la misma carpeta en la que planeas habilitarlo. Autokey No debes crear otros recursos dentro del proyecto clave. Si intentas crear recursos protegidos por Autokey en la clave proyecto, Autokey rechaza la solicitud de una clave nueva.
Migra a Assured Workloads. en el futuro, crea el proyecto clave en la misma carpeta que los recursos con la protección de esas claves.
Si tu organización usa constraints/gcp.restrictCmekCryptoKeyProjects
restricción de la política de la organización para garantizar que todas las CMEK provienen de una clave especificada
debes agregar tu proyecto clave a la lista de proyectos permitidos. Para
Para obtener más información sobre la política de la organización de CMEK, consulta Organización de CMEK
políticas.
Crea un proyecto clave
Console
- En la consola de Google Cloud, 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 Nuevo proyecto 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 deben estar entre 4 y 30 caracteres.
- En Ubicación, selecciona el recurso para el que deseas ser el superior. 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_ID
Reemplaza 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 proyecto clave nuevo. Ingresaorganization
para crea el nuevo proyecto clave bajo una organización determinada o ingresafolder
para crear el proyecto clave nuevo en una carpeta determinada.PARENT_ID
: Es el ID de la organización o y la carpeta en la que quieres crear el proyecto de la clave.
Prepara el proyecto de clave de Autokey
Console
Habilita la API de Cloud KMS en tu proyecto de clave.
Si usas un proyecto de clave nuevo, otorga a Cloud KMS de administrador en el proyecto de la clave para tu usuarios administradores:
En la consola de Google Cloud, ve a la página IAM.
Selecciona el proyecto clave.
Haz clic en
Otorgar. Access 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.com
Otorga permisos de administrador de Cloud KMS en el proyecto de claves a los 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 de proyecto de la clave. en un proyecto final.KEY_ADMIN_EMAIL
: La dirección de correo electrónico del usuario responsable de administrar las claves de Cloud KMS.
Habilita Autokey 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. Autokey
Haz clic en Habilitar.
Selecciona tu proyecto de clave y, luego, haz clic en Enviar.
Un mensaje confirma que Autokey de Cloud KMS está habilitado en la carpeta.
API
Crea el archivo AutokeyConfig
para la carpeta en la que deseas habilitar.
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"}'
Reemplaza lo siguiente:
FOLDER_ID
: El ID de la carpeta en la que quieras habilitar Autokey.PROJECT_ID
: Es el ID del proyecto de claves.
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 humano. administrador 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 de proyecto de la clave. en un proyecto final.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-ekms.iam.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
por el número de proyecto de la clave. en un proyecto final.
Otorga roles de usuario de Autokey
Antes de que tus desarrolladores puedan usar Autokey, debes otorgarles el rol requerido. Puedes otorgar el rol a nivel de la carpeta o del proyecto. Este rol permite que los desarrolladores soliciten claves desde Cloud KMS agente de servicio mientras se 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 Autokey.USER_EMAIL
: La dirección de correo electrónico del usuario al que debes otorgar permiso para usar Autokey.
Otorga el rol
roles/cloudkms.autokeyUser
a nivel de proyecto:gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de recursos.USER_EMAIL
: La dirección de correo electrónico del usuario al que debes otorgar permiso para usar Autokey.
Tus desarrolladores de Autokey ahora pueden crear claves a pedido. Para obtener información sobre cómo crear recursos protegidos con claves creadas a pedido por Autokey, consulta Cómo crear recursos protegidos con Autokey.
Habilita Autokey con Terraform
En la siguiente muestra 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 Autokey
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-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
}
Reemplaza lo siguiente:
BILLING_ACCOUNT_ID
: Tu facturación de Google Cloud ID de la cuenta. El ID de la cuenta de facturación es un valor alfanumérico de 18 caracteres. separadas 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 rolroles/cloudkms.autokeyAdmin
, por ejemplo,"Ariel@example.com", "Charlie@example.com"
.AUTOKEY_DEVELOPER_USER_IDS
: una lista de direcciones de correo electrónico para usuarios que deberían tener el rolroles/cloudkms.autokeyUser
, para ejemplo,"Kalani@example.com", "Mahan@example.com"
.KEY_PROJECT_ADMIN_USER_IDS
: una lista de direcciones de correo electrónico para usuarios que deberían tener el rolroles/cloudkms.admin
, por ejemplo,"Sasha@example.com", "Nur@example.com"
KEY_PROJECT_ID
: Es el ID que se usará para la clave. proyecto, por ejemplo,autokey-key-project
.
Aplicar el uso de Autokey
Si quieres aplicar de manera forzosa el uso de Autokey 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 los principales que no sean el agente de servicio de Cloud KMS y, luego, se requiere que todas las claves estén protegidas por CMEK con el proyecto de claves de Autokey.
Para aplicar el uso de Autokey de manera forzosa en una carpeta, completa los siguientes pasos:
Quita el acceso para crear claves de forma manual en el proyecto de claves. Si no se pueden crear claves manualmente, solo se pueden crear claves creadas por Autokey en este proyecto. Para obtener más información sobre cómo controlar el acceso, consulta Control de acceso con IAM.
Establece una política de la organización en la carpeta para exigir que los recursos se protegida con una CMEK mediante el
constraints/gcp.restrictNonCmekServices
“compute.vmExternalIpAccess”. Para obtener más información, consulta Cómo exigir la protección de CMEK.Establece una política de la organización en la carpeta para exigir que las claves que se usen para la CMEK deben ser del proyecto de claves de Autokey con la restricción
constraints/gcp.restrictCmekCryptoKeyProjects
. Para ver más información, consulta Limita el uso de claves de Cloud KMS para CMEK.
Cómo inhabilitar Autokey
Autokey de Cloud KMS está habilitado y, también, inhabilitado a nivel de carpeta. Es igual.
los roles que pueden habilitar Autokey para una carpeta pueden inhabilitar Autokey
para esa carpeta. Para inhabilitar Autokey en una carpeta, debes borrar el
AutokeyConfig
para quitar la asociación entre la carpeta y el
Proyecto de clave de Autokey.
Después de quitar la configuración de Autokey de la carpeta, el
El agente de servicio de Cloud KMS ya no puede crear claves para los desarrolladores cuando
crean recursos en la carpeta. Si eliminas el vínculo entre la carpeta y
el proyecto clave inhabilita Autokey en la carpeta; Sin embargo,
se recomienda que también quites las vinculaciones de IAM para
Roles de roles/cloudkms.autokeyAdmin
y roles/cloudkms.autokeyUser
.
Inhabilitar Autokey no afecta las claves existentes en el proyecto de claves. Tú puede seguir usando estas claves para proteger sus 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. Autokey
Haga clic en Inhabilitar.
Aparecerá un mensaje para que confirmes que deseas inhabilitar Autokey
Para inhabilitar Autokey, haz clic en Confirmar.
Un mensaje confirma que Autokey de Cloud KMS está inhabilitado en la carpeta.
API
Borra el AutokeyConfig
de la carpeta en la que deseas inhabilitar.
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 '{}'
Reemplaza lo siguiente:
FOLDER_ID
: El ID de la carpeta en la que quieres inhabilitar Autokey.
Cómo revocar roles de Autokey
Opcional: Revoca el rol
roles/cloudkms.autokeyAdmin
: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 del en la que inhabilitaste Autokey.USER_EMAIL
: La dirección de correo electrónico del usuario para el cual quieres revocar el permiso para administrar Autokey.
Opcional: Revoca el rol de
roles/cloudkms.autokeyUser
a nivel de la carpeta: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 del en la que inhabilitaste Autokey.USER_EMAIL
: La dirección de correo electrónico del usuario para el cual quieres revocar el permiso para usar Autokey.
Opcional: Revoca el rol
roles/cloudkms.autokeyUser
a nivel del proyecto: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 del proyecto de un proyecto de recursos dentro de la carpeta en la que inhabilitaste Autokey.USER_EMAIL
: La dirección de correo electrónico del usuario para el cual quieres revocar el permiso para usar Autokey.
Opcional: Si no planeas seguir usando el proyecto clave para Autokey para otras carpetas, revoca el rol
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-ekms.iam.gserviceaccount.com
Reemplaza
KEY_PROJECT_NUMBER
por el ID numérico del proyecto clave.Opcional: Si no planeas seguir usando las claves creadas dentro de la clave revoca el rol
roles/cloudkms.admin
para Cloud KMS administrador: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 de proyecto de la proyecto clave.USER_EMAIL
: La dirección de correo electrónico del usuario para el cual quieres revocar el permiso para usar 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.
- Tus desarrolladores de Autokey ahora pueden crear recursos protegidos con Autokey