Neste documento, explicamos como configurar uma identidade de carga de trabalho gerenciada no serviço de back-end de um balanceador de carga. Depois de atribuir uma identidade gerenciada, o balanceador de carga e os back-ends podem se autenticar mutuamente usando o mTLS de back-end.
Para configurar o mTLS de back-end usando uma identidade de carga de trabalho gerenciada, faça o seguinte:
- Configure um pool de autoridade certificadora (CA) do Certificate Authority Service para emitir certificados X.509 para identidades de cargas de trabalho gerenciadas.
- Configure um domínio de confiança criando um pool de identidade da carga de trabalho com um namespace, uma identidade gerenciada, uma política de comprovação, um recurso de configuração de emissão de certificado inline e um recurso de configuração de confiança inline.1
- Vincule a AC ao pool de identidades da carga de trabalho usando a configuração de emissão de certificado inline.
- Autorize que identidades das cargas de trabalho gerenciadas solicitem certificados do pool de ACs.
- Crie o balanceador de carga e anexe a identidade gerenciada ao serviço de back-end.
1 Você precisa criar uma configuração de confiança inline somente se o balanceador de carga e os back-ends estiverem em domínios de confiança diferentes. Para este exemplo, o balanceador de carga e os back-ends fazem parte do mesmo domínio de confiança. Portanto, a configuração do recurso de configuração de confiança inline é opcional.
Para criar uma identidade gerenciada para os back-ends, consulte Visão geral das identidades de cargas de trabalho gerenciadas.
Antes de começar
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.
Leia o documento Visão geral do mTLS de back-end com identidades de cargas de trabalho gerenciadas.
Saiba mais sobre a emissão de certificados usando o 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 Configure a CLI do Google Cloud para usar o projeto adicionado à lista de permissões para faturamento e cota.
gcloud config set billing/quota_project PROJECT_ID
Substitua
PROJECT_IDpelo ID do projeto que foi adicionado à lista de permissões para a visualização da identidade da carga de trabalho gerenciada.Crie uma identidade gerenciada para o back-end. Para saber mais, consulte Visão geral das identidades de cargas de trabalho gerenciadas.
Funções exigidas
Para receber as permissões necessárias para criar identidades de cargas de trabalho gerenciadas e provisionar certificados de identidade de carga de trabalho gerenciada, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Para criar e configurar identidades de cargas de trabalho gerenciadas:
-
Administrador de pool de Identidade da carga de trabalho do IAM (
roles/iam.workloadIdentityPoolAdmin) -
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin)
-
Administrador de pool de Identidade da carga de trabalho do IAM (
-
Para criar e configurar pools de CAs:
Administrador de serviço de CA (
roles/privateca.admin) -
Para criar recursos do balanceador de carga, como
TargetHTTPSProxy: Administrador do balanceador de carga do Compute (roles/compute.loadBalancerAdmin) -
Para usar os recursos do Gerenciador de certificados:
Proprietário do Gerenciador de certificados (
roles/certificatemanager.owner) -
Para criar componentes de segurança e rede:
-
Administrador de rede do Compute (
roles/compute.networkAdmin) -
Administrador de segurança do Compute (
roles/compute.securityAdmin)
-
Administrador de rede do Compute (
-
Para criar um projeto (opcional):
Criador de projetos (
roles/resourcemanager.projectCreator)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Configurar o serviço de AC para emitir certificados para identidades de cargas de trabalho gerenciadas
É possível usar pools de CA para configurar uma CA raiz. O pool de ACs emite os certificados X.509 para identidades gerenciadas de carga de trabalho.
Criar o pool de CAs raiz
Crie o pool de CAs raiz no nível Enterprise usando o comando gcloud privateca pools create.
Esse nível é destinado à emissão de certificados de longa duração e de baixo volume.
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
Substitua:
ROOT_CA_POOL_ID: um ID exclusivo para o pool de ACs raizREGION: a região em que o pool de ACs raiz está localizadoPROJECT_ID: o ID do projeto;
Para saber mais sobre pools de ACs, consulte Criar um pool de ACs.
Crie uma AC raiz:
Crie uma AC raiz no pool de AC raiz usando o
comando gcloud privateca roots create.
Para criar uma CA raiz, execute o seguinte 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
Substitua:
ROOT_CA_ID: um nome exclusivo para a CA raiz. O nome da CA pode ter até 64 caracteres e precisa conter apenas caracteres alfanuméricos minúsculos e maiúsculos, sublinhados ou hifens. O nome da AC precisa ser exclusivo na região.ROOT_CA_POOL_ID: o ID do pool de ACs raiz.ROOT_CA_CN: o nome comum da CA raizROOT_CA_ORGANIZATION: a organização da CA raiz.KEY_ALGORITHM: o algoritmo a ser usado para criar uma chave do Cloud KMS. Essa sinalização é opcional. Se você não incluir essa flag, o algoritmo de chave serársa-pkcs1-4096-sha256por padrão.REGION: a região em que o pool de ACs raiz está localizado.PROJECT_ID: o ID do projeto;
Para saber mais sobre uma AC raiz, consulte Criar uma AC raiz.
Criar identidades de carga de trabalho gerenciada
Ao usar identidades de carga de trabalho gerenciadas,o Google Cloud pode provisionar e gerenciar automaticamente certificados X.509 do Certificate Authority Service. As identidades de carga de trabalho são definidas em um pool de identidades de carga de trabalho e organizadas em limites administrativos chamados namespaces.
Criar um pool de identidade da carga de trabalho
É preciso criar um pool no modo TRUST_DOMAIN para criar identidades de carga de trabalho
gerenciadas. Para criar um pool de identidades de cargas de trabalho para identidades
de cargas de trabalho gerenciadas, use o
gcloud iam workload-identity-pools create comando.
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
Substitua WORKLOAD_IDENTITY_POOL_ID pelo ID exclusivo do
pool. O ID precisa ter entre 4 e 32 caracteres, conter apenas caracteres alfanuméricos minúsculos e traços, além de começar e terminar com um caractere alfanumérico. Depois de criar um pool de identidades de cargas de trabalho, não é possível alterar o ID dele.
Para verificar se o pool de identidades de cargas de trabalho foi criado no
modo TRUST_DOMAIN, use o
gcloud iam workload-identity-pools describecomando .
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
O resultado será assim:
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
Esta saída inclui os seguintes valores:
PROJECT_NUMBER: o número do projetoGoogle CloudWORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalho
Criar um namespace
O comando gcloud iam workload-identity-pools namespaces create
permite criar um namespace em um pool de identidades de cargas de trabalho.
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Substitua:
NAMESPACE_ID: o ID exclusivo do namespace. O ID precisa ter entre 2 e 63 caracteres, conter apenas caracteres alfanuméricos minúsculos e traços, além de começar e terminar com um caractere alfanumérico. Depois de criar um namespace, não é possível mudar o ID dele.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalho que você criou anteriormente.
Criar uma identidade de carga de trabalho gerenciada
O comando gloud iam workload-identity-pools managed-identities create
permite criar uma identidade de carga de trabalho gerenciada em um namespace
de pool de identidades de cargas de trabalho.
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Substitua:
MANAGED_IDENTITY_ID: o ID exclusivo da identidade gerenciada. O ID precisa ter entre 2 e 63 caracteres, conter apenas caracteres alfanuméricos minúsculos e traços, além de começar e terminar com um caractere alfanumérico. Depois de criar uma identidade de carga de trabalho gerenciada, não é possível mudar o ID dela.NAMESPACE_ID: o ID do namespace que você criou anteriormente.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalho que você criou anteriormente.
O ID da identidade da carga de trabalho gerenciada é o identificador SPIFFE, que é formatado da seguinte maneira:
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Criar uma política de atestado
Neste exemplo, uma política de atestado contém uma regra que verifica se o serviço de back-end faz parte de um projeto específico. Se a verificação da política de atestado for aprovada, o IAM vai solicitar um certificado X.509 para a identidade gerenciada do serviço de autoridade de certificação.
Para criar uma política de atestado, execute o seguinte comando para adicionar uma regra de atestado.
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
Substitua:
MANAGED_IDENTITY_ID: o ID exclusivo da identidade gerenciada. O ID precisa ter entre 2 e 63 caracteres, conter apenas caracteres alfanuméricos minúsculos e traços, além de começar e terminar com um caractere alfanumérico. Depois de criar uma identidade de carga de trabalho gerenciada, não é possível mudar o ID dela.NAMESPACE_ID: o ID do namespace que você criou anteriormente.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de Identidade da carga de trabalho que você criou anteriormente.PROJECT_NUMBER: o número do projeto Google Cloud .
Criar uma configuração de emissão de certificado inline
Para vincular uma AC a um pool de identidades de carga de trabalho, o pool precisa ter uma configuração de emissão de certificado inline.
Para configurar uma configuração de emissão de certificado inline, crie um arquivo de configuração formatado em JSON (cic.json). O formato do arquivo é semelhante ao seguinte:
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
["lifetime": "CERTIFICATE_LIFETIME"],
["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
["keyAlgorithm": "ALGORITHM"]
}
}
Substitua:
REGION: a região em que a CA está localizada.PROJECT_NUMBER: o número do projeto. Para receber o número do projeto especificado pela variávelPROJECT_ID, execute o seguinte comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: o ID do pool de ACs raiz.CERTIFICATE_LIFETIME: ciclo de vida dos certificados de carga de trabalho emitidos pelo pool de CA em segundos. Por exemplo: 86400s (para 24 horas).CERTIFICATE_LIFETIMEprecisa ser um valor entre 24 horas e 30 dias. SeCERTIFICATE_LIFETIMEnão for especificado, a duração padrão do certificado será de 24 horas.CERTIFICATE_LIFETIMEé opcional.ROTATION_WINDOW_PERCENTAGE: a porcentagem do ciclo de vida do certificado em que uma renovação é acionada. O valor deROTATION_WINDOW_PERCENTAGEprecisa estar entre 50 e 80. O padrão é 50.ROTATION_WINDOW_PERCENTAGEé opcional.ALGORITHM: o algoritmo de criptografia usado para gerar a chave privada. Os valores válidos paraALGORITHMsãoECDSA_P256(padrão),ECDSA_P384,RSA_2048,RSA_3072eRSA_4096.ALGORITHMé opcional.
Criar uma configuração de confiança inline
Neste exemplo de configuração, o balanceador de carga e o back-end fazem parte do mesmo domínio de confiança e compartilham o mesmo certificado raiz. Como resultado, a configuração da configuração de confiança inline é opcional. A raiz de confiança comum é usada para criar uma cadeia de confiança e verificar a identidade das cargas de trabalho no domínio de confiança.
Por padrão, as cargas de trabalho no mesmo domínio de confiança podem se autenticar mutuamente usando identidades gerenciadas de carga de trabalho. Se você quiser que cargas de trabalho em domínios de confiança diferentes se autentiquem mutuamente, declare explicitamente a relação de confiança no pool de identidades de carga de trabalho. Para fazer isso, crie uma configuração de confiança inline que reconheça e aceite certificados de outros domínios de confiança.
Para criar uma configuração de confiança inline, faça o seguinte:
Faça o download dos certificados.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONSubstitua:
ROOT_CA_POOL_ID: o ID do pool de ACs raizCERTIFICATE_PATH: o caminho para a saída do certificado codificado em PEMREGION: a região do pool de ACs raiz
Crie um arquivo de configuração formatado em JSON (
tc.json) que contenha a configuração de confiança inline, com certificados formatados em PEM.O arquivo será parecido com este:
{ "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-----" } ] } } } }Substitua:
TRUST_DOMAIN_NAME: o domínio de confiança pode ser qualquer domínio de confiança (como "example.com"), incluindo outro (ou até mesmo o mesmo) domínio de confiança do pool de identidades da carga de trabalho.Para um domínio de confiança do pool de identidades da carga de trabalho, o nome do domínio de confiança é formatado da seguinte maneira:
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
No formato, substitua o seguinte:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalhoPROJECT_NUMBER: o número do projeto que contém o pool de Identidade da carga de trabalho
CERTIFICATE_MATERIAL: o certificado de CA formatado em PEM confiável para emitir certificados no domínio de confiança. O comando a seguir pode ser usado para codificar um arquivo de certificado no formato PEM em uma string de uma linha:cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
Vincular a CA ao pool de identidades da carga de trabalho
Depois de criar a hierarquia de AC e uma configuração de emissão de certificados para a AC, é possível vincular a AC ao pool de identidades da carga de trabalho. Para vincular a AC ao pool de identidades da carga de trabalho, atualize o pool de identidades da carga de trabalho com a configuração de emissão de certificado da AC. Em seguida, você pode verificar se o pool foi atualizado.
Atualizar o pool de identidades da carga de trabalho
Para vincular uma AC ao pool de identidades da carga de trabalho, atualize o pool com a configuração de emissão de certificado da AC. Em seguida, verifique se o pool foi atualizado.
Para atualizar o pool, execute o seguinte 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
Substitua:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalho.CIC_JSON_FILE_PATH: o caminho para o arquivo de configuração formatado em JSON (cic.json) da configuração de emissão de certificado inline que você criou anteriormente.TC_JSON_FILE_PATH: o caminho para o arquivo de configuração no formato JSON (tc.json) da configuração de confiança inline que você criou anteriormente. Se as cargas de trabalho forem autenticadas em diferentes domínios de confiança, especifique esse arquivo. Caso contrário, omita--inline-trust-config.
Verificar se o pool de identidades da carga de trabalho foi atualizado
Para verificar se o pool de identidades de cargas de trabalho foi atualizado com a configuração de emissão de certificado e a configuração de confiança, execute o seguinte comando:
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
Substitua:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalho.PROJECT_ID: o ID do projeto;
O resultado será assim:
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
Esta saída inclui os seguintes valores:
PROJECT_NUMBER: o número do projeto.REGION: a região em que o pool de ACs raiz está localizadoROOT_CA_POOL_ID: o ID do pool de ACs raizALGORITHM: o algoritmo de criptografia usado para gerar a chave privadaCERTIFICATE_LIFETIME: a vida útil, em segundos, dos certificados de carga de trabalho emitidos pelo pool de CAs.ROTATION_WINDOW_PERCENTAGE: a porcentagem do ciclo de vida do certificado em que uma renovação é acionada.TRUST_DOMAIN_NAME: o domínio de confiança pode ser qualquer domínio de confiança (como "example.com"), incluindo outro (ou até mesmo o mesmo) domínio de confiança do pool de identidades da carga de trabalho.CERTIFICATE_MATERIAL: o certificado de CA formatado em PEM confiável para emitir certificados no domínio de confiança.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalho
Se inlineCertificateIssuanceConfig ou inlineTrustConfig não estiverem presentes na saída, verifique se você configurou corretamente a gcloud CLI para usar o projeto certo para faturamento e cota.
Talvez seja necessário atualizar para uma versão mais recente da CLI gcloud.
Autorizar que identidades das cargas de trabalho gerenciadas solicitem certificados do pool de ACs
Depois de vincular a AC ao pool de identidades da carga de trabalho, você precisa autorizar as identidades de carga de trabalho gerenciadas a solicitar certificados do pool de AC.
Conceda o papel de requerente de certificado da carga de trabalho do serviço de CA (
roles/privateca.workloadCertificateRequester) ao domínio de confiança. Essa função autoriza o domínio de confiança a solicitar certificados das cadeias de certificados do CA Service.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_IDSubstitua:
ROOT_CA_POOL_ID: o ID do pool de ACs raizREGION: a região do pool de ACs raizPROJECT_NUMBER: o número do projeto.Para receber
PROJECT_NUMBERdePROJECT_ID, execute o seguinte comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalhoPROJECT_ID: o ID do projeto;
Conceda o papel de leitor do pool de serviços de CA (
roles/privateca.poolReader) ao domínio de confiança. Essa função autoriza o domínio de confiança a receber os certificados X.509 assinados das cadeias de certificados da AC.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_IDSubstitua:
ROOT_CA_POOL_ID: o ID do pool de ACs raizREGION: a região do pool de ACs raizPROJECT_NUMBER: o número do projeto.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalhoPROJECT_ID: o ID do projeto;
Crie o balanceador de carga e atribua a identidade gerenciada ao serviço de back-end.
A identidade gerenciada só pode ser atribuída ao criar o serviço de back-end.
As etapas nesta seção se referem apenas à atribuição de uma identidade gerenciada ao serviço de back-end do balanceador de carga. Isso faz parte da configuração de back-end do balanceador de carga.
Para configurar um balanceador de carga de aplicativo externo global, siga as etapas em Configurar um balanceador de carga de aplicativo externo global com back-ends de grupos de instâncias de VM. Na etapa em que você está configurando o serviço de back-end do balanceador de carga, faça o seguinte:
Console
No console do Google Cloud , acesse a página Balanceamento de carga.
Na seção Configuração de back-end, adicione os detalhes relevantes para criar um serviço de back-end.
Expanda a seção Configurações avançadas.
Na seção Autenticação de back-end, selecione a opção Identidade gerenciada.
Para atribuir uma identidade gerenciada ao serviço de back-end, no campo Identidade gerenciada, insira a identidade gerenciada da carga de trabalho que você criou antes.
Clique em Criar.
Siga as etapas descritas em Configurar o balanceador de carga para concluir a configuração.
gcloud
Para atribuir uma identidade gerenciada ao serviço de back-end, adicione a flag
--identityao usar o 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' \ --globalSubstitua:
BACKEND_SERVICE_NAME: o nome do serviço de back-end.HEALTH_CHECK_NAME: o nome da verificação de integridade.WORKLOAD_IDENTITY_POOL_ID: ID do pool de identidades da carga de trabalhoPROJECT_NUMBER: o número do projeto.NAMESPACE_ID: o ID do namespaceMANAGED_IDENTITY_ID: o ID da identidade gerenciada
Recursos criados automaticamente
Depois que uma identidade gerenciada é configurada no serviço de back-end do balanceador de carga, os seguintes recursos são criados automaticamente pela identidade gerenciada da carga de trabalho:
- Configuração de autenticação de back-end: anexada ao serviço de back-end do balanceador de carga
- Certificado de identidade gerenciada do Gerenciador de certificados: anexado à configuração de autenticação de back-end
- Configuração de confiança do Gerenciador de certificados: anexada à configuração de autenticação de back-end
As seções a seguir estão relacionadas à verificação da configuração para conferir se os recursos criados automaticamente foram configurados.
Verificar a configuração
Verifique sua configuração para saber se os recursos criados automaticamente foram configurados.
Os recursos criados automaticamente têm um prefixo mi, o que indica que o recurso foi criado pela identidade de carga de trabalho gerenciada.
Verificar a criação da configuração de autenticação de back-end e da identidade gerenciada
Para verificar a criação da configuração de autenticação de back-end e da identidade gerenciada, use o comando gcloud beta compute backend-services describe para descrever o serviço de back-end.
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
O resultado será assim:
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
Esta saída inclui os seguintes valores:
PROJECT_ID: o ID do projeto;HEALTH_CHECK_NAME: o nome da verificação de integridade.BACKEND_SERVICE_NAME: o nome do serviço de back-endPORT_NAME: o nome da portaREGION: a região em que o pool de ACs raiz está localizadoWORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalhoPROJECT_NUMBER: o número do projeto.NAMESPACE_ID: o ID do namespaceMANAGED_IDENTITY_ID: o ID da identidade gerenciada
A configuração de autenticação de back-end é criada automaticamente e anexada ao
campo backendService.tlsSettings.authenticationConfig.
A configuração de autenticação de back-end que começa com o prefixo mi é chamada de MI_BACKEND_AUTHENTICATION_CONFIG_ID na seção a seguir.
A identidade da carga de trabalho gerenciada também está anexada ao campo backendService.tlsSettings.identity. Ele tem o seguinte formato:
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Verificar a criação do certificado de identidade gerenciada do Certificate Manager e a configuração de confiança do Certificate Manager
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
O resultado será assim:
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'
O clientCertificate e o trustConfig são criados automaticamente pela
identidade da carga de trabalho gerenciada e anexados ao
recurso de configuração de autenticação de back-end.
O clientCertificate que começa com o prefixo mi é chamado de MI_CLIENT_CERTIFICATE_ID na seção a seguir.
O trustConfig que começa com o prefixo mi é chamado de MI_TRUST_CONFIG_ID na seção a seguir.
Verificar se o certificado do Certificate Manager é um certificado de identidade gerenciada
Para conferir os detalhes do certificado de identidade gerenciada do Gerenciador de certificados, use o comando gcloud certificate-manager certificates describe.
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
O resultado será assim:
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
Esta saída inclui os seguintes valores:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalhoPROJECT_NUMBER: o número do projeto.NAMESPACE_ID: o ID do namespaceMANAGED_IDENTITY_ID: o ID da identidade gerenciadaCERTIFICATE_MATERIAL: o X.509-SVID em um formato codificado em PEM.
O certificado de identidade gerenciada do Certificate Manager tem uma propriedade
managedIdentity, que o identifica como um certificado de identidade
gerenciada. O recurso de certificado da identidade gerenciada do Certificate Manager
armazena o X.509-SVID em um formato codificado em PEM.
O escopo do certificado de identidade gerenciada do Certificate Manager é
CLIENT_AUTH, o que indica que ele é usado como um certificado
de cliente no mTLS de back-end.
Verifique se o ID do SPIFFE faz parte do SAN no X.509-SVID.
O SVID X.509 contém o ID do SPIFFE codificado como um URI no campo SAN. Esse ID SPIFFE corresponde à identidade gerenciada no pool de identidades da carga de trabalho.
Para imprimir um formato legível do certificado, execute o seguinte comando:
openssl x509 -text -noout \ <<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"
A saída será semelhante a esta (abreviada):
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
Esta saída inclui os seguintes valores:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalhoPROJECT_NUMBER: o número do projeto.NAMESPACE_ID: o ID do namespaceMANAGED_IDENTITY_ID: o ID da identidade gerenciada
Verifique se a configuração de confiança do Certificate Manager contém o campo spiffeTrustStore.
A configuração de confiança do Gerenciador de certificados contém um campo chamado spiffeTrustStores. O campo spiffeTrustStores contém o pacote de confiança
associado ao domínio de confiança do pool de identidade da carga de trabalho (representado por
na saída) e outros pacotes de confiança especificados pelo
campo WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles na configuração de confiança
inline do pool de identidade da carga de trabalho.
Para conferir os detalhes da configuração de confiança do Gerenciador de certificados,
use o comando gcloud certificate-manager trust-configs describe.
gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID
Substitua MI_TRUST_CONFIG_ID pela configuração de confiança
criada automaticamente pela identidade gerenciada.
No exemplo de saída a seguir, o host example.com é o
domínio de confiança adicional a que a confiança é estendida.
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'
Esta saída inclui os seguintes valores:
PROJECT_ID: o ID do projeto;CERTIFICATE_MATERIAL: o certificado de CA formatado em PEM confiável para emitir certificados no domínio de confiança.WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidades da carga de trabalhoPROJECT_NUMBER: o número do projeto.MANAGED_IDENTITY_ID: o ID da identidade gerenciada
Para saber mais sobre a configuração de confiança do Gerenciador de certificados, consulte Configuração de confiança do Gerenciador de certificados.
A seguir
- Configurar a autenticação de identidade da carga de trabalho gerenciada para o Compute Engine
- Autenticar cargas de trabalho em outras cargas de trabalho por mTLS