En este documento, se explica cómo configurar una identidad para cargas de trabajo administrada en el servicio de backend de un balanceador de cargas. Después de asignar una identidad administrada, el balanceador de cargas y sus backends pueden autenticarse mutuamente con la mTLS de backend.
Para configurar mTLS de backend con una identidad para cargas de trabajo administrada, debes hacer lo siguiente:
- Configura un grupo de autoridades certificadoras (AC) de Certificate Authority Service para emitir certificados X.509 para identidades de cargas de trabajo administradas.
- Configura un dominio de confianza creando un grupo de Workload Identity con un espacio de nombres, una identidad administrada, una política de certificación, un recurso de configuración de emisión de certificados intercalado y un recurso de configuración de confianza intercalado.1
- Vincula la CA al grupo de identidades para cargas de trabajo con la configuración de emisión de certificados intercalada.
- Autoriza identidades para cargas de trabajo administradas que permitan solicitar certificados del grupo de AC.
- Crea el balanceador de cargas y adjunta la identidad administrada a su servicio de backend.
1 Solo debes crear una configuración de confianza intercalada si el balanceador de cargas y sus backends se encuentran en diferentes dominios de confianza. Para los fines de este ejemplo, tanto el balanceador de cargas como los backends forman parte del mismo dominio de confianza y, como resultado, la configuración del recurso de configuración de confianza intercalada es opcional.
Para crear una identidad administrada para los backends, consulta Descripción general de las identidades para cargas de trabajo administradas.
Antes de comenzar
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
Revisa el documento Descripción general de mTLS de backend con identidades para cargas de trabajo administradas.
Obtén información sobre la emisión de certificados a través de Certificate Authority Service.
Enable the IAM, Certificate Authority Service, Compute Engine, Certificate Manager, and Network Security APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com Configura Google Cloud CLI para usar el proyecto que se agregó a la lista de entidades permitidas para la facturación y la cuota.
gcloud config set billing/quota_project PROJECT_ID
Reemplaza
PROJECT_IDpor el ID del proyecto que se agregó a la lista de entidades permitidas para la vista previa de identidades para cargas de trabajo administradas.Crea una identidad administrada para el backend. Para obtener más información, consulta Descripción general de las identidades para cargas de trabajo administradas.
Roles obligatorios
Para obtener los permisos que necesitas para crear identidades para cargas de trabajo administradas y aprovisionar certificados de identidad de cargas de trabajo administrados, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Para crear y configurar identidades para cargas de trabajo administradas, los siguientes roles:
-
Administrador de grupos de Workload Identity de IAM (
roles/iam.workloadIdentityPoolAdmin) -
Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin)
-
Administrador de grupos de Workload Identity de IAM (
-
Para crear y configurar grupos de AC:
Administrador del servicio de AC (
roles/privateca.admin) -
Para crear recursos del balanceador de cargas, como
TargetHTTPSProxy: Administrador de balanceador de cargas de Compute (roles/compute.loadBalancerAdmin) -
Para usar recursos de Certificate Manager:
Propietario de Certificate Manager (
roles/certificatemanager.owner) -
Para crear componentes de seguridad y de herramientas de redes:
-
Administrador de red de Compute (
roles/compute.networkAdmin) -
Administrador de seguridad de Compute (
roles/compute.securityAdmin)
-
Administrador de red de Compute (
-
Para crear un proyecto (opcional):
Creador de proyectos (
roles/resourcemanager.projectCreator)
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 a través de roles personalizados o cualquier otro rol predefinido.
Configura CA Service para emitir certificados para identidades de cargas de trabajo administradas
Puedes usar grupos de CA para configurar una CA raíz. El grupo de AC emite los certificados X.509 a las identidades para cargas de trabajo administradas.
Crea el grupo de CA raíz
Crea el grupo de AC raíz en el nivel Enterprise con el comando gcloud privateca pools create.
Este nivel está destinado a la emisión de certificados de larga duración y bajo volumen.
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
Reemplaza lo siguiente:
ROOT_CA_POOL_ID: Es un ID único para el grupo de AC raíz.REGION: Es la región en la que se encuentra el grupo de AC raíz.PROJECT_ID: El ID del proyecto
Para obtener más información sobre los grupos de CA, consulta Crea un grupo de CA.
Crea una AC raíz:
Crea una CA raíz en el grupo de CA raíz con el comando gcloud privateca roots create.
Para crear una CA raíz, ejecuta el siguiente comando:
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
[--key-algorithm="KEY_ALGORITHM"] \
--max-chain-length=1 \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
Reemplaza lo siguiente:
ROOT_CA_ID: Es un nombre único para la AC raíz. El nombre de la AC puede tener hasta 64 caracteres y debe contener solo caracteres alfanuméricos en minúscula y mayúscula, guiones bajos o guiones. El nombre de la AC debe ser único dentro de la región.ROOT_CA_POOL_ID: Es el ID del grupo de AC raíz.ROOT_CA_CN: Es el nombre de la AC raízROOT_CA_ORGANIZATION: Es la organización de la AC raíz.KEY_ALGORITHM: Es el algoritmo que se usará para crear una clave de Cloud KMS. Esta marca es opcional. Si no incluyes esta marca, el algoritmo de clave se establece de forma predeterminada enrsa-pkcs1-4096-sha256.REGION: Es la región en la que se encuentra el grupo de AC raíz.PROJECT_ID: Es el ID del proyecto.
Para obtener más información sobre una CA raíz, consulta Crea una CA raíz.
Crea identidades para cargas de trabajo administradas
Cuando usas identidades de carga de trabajo administradas, Google Cloud puede aprovisionar y administrar automáticamente certificados X.509 desde Certificate Authority Service. Las identidades para cargas de trabajo se definen dentro de un grupo de identidades para cargas de trabajo y se organizan en límites administrativos llamados espacios de nombres.
Crea un grupo de identidades para cargas de trabajo
Debes crear un grupo en modo TRUST_DOMAIN para crear identidades
de carga de trabajo administradas. Si quieres crear un grupo de identidades para cargas de trabajo para identidades de cargas de trabajo administradas, usa el comando gcloud iam workload-identity-pools create.
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
Reemplaza WORKLOAD_IDENTITY_POOL_ID por el ID único del grupo. El ID debe tener entre 4 y 32 caracteres, contener solo guiones y caracteres alfanuméricos en minúscula, y comenzar y terminar con un carácter alfanumérico. Después de crear un grupo de identidades para cargas de trabajo, no puedes cambiar su ID.
Para verificar que tu grupo de identidades para cargas de trabajo se creó en modo TRUST_DOMAIN, usa el comando gcloud iam workload-identity-pools describe.
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
El resultado es similar a este:
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
En esta salida, se incluyen los siguientes valores:
PROJECT_NUMBER: Es el número de tu proyecto deGoogle Cloud .WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajo
Crea un espacio de nombres
El comando gcloud iam workload-identity-pools namespaces create te permite crear un espacio de nombres en un grupo de identidades para cargas de trabajo.
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Reemplaza lo siguiente:
NAMESPACE_ID: el ID único para el espacio de nombres. El ID debe tener entre 2 y 63 caracteres, contener solo guiones y caracteres alfanuméricos en minúscula, y comenzar y terminar con un carácter alfanumérico. Después de crear un espacio de nombres, no puedes cambiar su ID.WORKLOAD_IDENTITY_POOL_ID: Es el ID del grupo de identidades para cargas de trabajo que creaste antes.
Crea una identidad para una carga de trabajo administrada
El comando gloud iam workload-identity-pools managed-identities create te permite crear una identidad para cargas de trabajo administradas en un espacio de nombres del grupo de identidades para cargas de trabajo.
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Reemplaza lo siguiente:
MANAGED_IDENTITY_ID: Es el ID único para la identidad administrada El ID debe tener entre 2 y 63 caracteres, contener solo guiones y caracteres alfanuméricos en minúscula, y comenzar y terminar con un carácter alfanumérico. Después de crear una identidad para cargas de trabajo administradas, no puedes cambiar su ID.NAMESPACE_ID: Es el ID del espacio de nombres que creaste antes.WORKLOAD_IDENTITY_POOL_ID: Es el ID del grupo de identidades para cargas de trabajo que creaste antes.
El ID de tu identidad de carga de trabajo administrada es el identificador SPIFFE, que tiene el siguiente formato:
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Crea una política de certificación
En este ejemplo, una política de certificación contiene una regla de certificación que verifica si el servicio de backend forma parte de un proyecto específico. Si se supera la verificación de la política de certificación, IAM solicita un certificado X.509 para la identidad administrada al servicio de autoridad certificadora.
Para crear una política de certificación, ejecuta el siguiente comando para agregar una regla de certificación.
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
Reemplaza lo siguiente:
MANAGED_IDENTITY_ID: Es el ID único de la identidad administrada. El ID debe tener entre 2 y 63 caracteres, contener solo guiones y caracteres alfanuméricos en minúscula, y comenzar y terminar con un carácter alfanumérico. Después de crear una identidad para cargas de trabajo administradas, no puedes cambiar su ID.NAMESPACE_ID: Es el ID del espacio de nombres que creaste antes.WORKLOAD_IDENTITY_POOL_ID: Es el ID del grupo de identidades para cargas de trabajo que creaste antes.PROJECT_NUMBER: Es el número del proyecto de Google Cloud .
Crea una configuración de emisión de certificados intercalada
Para vincular una CA a un grupo de identidades para cargas de trabajo, este debe tener una configuración de emisión de certificados intercalada.
Para configurar una configuración de emisión de certificados intercalada, crea un archivo de configuración (cic.json) con formato JSON. El formato del archivo es similar al siguiente:
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
["lifetime": "CERTIFICATE_LIFETIME"],
["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
["keyAlgorithm": "ALGORITHM"]
}
}
Reemplaza lo siguiente:
REGION: Es la región en la que se encuentra la CA.PROJECT_NUMBER: Número del proyecto Para obtener el número de proyecto del proyecto especificado por la variablePROJECT_ID, ejecuta el siguiente comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: Es el ID del grupo de AC raíz.CERTIFICATE_LIFETIME: Es la vida útil de los certificados de carga de trabajo emitidos por el grupo de CA en segundos, por ejemplo, 86400 s (para 24 h).CERTIFICATE_LIFETIMEdebe ser un valor entre 24 horas y 30 días. Si no se especificaCERTIFICATE_LIFETIME, la duración predeterminada del certificado es de 24 horas.CERTIFICATE_LIFETIMEes opcional.ROTATION_WINDOW_PERCENTAGE: Es el porcentaje de la vida útil del certificado en el que se activa una renovación. El valor deROTATION_WINDOW_PERCENTAGEdebe estar entre 50 y 80. El valor predeterminado es 50.ROTATION_WINDOW_PERCENTAGEes opcional.ALGORITHM: Es el algoritmo de encriptación que se usa para generar la clave privada. Los valores válidos paraALGORITHMsonECDSA_P256(predeterminado),ECDSA_P384,RSA_2048,RSA_3072yRSA_4096.ALGORITHMes opcional.
Crea una configuración de confianza intercalada
En este ejemplo de configuración, tanto el balanceador de cargas como el backend forman parte del mismo dominio de confianza y comparten el mismo certificado raíz. Por lo tanto, la configuración de la configuración de confianza intercalada es opcional. La raíz de confianza común se usa para compilar una cadena de confianza y verificar la identidad de las cargas de trabajo dentro del dominio de confianza.
De forma predeterminada, tus cargas de trabajo dentro del mismo dominio de confianza pueden autenticarse mutuamente con identidades para cargas de trabajo administradas. Si deseas que las cargas de trabajo que se encuentran en diferentes dominios de confianza se autentiquen mutuamente, debes declarar explícitamente la relación de confianza en el grupo de identidades para cargas de trabajo. Para ello, crea una configuración de confianza intercalada que reconozca y acepte certificados de otros dominios de confianza.
Para crear una configuración de confianza intercalada, haz lo siguiente:
Descarga los certificados.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONReemplaza lo siguiente:
ROOT_CA_POOL_ID: ID del grupo de AC raízCERTIFICATE_PATH: Es la ruta de acceso en la que se generará el certificado codificado en PEM.REGION: la región del grupo de AC raíz
Crea un archivo de configuración con formato JSON (
tc.json) que contenga la configuración de confianza intercalada, con certificados en formato PEM.El archivo es similar al siguiente:
{ "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } }Reemplaza lo siguiente:
TRUST_DOMAIN_NAME: El dominio de confianza puede ser cualquier dominio de confianza (como "example.com"), incluido otro dominio de confianza del grupo de identidades para cargas de trabajo (o incluso el mismo).En el caso de un dominio de confianza del grupo de identidades para cargas de trabajo, el nombre del dominio de confianza tiene el siguiente formato:
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
En el formato, reemplaza lo siguiente:
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: El número del proyecto que contiene el grupo de Workload Identity.
CERTIFICATE_MATERIAL: Es el certificado de la CA con formato PEM que se confía para emitir certificados en el dominio de confianza. El siguiente comando se puede usar para codificar un archivo de certificado con formato PEM en una cadena de una sola línea:cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
Vincula la CA al grupo de identidades para cargas de trabajo
Después de crear tu jerarquía de AC y una configuración de emisión de certificados para la AC, puedes vincular la AC al grupo de identidades para cargas de trabajo. Para vincular la AC al grupo de identidades para cargas de trabajo, debes actualizar el grupo de identidades para cargas de trabajo con la configuración de emisión de certificados de la AC. Luego, puedes verificar que el grupo se haya actualizado.
Actualiza el grupo de identidades para cargas de trabajo
Para vincular una CA al grupo de identidades para cargas de trabajo, actualiza el grupo de identidades para cargas de trabajo con la configuración de emisión de certificados de la CA. Luego, puedes verificar que se haya actualizado el grupo.
Para actualizar el grupo, ejecuta el siguiente comando:
gcloud 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: Es la ruta de acceso al archivo de configuración con formato JSON (cic.json) para la configuración de emisión de certificados intercalada que creaste anteriormente.TC_JSON_FILE_PATH: Es la ruta de acceso al archivo de configuración con formato JSON (tc.json) para la configuración de confianza intercalada que creaste anteriormente. Si tus cargas de trabajo se autentican en diferentes dominios de confianza, debes especificar este archivo. De lo contrario, puedes omitir--inline-trust-config.
Verifica que se haya actualizado el grupo de identidades para cargas de trabajo
Para verificar que tu grupo de identidades para cargas de trabajo se haya actualizado junto con la configuración de emisión de certificados y la configuración de confianza, ejecuta el siguiente comando:
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
Reemplaza lo siguiente:
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajo.PROJECT_ID: El ID del proyecto
El resultado es similar a este:
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
En esta salida, se incluyen los siguientes valores:
PROJECT_NUMBER: Es el número del proyecto.REGION: Es la región en la que se encuentra el grupo de AC raíz.ROOT_CA_POOL_ID: ID del grupo de AC raízALGORITHM: Es el algoritmo de encriptación que se usa para generar la clave privada.CERTIFICATE_LIFETIME: Es la vida útil de los certificados de carga de trabajo que emite el grupo de CA en segundos.ROTATION_WINDOW_PERCENTAGE: Es el porcentaje de la vida útil del certificado en el que se activa una renovación.TRUST_DOMAIN_NAME: El dominio de confianza puede ser cualquier dominio de confianza (como "example.com"), incluido otro dominio de confianza del grupo de identidades para cargas de trabajo (o incluso el mismo).CERTIFICATE_MATERIAL: Es el certificado de la CA con formato PEM que se confía para emitir certificados en el dominio de confianza.WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajo
Si inlineCertificateIssuanceConfig o inlineTrustConfig no están presentes en el resultado, verifica que hayas configurado correctamente tu CLI de gcloud para usar el proyecto correcto para la facturación y la cuota.
Es posible que debas actualizar a una versión más reciente de gcloud CLI.
Autoriza identidades para cargas de trabajo administradas que permitan solicitar certificados del grupo de AC
Después de vincular la AC al grupo de identidades para cargas de trabajo, debes autorizar a las identidades para cargas de trabajo administradas a solicitar certificados del grupo de AC.
Otorga el rol de solicitante de certificados de cargas de trabajo del servicio de CA (
roles/privateca.workloadCertificateRequester) al dominio de confianza. Este rol autoriza al dominio de confianza a solicitar certificados de las cadenas de certificados del servicio de CA.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDReemplaza lo siguiente:
ROOT_CA_POOL_ID: ID del grupo de AC raízREGION: la región del grupo de AC raízPROJECT_NUMBER: Es el número del proyecto.Para obtener
PROJECT_NUMBERdePROJECT_ID, ejecuta el siguiente comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_ID: El ID del proyecto
Otorga el rol de Lector de grupos de servicios de CA (
roles/privateca.poolReader) al dominio de confianza. Este rol autoriza al dominio de confianza a obtener los certificados X.509 firmados de las cadenas de certificados de la CA.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDReemplaza lo siguiente:
ROOT_CA_POOL_ID: ID del grupo de AC raízREGION: la región del grupo de AC raízPROJECT_NUMBER: Es el número del proyecto.WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_ID: El ID del proyecto
Crea el balanceador de cargas y asigna la identidad administrada al servicio de backend
La identidad administrada solo se puede asignar cuando se crea el servicio de backend.
Los pasos de esta sección solo se relacionan con la asignación de una identidad administrada al servicio de backend del balanceador de cargas. Esto forma parte de la configuración del backend del balanceador de cargas.
Para configurar un balanceador de cargas de aplicaciones externo global, sigue los pasos que se indican en Configura un balanceador de cargas de aplicaciones externo global con backends de grupos de instancias de VM. En la etapa en la que configuras el servicio de backend del balanceador de cargas, también debes hacer lo siguiente:
Console
En la consola de Google Cloud , ve a la página Balanceo de cargas.
En la sección Configuración de backend, agrega los detalles pertinentes para crear un servicio de backend.
Expande la sección Configuración avanzada.
En la sección Autenticación de backend, selecciona la opción Identidad administrada.
Para asignar una identidad administrada al servicio de backend, en el campo Identidad administrada, ingresa la identidad para cargas de trabajo administrada que creaste antes.
Haz clic en Crear.
Continúa con los pasos que se describen en Configura el balanceador de cargas para terminar de configurarlo.
gcloud
Para asignar una identidad administrada al servicio de backend, agrega la marca
--identitycuando uses el comandogcloud beta compute backend-services create.gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --globalReemplaza lo siguiente:
BACKEND_SERVICE_NAME: el nombre del servicio de backend.HEALTH_CHECK_NAME: el nombre de la verificación de estado.WORKLOAD_IDENTITY_POOL_ID: ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: Es el número del proyecto.NAMESPACE_ID: Es el ID del espacio de nombres.MANAGED_IDENTITY_ID: El ID de la identidad administrada
Recursos creados automáticamente
Después de configurar una identidad administrada en el servicio de backend del balanceador de cargas, la identidad de cargas de trabajo administrada crea automáticamente los siguientes recursos:
- Configuración de autenticación de backend: Se adjunta al servicio de backend del balanceador de cargas.
- Certificado de identidad administrada por el Administrador de certificados: Se adjunta a la configuración de autenticación de backend.
- Configuración de confianza del Administrador de certificados: Se adjunta a la configuración de autenticación de backend
En las siguientes secciones, se explica cómo verificar tu configuración para comprobar si se configuraron los recursos creados automáticamente.
Verifica la configuración
Verifica tu configuración para comprobar si se configuraron los recursos creados automáticamente.
Los recursos creados automáticamente tienen el prefijo mi, que indica que la identidad para la carga de trabajo administrada creó el recurso.
Verifica la creación de la configuración de autenticación de backend y la identidad administrada
Para verificar la creación de la configuración de autenticación de backend y la identidad administrada, usa el comando gcloud beta compute backend-services describe para describir el servicio de backend.
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
El resultado es similar a este:
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
En esta salida, se incluyen los siguientes valores:
PROJECT_ID: El ID del proyectoHEALTH_CHECK_NAME: el nombre de la verificación de estado.BACKEND_SERVICE_NAME: el nombre del servicio de backend.PORT_NAME: El nombre del puertoREGION: Es la región en la que se encuentra el grupo de AC raíz.WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: Es el número del proyecto.NAMESPACE_ID: Es el ID del espacio de nombres.MANAGED_IDENTITY_ID: El ID de la identidad administrada
La configuración de autenticación de backend se crea automáticamente y se adjunta al campo backendService.tlsSettings.authenticationConfig.
La configuración de autenticación de backend que comienza con el prefijo mi se conoce como MI_BACKEND_AUTHENTICATION_CONFIG_ID en la siguiente sección.
La identidad para cargas de trabajo administrada también se adjunta al campo backendService.tlsSettings.identity. Tiene el siguiente formato:
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Verifica la creación del certificado de identidad administrada de Certificate Manager y la configuración de confianza de Certificate Manager
Para verificar que el certificado de identidad administrado por Certificate Manager y la configuración de confianza de Certificate Manager estén adjuntos al recurso de configuración de autenticación de backend, usa el comando gcloud network-security backend-authentication-configs describe.
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
El resultado es similar a este:
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
clientCertificate y trustConfig se crean automáticamente con la identidad para cargas de trabajo administrada y se adjuntan al recurso de configuración de autenticación de backend.
El clientCertificate que comienza con el prefijo mi se denomina MI_CLIENT_CERTIFICATE_ID en la siguiente sección.
El trustConfig que comienza con el prefijo mi se denomina MI_TRUST_CONFIG_ID en la siguiente sección.
Verifica que el certificado de Certificate Manager sea un certificado de identidad administrada
Para ver los detalles del certificado de identidad administrada de Certificate Manager, usa el comando gcloud certificate-manager certificates describe.
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
El resultado es similar a este:
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
En esta salida, se incluyen los siguientes valores:
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: Es el número del proyecto.NAMESPACE_ID: Es el ID del espacio de nombres.MANAGED_IDENTITY_ID: El ID de la identidad administradaCERTIFICATE_MATERIAL: Es el X.509-SVID en formato codificado en PEM.
El certificado de identidad administrada de Certificate Manager tiene una propiedad managedIdentity, que lo identifica como un certificado de identidad administrada. El recurso de certificado de identidad administrada de Certificate Manager almacena el X.509-SVID en un formato codificado con PEM.
El alcance del certificado de identidad administrado por el Administrador de certificados es CLIENT_AUTH, lo que indica que este certificado se usa como certificado de cliente en mTLS de backend.
Verifica que el ID de SPIFFE forme parte del SAN en el SVID X.509.
El X.509-SVID contiene el ID de SPIFFE codificado como un URI en el campo SAN. Este ID de SPIFFE corresponde a la identidad administrada en el grupo de identidades para cargas de trabajo.
Para imprimir un formato legible del certificado, ejecuta el siguiente comando:
openssl x509 -text -noout \ <<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"
El resultado es similar al siguiente (abreviado):
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
En esta salida, se incluyen los siguientes valores:
WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: Es el número del proyecto.NAMESPACE_ID: Es el ID del espacio de nombres.MANAGED_IDENTITY_ID: El ID de la identidad administrada
Verifica que la configuración de confianza de Certificate Manager contenga el campo spiffeTrustStore
La configuración de confianza del Administrador de certificados contiene un campo llamado spiffeTrustStores. El campo spiffeTrustStores contiene el paquete de confianza asociado con el dominio de confianza del grupo de identidades para cargas de trabajo (representado por en el resultado) y cualquier paquete de confianza adicional especificado por el campo WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles en la configuración de confianza intercalada del grupo de identidades para cargas de trabajo.
Para ver los detalles de la configuración de confianza del Administrador de certificados, usa el comando gcloud certificate-manager trust-configs describe.
gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID
Reemplaza MI_TRUST_CONFIG_ID por la configuración de confianza que creó automáticamente la identidad administrada.
En el siguiente ejemplo de resultado, el host example.com es el dominio de confianza adicional al que se extiende la confianza.
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
En esta salida, se incluyen los siguientes valores:
PROJECT_ID: El ID del proyectoCERTIFICATE_MATERIAL: Es el certificado de la CA con formato PEM que se confía para emitir certificados en el dominio de confianza.WORKLOAD_IDENTITY_POOL_ID: El ID del grupo de identidades para cargas de trabajoPROJECT_NUMBER: Es el número del proyecto.MANAGED_IDENTITY_ID: El ID de la identidad administrada
Para obtener más información sobre la configuración de confianza del Administrador de certificados, consulta Configuración de confianza del Administrador de certificados.
¿Qué sigue?
- Configura la autenticación de identidad para cargas de trabajo administradas para Compute Engine
- Autentica cargas de trabajo en otras cargas de trabajo a través de mTLS