Neste documento, explicamos como solucionar erros comuns relacionados à autenticação de cargas de trabalho com outras cargas de trabalho por mTLS.
Para mais informações, consulte Resolver problemas de federação de identidade da carga de trabalho.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a Google Cloud serviços e APIs do. Para executar
códigos ou amostras de um ambiente de desenvolvimento local, faça a autenticação no
Compute Engine com um destes métodos:
-
Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
- Defina uma região e uma zona padrão.
-
O diretório de credenciais geradas não existe
Se você receber um erro informando que o diretório /var/run/secrets/workload-spiffe-credentials não existe, faça isto:
Verifique se a instância de computação oferece suporte à autenticação de carga de trabalho para carga de trabalho usando uma das seguintes interfaces para confirmar se as identidades de carga de trabalho gerenciadas estão ativadas:
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Na coluna Nome da página Instâncias de VM, clique no nome da instância para conferir mais detalhes sobre ela.
Na seção Segurança e acesso da página Detalhes, verifique se "Certificados de identidade da carga de trabalho" tem o valor "Ativado".
gcloud
Para conferir se o recurso de identidades de carga de trabalho gerenciadas está ativado para uma instância de computação, use o comando
gcloud alpha compute instances describe.gcloud alpha compute instances describe INSTANCE_NAME \ --zone=ZONE \ --format="table(name,zone,identityCertificate)"Substitua:
INSTANCE_NAME: o nome da instância.ZONE: a zona em que a instância está localizada.
REST
Para conferir os detalhes de uma instância de computação, faça uma
GETsolicitação aoinstances.getmétodo. Ao anexar um parâmetro de consulta$fieldsà solicitação, você pode restringir a saída apenas aos campos de interesse.GET https://compute.googleapis.com/compute/alpha/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME$fields=name,identityCertificate,identity
Substitua:
PROJECT_ID: o ID do projeto em que a instância está localizada.ZONE: a zona em que a instância está localizada.INSTANCE_NAME: o nome da instância.
Analise os valores da instância para
identityCertificateeidentity.Se a propriedade
identityCertificateestiver definida comofalse, essa instância de computação não oferece suporte a esse recurso.Para resolver esse problema, crie uma nova instância que ofereça suporte à autenticação de carga de trabalho para carga de trabalho. Para mais detalhes, consulte Ativar identidades de cargas de trabalho gerenciadas em VMs que já existem.
Verifique se a VM está executando um SO convidado com o agente convidado do Compute Engine versão 20231103.01 ou mais recente. Use a CLI gcloud para visualizar a saída da porta serial e determinar a versão atual do agente convidado do Compute Engine:
gcloud compute instances get-serial-port-output INSTANCE_NAME | grep "GCE Agent Started"Substitua INSTANCE_NAME pelo nome da instância de computação.
Para atualizar o agente convidado do Compute Engine, consulte Como atualizar o ambiente convidado.
Verifique os registros de serviço para conferir se o timer do sistema
gce-workload-cert-refresh.timerconseguiu buscar as credenciais das cargas de trabalho e o pacote de confiança.# View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service
O diretório de credenciais geradas contém apenas o arquivo config_status
O diretório de credenciais geradas, /var/run/secrets/workload-spiffe-credentials, pode conter apenas o config_status por vários motivos. Use as etapas a seguir para resolver esse problema.
Verifique o conteúdo do arquivo
config_statuspara confirmar se o recurso de identidades das cargas de trabalho gerenciadas está ativado. Se o recurso não estiver ativado usando os valores apropriados, o arquivo de registro vai conter a mensagem de erroworkload certificate feature not enabled.Para resolver esse problema, crie uma nova instância de computação que ofereça suporte à autenticação de carga de trabalho para carga de trabalho usando um dos seguintes métodos:
Verifique o conteúdo do arquivo
config_statuspara confirmar se não há erros devido a valores de atributo ausentes ou configurações inválidas para a emissão de certificados ou a configuração de confiança. Se houver esses erros, atualize os valores de configuração conforme as etapas em Atualizar a emissão de certificados e a configuração de confiança.Verifique se as permissões corretas foram concedidas às identidades das cargas de trabalho gerenciadas no pool de Identidade da carga de trabalho para acessar os pools de AC subordinada. Use o comando a seguir:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Substitua:
- SUBORDINATE_CA_POOL_ID: o ID do pool de AC subordinada.
- SUBORDINATE_CA_POOL_REGION: a região do pool de AC subordinada.
A saída desse comando terá o seguinte conteúdo:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequesterNo exemplo anterior, ocorre o seguinte:
- PROJECT_NUMBER é o número do projeto.
- POOL_ID é o ID do pool de Identidade da carga de trabalho.
Se a saída não for semelhante ao exemplo anterior, conceda as permissões necessárias conforme descrito em Autorizar identidades das cargas de trabalho gerenciadas para solicitar certificados do pool de AC.
Se o arquivo
config_statusnão contiver mensagens de erro, verifique o valor deiam.googleapis.com/workload-identitydentro do arquivo. O valor precisa ter a seguinte correspondência:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
No exemplo anterior, ocorre o seguinte:
- PROJECT_NUMBER é o número do projeto que contém o pool de Identidade da carga de trabalho gerenciada.
- POOL_ID é o ID do pool de Identidade da carga de trabalho.
- NAMESPACE_ID é o ID do namespace no pool de Identidade da carga de trabalho.
- MANAGED_IDENTITY_ID é o ID da identidade da carga de trabalho gerenciada.
Se o valor de
iam.googleapis.com/workload-identityestiver incorreto, será necessário criar uma nova instância de computação com o valor correto, porque o valor da identidade gerenciada só pode ser atualizado durante a criação da instância.Se o
config_statusarquivo não contiver mensagens de erro, verifique se a configuração de confiança contém uma entrada válida para o domínio de confiança SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog, que corresponde ao domínio de confiança SPIFFE na identidade gerenciada atribuída à instância de computação. Para mais informações, consulte Definir a configuração de confiança.Se o arquivo
config_statuscontiver mensagens de erro com o códigoINTERNAL_ERROR, fale com o Cloud Customer Care ou seu Google Cloud contato informando a mensagem de erro.