Este documento explica como solucionar erros comuns relacionados à autenticação de cargas de trabalho para outras cargas de trabalho por meio de mTLS .
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
O diretório de credenciais gerado não existe
Se você receber um erro informando que o diretório /var/run/secrets/workload-spiffe-credentials
não existe, faça o seguinte:
Certifique-se de que sua VM oferece suporte à autenticação de carga de trabalho para carga de trabalho executando o comando a seguir de dentro da VM.
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Se a resposta for um código de erro
HTTP 404
com a seguinte mensagem de erro, então esta VM não suporta esta funcionalidade.The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
Para resolver, crie uma nova VM que dê suporte à autenticação de carga de trabalho para carga de trabalho, usando um dos seguintes métodos:
Se a resposta for um código de erro
HTTP 404
com oworkload certificate feature not enabled
, a VM dá suporte a identidades de carga de trabalho gerenciadas, mas o recurso não está habilitado. Para ativar o recurso na VM, consulte Habilitar identidades de carga de trabalho gerenciadas em VMs existentes .
Verifique se a VM está executando um sistema operacional 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 VM_NAME | grep "GCE Agent Started"
Substitua VM_NAME pelo nome da VM.
Para atualizar o agente convidado do Compute Engine, consulte Como atualizar o ambiente convidado .
Verifique os logs de serviço para verificar se
gce-workload-cert-refresh.timer
conseguiu buscar com êxito as credenciais da carga de trabalho e o pacote confiável.# 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 gerado contém apenas o arquivo config_status
O diretório de credenciais gerado, /var/run/secrets/workload-spiffe-credentials
, pode conter apenas o config_status
por vários motivos. Use as etapas a seguir para solucionar esse problema.
Verifique o conteúdo do arquivo
config_status
para garantir que o recurso de identidades de carga de trabalho gerenciada esteja ativado. Se o recurso não estiver ativado usando os metadados de VM apropriados, o arquivo de log conterá a mensagem de erroworkload certificate feature not enabled
.Para resolver esse problema, crie uma nova VM que dê suporte à autenticação de carga de trabalho para carga de trabalho, usando um dos seguintes métodos:
Verifique o conteúdo do arquivo
config_status
para assegurar que não haja erros devido a valores de atributos ausentes ou configuração inválida para a emissão do certificado ou configuração de confiança. Se tais erros existirem, atualize os valores de configuração seguindo as etapas em Atualizar emissão de certificado e configuração confiável .Certifique-se de que as permissões corretas foram concedidas às identidades de carga de trabalho gerenciadas no pool de identidades de carga de trabalho para acessar os pools de CA subordinados. Use o seguinte comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION \
Substitua o seguinte:
- SUBORDINATE_CA_POOL_ID : o ID do pool de CA subordinado.
- SUBORDINATE_CA_POOL_REGION : a região do pool de CA subordinado.
A saída deste comando deve conter o seguinte:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequester
No exemplo anterior:
- PROJECT_NUMBER é o número do seu projeto.
- POOL_ID é o ID do pool de identidades da carga de trabalho.
Se você não vir uma saída semelhante ao exemplo anterior, conceda as permissões necessárias conforme descrito em Autorizar identidades de carga de trabalho gerenciadas para solicitar certificados do pool de CAs .
Se o arquivo
config_status
não contiver mensagens de erro, verifique o valor deiam.googleapis.com/workload-identity
no arquivo. O valor deve corresponder ao seguinte:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
No exemplo anterior:
- PROJECT_NUMBER é o número do projeto que contém o pool de identidades de carga de trabalho gerenciada.
- POOL_ID é o ID do pool de identidades da carga de trabalho.
- NAMESPACE_ID é o ID do namespace no pool de identidades da carga de trabalho.
- MANAGED_IDENTITY_ID é o ID da identidade da carga de trabalho gerenciada.
Se o valor de
iam.googleapis.com/workload-identity
estiver incorreto, você deverá criar uma nova VM com o valor correto, pois o valor da identidade gerenciada só poderá ser atualizado durante a criação da VM.Se o arquivo
config_status
não contiver mensagens de erro, certifique-se de que a configuração confiável contenha uma entrada válida para o domínio confiável SPIFFEPOOL_ID .global. PROJECT_NUMBER .workload.id.goog
, que corresponde ao domínio de confiança SPIFFE na identidade gerenciada atribuída à VM. Para obter mais informações, consulte Definir a configuração de confiança .Se o arquivo
config_status
contiver alguma mensagem de erro com o código de erroINTERNAL_ERROR
, entre em contato com o Cloud Customer Care ou com seu Google Cloud entre em contato com a mensagem de erro.
Consultar endpoints do servidor de metadados retorna um erro 404
Se você obtiver uma resposta 404
ao consultar o ponto de extremidade workload-identities
ou trust-anchors
, certifique-se de que a VM dá suporte às identidades de carga de trabalho gerenciadas executando o seguinte comando de dentro da VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Se a resposta for um código de erro HTTP
404
com a seguinte mensagem de erro:The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
A VM não dá suporte a identidades de carga de trabalho gerenciadas. Para resolver o problema, siga um destes procedimentos:
Se a resposta for um código de erro HTTP
404
com oworkload certificate feature not enabled
, então esta VM dá suporte a identidades de carga de trabalho gerenciadas, mas o recurso não está habilitado. Crie uma nova VM com o recurso habilitado ou crie um novo modelo de instância e um novo grupo de instâncias gerenciadas.Certifique-se de que as permissões corretas tenham sido concedidas ao conjunto de identidades de carga de trabalho para acessar os conjuntos de CA subordinados executando o seguinte comando:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
Substitua o seguinte:
- SUBORDINATE_CA_POOL_ID : o ID do pool de CA subordinado.
- SUBORDINATE_CA_POOL_REGION : a região do pool de CA subordinado.
A saída deste comando deve conter o seguinte, onde PROJECT_NUMBER é o número do seu projeto e POOL_ID é o ID do pool de identidades da carga de trabalho.
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.workloadCertificateRequester
Se a sua saída não contiver estes valores, conceda as permissões corretas, conforme descrito em Autorizar identidades de carga de trabalho geridas para solicitar certificados do conjunto de CA.
Verifique se o valor
iam.googleapis.com/workload-identity
está correto e corresponde ao seguinte:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Se o valor não corresponder, então deverá criar um novo VM porque o valor da identidade gerida não pode ser atualizado após a criação do VM.
Certifique-se de que a configuração confiável contenha uma entrada válida para o domínio confiável SPIFFE
POOL_ID .global. PROJECT_NUMBER .workload.id.goog
, que corresponde ao domínio de confiança SPIFFE na identidade gerenciada atribuída à VM.