En esta página, también se describe cómo configurar el aprovisionamiento automático y la administración del ciclo de vida de las identidades para cargas de trabajo administradas para Compute Engine. Configura grupos de AC para emitir certificados con Certificate Authority Service (AC), que es un servicio de Google Cloud escalable y con alta disponibilidad que simplifica y automatiza la implementación, administración y seguridad de los servicios de AC. Cada VM se aprovisiona con credenciales X.509 del grupo de AC configurado. Estas credenciales se pueden usar para establecer conexiones mTLS.
Con las identidades de cargas de trabajo administradas para Compute Engine, puedes implementar comunicaciones autenticadas y encriptadas de forma mutua entre dos VMs de Compute Engine. Las aplicaciones de carga de trabajo que se ejecutan en las VMs configuradas pueden usar las credenciales X.509 para mTLS por VM. Certificate Authority Service rota y administra automáticamente estos certificados de mTLS.
Antes de comenzar
Solicita acceso a la vista previa de Workload Identity administrada.
Configura Google Cloud CLI
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Configura Google Cloud CLI para usar el proyecto incluido en la lista de entidades permitidas para la facturación y la cuota.
gcloud config set billing/quota_project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto que se agregó a la lista de entidades permitidas para la vista previa de Workload Identity administrada.- Revisa la documentación de Descripción general de las identidades para cargas de trabajo administradas.
-
Enable the Compute Engine API:
gcloud services enable compute.googleapis.com
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs que usen certificados de identidad de cargas de trabajo administradas para la autenticación en otras cargas de trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Descripción general
Si quieres usar identidades para cargas de trabajo administradas en tus aplicaciones, debes realizar las siguientes tareas:
Administrador de seguridad:
- Crea identidades para cargas de trabajo administradas en un grupo de identidades para cargas de trabajo.
- Define la política de certificación de cargas de trabajo.
- Configura Certificate Authority Service que te permitan emitir certificados para identidades para cargas de trabajo administradas.
- Autoriza identidades para cargas de trabajo administradas que te permitan solicitar certificados del grupo de AC.
- Define la configuración de confianza y emisión de certificados.
Administrador de Compute:
- Obtén el archivo de configuración para subir los metadatos del socio.
- Habilita las identidades para cargas de trabajo administradas destinadas a las cargas de trabajo que se ejecutan en Compute Engine:
- Para las VMs individuales.
- Para los grupos de instancias administrados (MIG).
- Accede a las credenciales de la carga de trabajo en una VM de Linux.
Configura identidades para cargas de trabajo administradas en Identity and Access Management
Sigue las instrucciones de Configura la autenticación de identidades de carga de trabajo administradas.
En estas instrucciones, se detalla cómo completar las siguientes acciones:
- Crea un grupo de Workload Identity.
- Crea espacios de nombres en el grupo de Workload Identity. Usa los espacios de nombres para crear límites administrativos para tus identidades de carga de trabajo administradas, por ejemplo, un espacio de nombres para cada una de las aplicaciones que son propiedad de tu organización.
- Crea una identidad de carga de trabajo administrada en un espacio de nombres en el grupo de identidades para cargas de trabajo. Por ejemplo, puedes crear un espacio de nombres para una aplicación e identidades administradas dentro de ese espacio de nombres para los microservicios que admiten esa aplicación.
- Crean una cuenta de servicio. Se pueden autorizar las VMs de Compute Engine para que reciban una identidad de carga de trabajo administrada basada en la cuenta de servicio de Google Cloud conectada a la VM.
- Crea una política de certificación de carga de trabajo que permita que se emitan credenciales para la identidad de carga de trabajo administrada. Para que se emitan credenciales para la identidad de la carga de trabajo administrada, la carga de trabajo debe estar dentro de un proyecto especificado y tener la cuenta de servicio adjunta.
- Configura Certificate Authority Service para emitir certificados para identidades de cargas de trabajo administradas:
- Configura el grupo de AC raíz
- Configura las CAs subordinadas
- Autoriza identidades para cargas de trabajo administradas que te permitan solicitar certificados del grupo de AC.
Obtén el archivo de configuración para subir los metadatos del socio
Tu administrador de seguridad crea un archivo JSON que contiene lo siguiente:
- La configuración de la identidad para cargas de trabajo
- La configuración de emisión de certificados
- La configuración de confianza
Este archivo debe llamarse CONFIGS.json
. Usas este archivo cuando creas una plantilla de instancias para MIG o una VM individual.
Su archivo CONFIGS.json
debería ser similar al siguiente:
{ "wc.compute.googleapis.com": { "entries": { "certificate-issuance-config": { "primary_certificate_authority_config": { "certificate_authority_config": { "ca_pool": "projects/PROJECT_ID/locations/SUBORDINATE_CA_POOL_REGION/caPools/SUBORDINATE_CA_POOL_ID" } }, "key_algorithm": "rsa-2048" }, "trust-config": { "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": { "trust_anchors": [{ "ca_pool": "projects/PROJECT_ID/locations/SUBORDINATE_CA_POOL_REGION/caPools/SUBORDINATE_CA_POOL_ID" }] } } } }, "iam.googleapis.com": { "entries": { "workload-identity": "spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID" } } }
Habilita identidades de cargas de trabajo administradas para un grupo de instancias administrado (MIG)
Un grupo de instancias administrado (MIG) es un grupo de instancias de máquinas virtuales (VM) que se controlan como una sola entidad. Cada VM en un MIG se crea con una plantilla de instancias. Para permitir que las VMs en el MIG usen identidades de carga de trabajo administradas, especifica la configuración en la plantilla de instancias.
Crea una plantilla de instancias
Crea una plantilla de instancias con la función de identidades de carga de trabajo administradas habilitada. Luego, usa esta plantilla para crear un grupo de instancias administrado (MIG).
gcloud
Usa el comando gcloud beta compute instance-templates create
para crear una plantilla de instancia nueva que habilite las identidades de cargas de trabajo administradas.
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --metadata enable-workload-certificate=true \ --partner-metadata-from-file CONFIGS.json
Puedes agregar marcas adicionales cuando creas la plantilla de instancias para personalizar las VMs que crea, como especificar el tipo de máquina y la imagen, en lugar de usar los valores predeterminados.
Reemplaza lo siguiente:
- INSTANCE_TEMPLATE_NAME: el nombre de la plantilla nueva.
- SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que puede recibir la identidad administrada.
- PROJECT_ID: Es el ID del proyecto en el que se creó la cuenta de servicio.
- CONFIGS.json: Es el archivo de configuración que contiene la configuración de emisión de certificados, la configuración de confianza y la identidad de la carga de trabajo administrada.
Para obtener más información, consulta Crea plantillas de instancias.
Crea un grupo de instancias administrado a partir de la plantilla
Crea un grupo de instancias administrado que use una plantilla de instancias que habilite las identidades de cargas de trabajo administradas. Para obtener detalles sobre cómo crear la plantilla de instancias, consulta Crea una plantilla de instancias.
gcloud
Crea un MIG con la plantilla de instancias y el comando gcloud compute instance-groups managed create
.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
- INSTANCE_GROUP_NAME: un ID único para el grupo de instancias administrado. Para obtener detalles sobre los nombres válidos, consulta Nombra recursos.
- SIZE: el tamaño del grupo de instancias administrado.
- INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias que se usará cuando se creen VMs en el MIG.
- ZONE: la zona en la que se creará las VMs.
Para obtener información detallada sobre cómo crear MIG, consulta Situaciones básicas para crear grupos de instancias administrados (MIG).
Habilita identidades de carga de trabajo administradas para VMs individuales
Puedes habilitar identidades de cargas de trabajo administradas para una VM cuando la creas o cuando actualizas los metadatos del socio de una VM existente.
Crea VMs con identidades de carga de trabajo administradas habilitadas
Cuando crees una VM, para habilitar la función de identidades de carga de trabajo administradas para la VM, debes hacer lo siguiente:
- Especifica una cuenta de servicio para que la VM la use
- Establece el atributo de metadatos
enable-workload-certificate
entrue
Especifica la configuración de emisión de certificados y la información de configuración de confianza como metadatos de socios.
gcloud
Usa el comando gcloud beta compute instances create
para crear una VM nueva. Usa el archivo CONFIGS.json
que te proporcionó el administrador de seguridad o crea uno siguiendo las instrucciones que se indican en Crea un archivo de configuración para subir los metadatos del socio.
Crea una VM con la función de identidades de cargas de trabajo administradas habilitada.
gcloud beta compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --metadata enable-workload-certificate=true \ --partner-metadata-from-file CONFIGS.json
Puedes agregar líneas adicionales al comando para configurar la VM, como el tipo de máquina y la imagen, en lugar de usar los valores predeterminados. Para obtener más información, consulta Crea y, luego, inicia una instancia de VM.
Reemplaza lo siguiente:
- INSTANCE_NAME: Un nombre único para la VM. Para obtener detalles sobre los nombres de instancias válidos, consulta Asigna nombres a los recursos.
- INSTANCE_ZONE: la zona en la que se creará la VM.
- SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que puede recibir la identidad administrada.
- PROJECT_ID: Es el ID del proyecto en el que se creó la cuenta de servicio.
- CONFIGS.json: Es el nombre del archivo de configuración que contiene la configuración de emisión de certificados, la configuración de confianza y la configuración de identidad de la carga de trabajo administrada.
Habilita identidades de cargas de trabajo administradas en VMs existentes
Para habilitar identidades de carga de trabajo administradas para una VM existente, actualízala para configurar lo siguiente:
- Si la VM aún no tiene una cuenta de servicio conectada, crea una y conéctala a la VM.
- Establece el atributo de metadatos
enable-workload-certificate
entrue
. - Especifica la configuración de emisión de certificados y la información de configuración de confianza como metadatos de socios.
Reinicia la VM.
gcloud
En esta tarea, se usa el archivo CONFIGS.json
que proporciona tu administrador de seguridad o que se crea siguiendo las instrucciones que se indican en Crea un archivo de configuración para subir los metadatos del socio.
Si la VM aún no tiene una cuenta de servicio conectada, conecta la cuenta de servicio a la VM.
Actualiza los metadatos de una VM existente para habilitar identidades de cargas de trabajo administradas.
gcloud beta compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata enable-workload-certificate=true
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- ZONE: La zona donde se ubica la VM.
Actualiza la configuración de una VM existente para agregar el archivo de configuración.
gcloud beta compute instances update VM_NAME \ --zone=ZONE \ --partner-metadata-from-file CONFIGS.json
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- ZONE: La zona donde se ubica la VM.
- CONFIGS.json: Es el archivo de configuración que contiene la configuración de emisión de certificados, la configuración de confianza y la identidad de la carga de trabajo administrada.
Detén la VM.
gcloud beta compute instances stop VM_NAME \ --zone=ZONE
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- ZONE: la zona donde se ubica la VM.
Inicia la VM.
gcloud beta compute instances start VM_NAME \ --zone=ZONE
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- ZONE: la zona donde se ubica la VM.
Accede a las credenciales de la carga de trabajo en una VM de Linux
Después de configurar correctamente la autenticación de carga de trabajo a carga de trabajo con mTLS, puedes acceder a las credenciales emitidas en tu VM.
Existen dos formas de acceder a las credenciales de Workload Identity administradas de Compute Engine y al paquete de confianza asociado:
- El sistema de archivos de la VM
- El servidor de metadatos de Compute Engine
Accede a las credenciales de la carga de trabajo y al paquete de confianza con el sistema de archivos de la VM
Este método coloca las credenciales X.509 y el paquete de confianza en una ruta de acceso específica dentro del sistema de archivos de la VM. Las aplicaciones pueden leer directamente las credenciales y el paquete de confianza desde el sistema de archivos. Para ver ejemplos de cómo recuperar las credenciales, consulta los siguientes ejemplos en GitHub:
La VM debe ejecutar el agente invitado de Compute Engine versión 20231103.01 o posterior. Usa el siguiente comando para verificar la versión del agente invitado de Compute Engine en tu VM:
gcloud beta compute instances get-serial-port-output INSTANCE_NAME \ --zone=ZONE | grep "GCE Agent Started"
Si la versión del agente invitado es inferior a 20231103.01, puedes actualizarla siguiendo las instrucciones que se indican en Actualiza el entorno invitado.
Para que las credenciales de la carga de trabajo y el paquete de confianza estén disponibles en el sistema de archivos de una VM, completa los siguientes pasos:
Instala o actualiza el agente invitado de Compute Engine a la versión 20231103.01 o posterior. El agente de invitado hace lo siguiente:
- Recupera automáticamente las credenciales y el paquete de confianza del servidor de metadatos de Compute Engine.
- Garantiza las operaciones de escritura atómicas en el sistema de archivos mientras se actualiza el certificado X.509 y la clave privada correspondiente.
- Actualiza automáticamente las credenciales y el paquete de confianza, por ejemplo, cuando se rotan los certificados de mTLS.
Después de instalar o actualizar el agente invitado de Compute Engine en el SO invitado, el trabajo de actualización de la carga de trabajo crea el directorio
/var/run/secrets/workload-spiffe-credentials
y establece los permisos del directorio en0755 (rwxr-xr-x)
.El directorio contiene los siguientes archivos creados con permisos
0644 (rw-r--r--)
:private_key.pem
: una clave privada con formato PEM.certificates.pem
: un conjunto de certificados X.509 con formato PEM que se puede presentar a otras VMs como la cadena de certificados de cliente o usar como una cadena de certificados de servidor.ca_certificates.pem
: un conjunto de certificados X.509 con formato PEM que se usa como anclajes de confianza cuando se validan los certificados de pares.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog
config_status
: un archivo de registro que contiene mensajes de error
Las aplicaciones pueden leer los certificados, la clave privada y el paquete de confianza directamente desde el sistema de archivos para establecer conexiones mTLS.
Accede a las credenciales de la carga de trabajo y al paquete de confianza con el servidor de metadatos
Una aplicación que se ejecuta en una VM de Compute Engine puede consultar directamente los extremos del servidor de metadatos y recuperar las credenciales y el paquete de confianza. La aplicación es responsable de verificar periódicamente los extremos del servidor de metadatos en busca de credenciales nuevas y actualizaciones del paquete de confianza.
El servidor de metadatos de Compute Engine expone tres extremos HTTP para permitir que las aplicaciones que se ejecutan dentro de la VM usen la función de identidades de cargas de trabajo administradas.
gce-workload-certificates/config-status
: Es un extremo que contiene errores en los valores de configuración que se proporcionan a través de los metadatos de la VM.gce-workload-certificates/workload-identities
: Un extremo de identidades administradas por el plano de control de Compute Engine. Este extremo contiene el certificado X.509 y la clave privada para el dominio de confianza de la VM.gce-workload-certificates/trust-anchors
: Un extremo que contiene un conjunto de certificados de confianza para la validación de la cadena de certificados del par X.509.
Para obtener más información sobre cómo consultar los metadatos de una instancia de VM, consulta Acerca de los metadatos de VM.
Para acceder a las credenciales de la carga de trabajo y al paquete de confianza con el servidor de metadatos, tu aplicación debe hacer lo siguiente:
Consulta el extremo
gce-workload-certificates/config-status
. Asegúrate de que el código de respuesta HTTP sea200
y de que la respuesta no contenga errorespartnerMetadataConfigsErrors
. Si existen tales errores, sigue los pasos que se indican en Actualiza la emisión de certificados y la configuración de confianza para actualizar la configuración adecuada con valores válidos.Para verificar el valor, puedes ejecutar el siguiente comando en la VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
El extremo
config-status
muestra una respuesta JSON con la siguiente estructura:{ "partnerMetadataConfigsErrors": { "errors": { // A map of errors keyed by attribute name. "ATTRIBUTE_NAME" : "ERROR_DETAILS", ... } } }
Consulta el extremo
gce-workload-certificates/workload-identities
. Asegúrate de que el código de respuesta HTTP sea200
. El extremo muestra una respuesta JSON con la siguiente estructura:{ "workloadCredentials": { // Credentials for the VM's trust domains "spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID": { "certificatePem" : "X.509 certificate or certificate chain", "privateKeyPem" : "Private for X.509 leaf certificate" } } }
Extrae
certificatePem
yprivateKeyPem
. Es fundamental que ambos valores se lean de la misma respuesta para evitar discrepancias entre la clave privada y la pública en caso de que la infraestructura de Compute Engine haya actualizado las identidades de las cargas de trabajo administradas.Consulta el extremo
gce-workload-certificates/trust-anchors
. Asegúrate de que el código de respuesta HTTP sea200
. La respuesta solo contendrá las anclas de confianza para el dominio de confianza de SPIFFE, si se especifican. De lo contrario, la consulta muestra un error. El extremotrust-anchors
muestra una respuesta JSON con la siguiente estructura:{ "trustAnchors": { // Trust bundle for the VM's trust domains "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": { "trustAnchorsPem" : "Trust bundle containing the X.509 roots certificates" } } }
El contenido de
trustAnchorsPem
contiene el paquete de confianza que se puede usar para autenticar credenciales X.509 de pares cuando se establece una conexión mTLS.
Actualiza las credenciales y el paquete de confianza
El plano de control de Compute Engine rota automáticamente las credenciales de identidad de la carga de trabajo administrada y los vínculos de confianza de forma periódica.
Si tus aplicaciones usan el sistema de archivos para acceder a las credenciales de la carga de trabajo y al paquete de confianza, el agente de invitado de Compute Engine actualiza automáticamente las credenciales y el paquete de confianza, por ejemplo, cuando se rotan los certificados de mTLS.
Si tus aplicaciones consultan el servidor de metadatos, las aplicaciones que se ejecutan en una VM deben consultar de forma periódica los extremos del servidor de metadatos para obtener el último conjunto de credenciales administradas de Workload Identity y el paquete de confianza. De lo contrario, se pueden dañar las aplicaciones debido al vencimiento del certificado o a los cambios en el paquete de confianza, lo que puede provocar que falle el establecimiento de la conexión de mTLS. Google recomienda que las aplicaciones consulten el servidor de metadatos para obtener las credenciales de Workload Identity administradas y el paquete de confianza cada 5 minutos.
Actualiza la configuración de confianza y emisión de certificados
Puedes modificar la configuración de emisión de certificados y la configuración de confianza de una VM que use identidades para cargas de trabajo administradas.
Actualiza la plantilla de instancias de un grupo de instancias administrado
Para actualizar la configuración de emisión de certificados y los valores de configuración de confianza en una plantilla de instancias, debes crear una plantilla nueva con los valores nuevos. Por lo tanto, no se admite la actualización de la configuración de emisión de certificados ni de confianza para los grupos de instancias administrados (MIG) existentes.
Actualiza VMs individuales de Compute Engine
Para actualizar la configuración de emisión de certificados y la configuración de confianza, actualiza el contenido del archivo CONFIGS.json
y usa el comando gcloud beta compute instances update
para aplicar las actualizaciones:
gcloud beta compute instances update INSTANCE_NAME \ --partner-metadata-from-file FILENAME.json
Reemplaza lo siguiente:
- INSTANCE_NAME: Es el nombre de la VM para la que actualizas los valores de configuración.
- FILENAME: Es el nombre del archivo de configuración modificado, por ejemplo,
CONFIGS.json
.
Solucionar problemas
Para encontrar métodos para diagnosticar y resolver errores comunes relacionados con la recuperación de credenciales de cargas de trabajo, consulta la documentación sobre cómo solucionar problemas de autenticación de carga de trabajo a carga de trabajo.
¿Qué sigue?
- Obtén más información sobre los siguientes conceptos: