Resolva problemas da federação de identidades da força de trabalho

Esta página descreve resoluções para erros comuns da Workload Identity Federation.

A APIGoogle Cloud não aceita a credencial emitida a partir de SecurityTokenService

As chaves de acesso devolvidas pela API SecurityTokenService são chaves de acesso federadas. Embora a maioria das Google Cloud APIs suporte a federação de identidades, determinados métodos da API podem ter limitações. Para ver uma lista de limitações, consulte o artigo Federação de identidades: produtos e limitações.

Se encontrar o seguinte erro, pode estar a tentar usar um token de acesso federado com um serviço que não os suporta.

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
  }
}

Para resolver este erro, troque o token de acesso federado por um token de acesso não restrito chamando GenerateAccessToken. Para mais informações, consulte o artigo Obter credenciais de curta duração com federação de identidades.

Adicione um fornecedor de identidade à lista de autorizações para utilização com a Workload Identity Federation

Se tentar configurar um fornecedor de identidade não permitido como um fornecedor do Workload Identity Pool, ocorre o seguinte erro:

FAILED_PRECONDITION: Precondition check failed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: "Org Policy violated for value: '{PROVIDER}'."
    subject: orgpolicy:projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}
    type: constraints/iam.workloadIdentityPoolProviders

Para resolver este problema, siga as instruções em Restrinja a configuração do fornecedor de identidade para adicionar o fornecedor de identidade à lista de autorizações para utilização com a Workload Identity Federation.

O JWK introduzido não está num formato JSON válido

Se estiver a configurar um fornecedor de OIDC e receber o erro Input JWK is not in a valid json format, pode dever-se ao facto de os pontos finais protegidos com certificados autoassinados não serem suportados pelo Google Cloud. Especificamente, os campos x5c e x5t não são suportados e têm de ser removidos do JWK OIDC.

Para resolver problemas com o seu JWK, faça o seguinte:

  1. Edite o seu JWK e remova os campos x5c (cadeia de certificados X.509) e x5t (impressão digital SHA-1 do certificado X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Verifique se os restantes campos JWK estão formatados corretamente, conforme descrito na especificação OIDC.

  3. Configure o fornecedor OIDC com o JWK atualizado.

Erro ao estabelecer ligação ao emissor das credenciais fornecidas

Se receber o seguinte erro, pode dever-se ao facto de Google Cloud não conseguir obter o documento de metadados OIDC ou o JWKS do seu IdP:

{
  "error": "invalid_grant",
  "error_description":"Error connecting to the given credential's issuer."
 }

Normalmente, este erro ocorre porque os pontos finais não estão configurados para serem acessíveis a partir da Internet pública. Para resolver este erro, verifique se o ponto final do OIDC está disponível publicamente e em conformidade com a especificação do OIDC. Para mais informações, consulte o artigo Preparar o fornecedor de identidade externo.

Se continuar a receber o erro, verifique se o emissor do token, a reivindicação iss no token, está correto.

A reivindicação google.subject mapeada excede o limite de 127 bytes

Se receber o seguinte erro, significa que as credenciais recebidas pela API SecurityTokenService geram uma reivindicação google.subject que excede o limite de carateres:

{
  "error": "invalid_request",
  "error_description":"The size of mapped attribute google.subject exceeds the 127 bytes limit. Either modify your attribute mapping or the incoming assertion to produce a mapped attribute that is less than 127 bytes."
 }

Para resolver este problema, use a função extract para remover carateres desnecessários e extrair um identificador de assunto único de uma reivindicação mais longa, por exemplo:

google.subject=assertion.sub.extract('/users/{sub_claim}')

Erro 429 Demasiados pedidos

Se receber o erro 429 Too Many Requests ao pedir um token à API SecurityTokenService, significa que o seu projeto excedeu o limite de quota de velocidade para a API. Google Cloud

O erro inclui uma mensagem semelhante à seguinte:

{
  "error": "quota_exceeded",
  "error_description":"The request was throttled due to rate limit: sts.googleapis.com/requests. Please retry after a few seconds."
 }

Para resolver este problema, identifique o sts.googleapis.com/requests nome da métrica indicado na mensagem de erro, localize o nome da métrica correspondente na página de quotas da IAM, confirme se a percentagem de utilização excede a quota e peça um aumento da quota.