Neste documento, explicamos como solucionar erros comuns relacionados à autenticação de cargas de trabalho com outras cargas de trabalho por mTLS.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
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 VM é compatível com a autenticação entre cargas de trabalho executando o seguinte comando dentro da VM.
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Se a resposta for o código do erro
HTTP 404
com a mensagem a seguir, a VM não é compatível com esse recurso.The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.
Para resolver esse problema, crie uma nova VM compatível com autenticação entre cargas de trabalho usando um dos seguintes métodos:
Se a resposta for o código do erro
HTTP 404
com a mensagemworkload certificate feature not enabled
, a VM é compatível com identidades das cargas de trabalho gerenciadas, mas o recurso não está ativado. Para ativar o recurso na VM, consulte Ativar identidades das 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 gcloud CLI 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 registros de serviço para conferir se o
gce-workload-cert-refresh.timer
conseguiu 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_status
para confirmar se o recurso de identidades das cargas de trabalho gerenciadas está ativado. Se o recurso não estiver ativado com os metadados de VM apropriados, o arquivo de registros conterá a mensagem de erroworkload certificate feature not enabled
.Para resolver esse problema, crie uma nova VM compatível com a autenticação entre cargas de trabalho usando um dos seguintes métodos:
Verifique o conteúdo do arquivo
config_status
para 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/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, 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_status
não contiver mensagens de erro, verifique o valor deiam.googleapis.com/workload-identity
dentro 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-identity
estiver incorreto, será necessário criar uma nova VM com o valor correto, porque o valor da identidade gerenciada só pode ser atualizado durante a criação da VM.Se o arquivo
config_status
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 à VM. Para mais informações, consulte Definir a configuração de confiança.Se o arquivo
config_status
contiver mensagens de erro com o códigoINTERNAL_ERROR
, fale com o Cloud Customer Care ou seu contato do Google Cloud informando a mensagem de erro.
Consultar endpoints do servidor de metadados retorna um erro 404
Se você receber uma resposta 404
ao consultar o endpoint workload-identities
ou trust-anchors
, verifique se a VM é compatível com as identidades das cargas de trabalho gerenciadas executando o seguinte comando dentro da VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
Se a resposta for o código do 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 é compatível com as identidades das cargas de trabalho gerenciadas. Para resolver esse problema, realize uma destas ações:
Se a resposta for o código do erro HTTP
404
com a mensagemworkload certificate feature not enabled
, a VM é compatível com as identidades das cargas de trabalho gerenciadas, mas o recurso não está ativado. Crie uma nova VM com o recurso ativado ou crie um novo modelo de instância e um grupo gerenciado de instâncias.Verifique se as permissões corretas foram concedidas ao pool de Identidade da carga de trabalho para acessar os pools de AC subordinada. Para isso, execute o seguinte comando:
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 conteúdo a seguir, em que PROJECT_NUMBER é o número do projeto e POOL_ID é o ID do pool de Identidade 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 saída não contiver esses valores, conceda as permissões corretas conforme descrito em Autorizar identidades das cargas de trabalho gerenciadas ao solicitar certificados do pool de AC.
Verifique se o valor
iam.googleapis.com/workload-identity
está correto e tem a seguinte correspondência:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Se o valor não corresponder, crie uma nova VM, porque o valor da identidade gerenciada não pode ser atualizado após a criação da VM.
Verifique se a configuração de confiança contém uma entrada válida para o domínio de confiança SPIFFE
POOL_ID.global.PROJECT_NUMBER.workload.id.goog
, que corresponde ao domínio de confiança SPIFFE na identidade gerenciada atribuída à VM.