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. Configuras grupos de AC para emitir certificados a través de Certificate Authority Service (CA), que es un servicio altamente disponible y escalable Cloud de Confiance by S3NS que simplifica y automatiza la implementación, la administración y la 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.
Antes de comenzar
- Revisa la documentación de Descripción general de las identidades para cargas de trabajo administradas.
Habilita la API de Compute Engine con este comando:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene elserviceusage.services.enablepermiso. Obtén más información para otorgar roles.gcloud services enable compute.googleapis.com
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs que usen certificados de identidad de carga de trabajo administrados 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 la 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
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 mTLS. El agente invitado rota automáticamente estos certificados mTLS y actualiza las credenciales en la VM.
Si usas identidades para cargas de trabajo administradas, puedes administrar de forma centralizada la identidad de tus cargas de trabajo. Se pueden autorizar las VMs de Compute Engine para que reciban una identidad de carga de trabajo basada en atributos clave, como el ID de instancia, el nombre de la instancia o la cuenta de servicio conectada. Para que se certifiquen las cargas de trabajo, el administrador o desarrollador de Compute debe crear instancias de VM para la carga de trabajo con un nombre de instancia, un ID de instancia, un nombre de cuenta de servicio o un ID de cuenta de servicio que coincidan.
Las identidades para cargas de trabajo administradas cumplen con el estándar de código abierto
Secure Production Identity Framework for Everyone (SPIFFE).
Los IDs de SPIFFE para Cloud de Confiance las cargas de trabajo tienen el siguiente formato:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
El TRUST_DOMAIN corresponde a un grupo de identidades para cargas de trabajo de Identity and Access Management (IAM).
Las identidades para cargas de trabajo administradas se definen dentro de un grupo de identidades para cargas de trabajo, que actúa como un contenedor de nivel superior para contener identidades de cargas de trabajo que tienen un límite de confianza común. En un grupo de identidades para cargas de trabajo, las identidades se organizan en límites administrativos llamados espacios de nombres. Para que una carga de trabajo obtenga una identidad administrada, debes definir políticas de certificación para autorizarla. Una política de certificación de carga de trabajo garantiza que solo las cargas de trabajo de confianza puedan confirmar una identidad administrada.
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 dentro del grupo de identidades para cargas de trabajo.
Administrador de Compute:
- Configura instancias para usar identidades para cargas de trabajo para instancias individuales de Compute Engine.
- Accede a las credenciales de la carga de trabajo en una instancia 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 lo siguiente:
- 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 para una carga de trabajo administrada en un espacio de nombres del grupo de Workload Identity. 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.
- Opcional: Crea una cuenta de servicio para crear reglas de certificación basadas en el ID de la cuenta de servicio.
- Crea una política de certificación de carga de trabajo que permita que tu carga de trabajo reciba credenciales para la identidad de carga de trabajo administrada. Se pueden autorizar las VMs de Compute Engine para que reciban una identidad de carga de trabajo administrada basada en atributos clave, como el ID de instancia, el nombre de la instancia o la cuenta de servicio conectada.
- Configura Certificate Authority Service para emitir certificados para identidades de cargas de trabajo administradas:
- Configura el grupo de AC raíz
- Configura las AC subordinadas
- Autoriza el grupo de identidades para cargas de trabajo administradas para solicitar certificados del grupo de AC.
Habilita identidades de cargas de trabajo administradas para instancias de procesamiento individuales
Puedes habilitar identidades de cargas de trabajo administradas para una instancia de procesamiento cuando creas la instancia o actualizas la configuración de una instancia existente.
Crea instancias con identidades de cargas de trabajo administradas habilitadas
Cuando creas una instancia de procesamiento, para habilitar la función de identidades de cargas de trabajo administradas para la instancia, debes hacer lo siguiente:
- Si la certificación de la instancia para la identidad de carga de trabajo se basa en una cuenta de servicio, especifica esa cuenta de servicio.
Incluye las
--identityy--identity-certificatemarcas.
gcloud
Usa el gcloud alpha compute instances create comando
para crear una instancia nueva.
Si usas una cuenta de servicio para la certificación, incluye la información de la cuenta de servicio cuando crees la instancia.
Puedes agregar líneas adicionales al comando para configurar la instancia, 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.
gcloud alpha compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Reemplaza lo siguiente:
INSTANCE_NAME: Un nombre único para la instancia. Para obtener detalles sobre los nombres de instancias válidos, consulta Nombra recursos.INSTANCE_ZONE: La zona en la cual se creará la instancia.SERVICE_ACCOUNT_NAME: El nombre de la cuenta de servicio que puede recibir la identidad de carga de trabajo administrada.PROJECT_ID: El ID del proyecto en el que se creó la cuenta de servicio.TRUST_DOMAIN: El ID del dominio de confianza, en el siguiente formato:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
El valor del dominio de confianza usa los siguientes marcadores de posición:
POOL_ID: El nombre del grupo de identidades para cargas de trabajoPROJECT_NUMBER: El número del proyecto en el que se creó el grupo de identidades para cargas de trabajo
NAMESPACE: El nombre del espacio de nombres que contiene la política de certificación de carga de trabajo que autoriza a la carga de trabajo a confirmar una identidad de carga de trabajo administradaWORKLOAD_IDENTIFIER: El nombre de la identidad de carga de trabajo administrada que se creó en el espacio de nombres del grupo de identidades para cargas de trabajo
Habilita identidades de cargas de trabajo administradas en instancias existentes
Para habilitar identidades de cargas de trabajo administradas para una instancia de procesamiento existente, actualiza la instancia para configurar lo siguiente:
- Si la certificación de la instancia para la identidad de carga de trabajo se basa en una cuenta de servicio y la instancia aún no tiene una cuenta de servicio conectada, crea y conecta una cuenta de servicio a la instancia.
- Habilita la función con la marca
--identity-certificatey especifica qué identidad de carga de trabajo administrada usar con la marca--identity. Reinicia la VM.
gcloud
Usa el gcloud alpha compute instances update comando
para actualizar la configuración de una instancia.
Si la instancia aún no tiene una cuenta de servicio conectada, conecta la cuenta de servicio a la instancia.
Actualiza la configuración de una instancia existente para habilitar identidades de cargas de trabajo administradas.
gcloud alpha compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Reemplaza lo siguiente:
INSTANCE_NAME: Es el nombre de la instancia.ZONE: Es la zona en la que se encuentra la instancia.TRUST_DOMAIN: El ID del dominio de confianza, en el siguiente formato:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
El valor del dominio de confianza usa los siguientes marcadores de posición: *
POOL_ID: El nombre del grupo de identidades para cargas de trabajo *PROJECT_NUMBER: El número del proyecto en el que se creó el grupo de identidades para cargas de trabajo +NAMESPACE: El nombre del espacio de nombres que contiene la política de certificación de carga de trabajo que autoriza a la carga de trabajo a confirmar una identidad de carga de trabajo administrada +WORKLOAD_IDENTIFIER: El nombre de la identidad de carga de trabajo administrada que se creó en el espacio de nombres del grupo de identidades para cargas de trabajoDetén la VM.
gcloud alpha compute instances stop INSTANCE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
INSTANCE_NAME: Es el nombre de la instancia.ZONE: Es la zona en la que se encuentra la instancia.
Inicia la VM.
gcloud alpha compute instances start INSTANCE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
INSTANCE_NAME: Es el nombre de la instancia.ZONE: Es la zona en la que se encuentra la instancia.
Accede a las credenciales de la carga de trabajo en una VM de Linux
Después de crear e iniciar una instancia de procesamiento que usa identidades de cargas de trabajo administradas, la Cloud de Confiance infraestructura (incluido el agente invitado) aprovisiona y administra automáticamente la rotación de las credenciales de la instancia.
Los certificados de carga de trabajo, incluidos la clave privada y los paquetes de confianza, se colocan en un directorio específico del sistema de archivos de la VM: /var/run/secrets/workload-spiffe-credentials. Las aplicaciones pueden leer los certificados, la clave privada y el paquete de confianza directamente desde el sistema de archivos para establecer conexiones mTLS.
El agente invitado de Compute Engine en el SO invitado ejecuta un trabajo de actualización de carga de trabajo y, si es necesario, crea el directorio /var/run/secrets/workload-spiffe-credentials. Los permisos del directorio se establecen en 0755 (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.googconfig_status: un archivo de registro que contiene mensajes de error
Actualiza las credenciales y el paquete de confianza
El plano de control de Compute Engine rota automáticamente las credenciales de identidad de carga de trabajo administradas y los anclajes de confianza de forma periódica.
Si tus aplicaciones usan el sistema de archivos para acceder a las credenciales de carga de trabajo y al paquete de confianza, el agente invitado de Compute Engine actualiza automáticamente las credenciales y el paquete de confianza, por ejemplo, cuando se rotan los certificados mTLS.
Actualiza la configuración de confianza y emisión de certificados
Puedes modificar la configuración de confianza y emisión de certificados para una VM que usa identidades de cargas de trabajo administradas.
Actualiza VMs individuales de Compute Engine
Para actualizar la configuración de confianza y emisión de certificados, actualiza el grupo de identidades para cargas de trabajo. Usa el
gcloud alpha iam workload-identity-pools update comando,
como se muestra en el siguiente ejemplo:
gcloud alpha iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
Reemplaza lo siguiente:
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajo.CIC_JSON_FILE_PATH: La ruta de acceso al nuevo archivo de configuración de emisión de certificados con formato JSON (cic.json).TC_JSON_FILE_PATH: Opcional: La ruta de acceso al nuevo archivo de configuración de confianza con formato JSON (tc.json). Si tus cargas de trabajo se autentican en diferentes dominios de confianza, debes especificar este archivo. De lo contrario, puedes omitir la configuración--inline-trust-config.PROJECT_ID: El nombre de tu Cloud de Confiance proyecto.
Solucionar problemas
Para encontrar métodos para diagnosticar y resolver errores comunes relacionados con la recuperación de credenciales de carga de trabajo, consulta la documentación Soluciona problemas de autenticación de carga de trabajo a carga de trabajo.
Para solucionar problemas con grupos o políticas de certificación mal configurados, consulta los registros de auditoría de los grupos de identidades para cargas de trabajo.
¿Qué sigue?
- Obtén más información sobre los siguientes conceptos: