Resolva problemas de acesso do utilizador

Este documento fornece orientações de resolução de problemas para problemas de acesso de utilizadores no GKE Identity Service.

O dispositivo gcloud anthos create-login-config não consegue obter clientconfig

Este problema ocorre num dos seguintes casos:

  • O ficheiro kubeconfig transmitido a gcloud anthos create-login-config está incorreto.
  • O recurso personalizado ClientConfig não está presente no cluster (o serviço de identidade do GKE não está instalado no cluster).

Mensagem de erro

  failed to get clientconfig default in namespace kube-public
  

Solução

Para resolver este problema, faça o seguinte:

  1. Certifique-se de que tem o ficheiro kubeconfig correto para o seu cluster.
  2. Para verificar se o recurso personalizado ClientConfig está no cluster, execute o seguinte comando:

    kubectl --kubeconfig KUBECONFIG  get clientconfig default -n kube-public
    

    Se o ClientConfig não estiver presente no cluster, instale e configure o GKE Identity Service no cluster. Para mais informações sobre as opções de configuração de clusters, consulte o artigo Opções de configuração para clusters.

A criação do gcloud anthos create-login-config falha devido a um nome de cluster duplicado

Este problema ocorre se tentar criar uma configuração de início de sessão para um cluster num ficheiro que já contém uma configuração de início de sessão para este cluster.

Mensagem de erro

  error merging with file FILENAME because FILENAME contains a
    cluster with the same name as the one read from KUBECONFIG.
  

Solução

Para resolver este problema, use a flag --output para especificar um novo ficheiro de destino.

Se não fornecer --output, estes dados de configuração de início de sessão são escritos num ficheiro denominado kubectl-anthos-config.yaml no diretório atual.

gcloud anthos auth login falha com proxyconnect tcp

Este problema ocorre quando existe um erro nas configurações das variáveis de ambiente https_proxy ou HTTPS_PROXY. Se existir um https:// especificado nas variáveis de ambiente, as bibliotecas de clientes HTTP GoLang podem falhar se o proxy estiver configurado para processar ligações HTTPS através de outros protocolos, como o SOCK5.

Mensagem de erro

  proxyconnect tcp: tls: first record does not look like a TLS handshake
  

Solução

Para resolver este problema, modifique as variáveis de ambiente https_proxy e HTTPS_PROXY para omitir o https:// prefix. No Windows, modifique as variáveis de ambiente do sistema. Por exemplo, altere o valor da variável de ambiente https_proxy de https://webproxy.example.com:8000 para webproxy.example.com:8000.

O acesso ao cluster falha quando usa o kubeconfig gerado por gcloud anthos auth login

Este problema ocorre quando o servidor da API Kubernetes não consegue autorizar o utilizador por um dos seguintes motivos:

  • Existe um erro na configuração usada para iniciar sessão com o comando gcloud anthos auth login.
  • As políticas de RBAC necessárias estão incorretas ou em falta para o utilizador.

Mensagem de erro

  Unauthorized
  

Solução

Para resolver este problema, faça o seguinte:

  1. Valide a configuração usada para iniciar sessão.

    Configuração do OIDC

    A secção authentication.oidc no ficheiro de configuração do cluster de utilizadores tem os campos group e username que são usados para definir as flags --oidc-group-claim e --oidc-username-claim no servidor da API Kubernetes. Quando o servidor da API recebe um token de identidade de um utilizador, reencaminha o token para o serviço de identidade do GKE, que devolve o group-claim extraído e o username-claim de volta para o servidor da API. O servidor da API usa a resposta para verificar se o grupo ou o utilizador correspondente tem as autorizações corretas.

    Verifique se as reivindicações definidas para group e user na secção authentication.oidc do ficheiro de configuração do cluster estão presentes no token de ID.

  2. Valide as políticas de RBAC aplicadas.

    Para saber como configurar as políticas de CABF corretas para o GKE Identity Service, consulte o artigo Configure o controlo de acesso baseado em funções (CABF).

As RBACs para grupos não funcionam para fornecedores OIDC

  1. Verifique se o token de ID tem as informações do grupo

    Depois de executar o comando gcloud anthos auth login para iniciar o fluxo de autenticação OIDC, o token de ID é armazenado no ficheiro kubeconfig no campo id-token. Use jwt.io para descodificar o token de ID e verificar se contém as informações do grupo do utilizador conforme esperado.

  2. Se o token de ID não tiver informações de grupo do utilizador, configure corretamente o fornecedor de OIDC para devolver as informações de grupo de acordo com a documentação do seu fornecedor de OIDC. Por exemplo, se estiver a usar a configuração do OIDC do fornecedor de identidade Okta, siga a documentação do fornecedor de identidade Okta para configurar grupos no token de ID.

  3. Se o token de ID tiver informações de grupo, verifique se a chave de informações de grupo no token de ID corresponde ao campo groupsClaim configurado na secção oidc.

    Por exemplo, se o token de ID contiver informações de grupos na chave groups:

    "groups" : ["group1", "group2" ...]
    

    então, o valor do campo groupsClaim deve ser groups na secção oidc.

    Depois de modificar a configuração na secção oidc, certifique-se de que executa novamente as instruções indicadas em Configurar acesso do utilizador e Aceder a clusters.

Resolva problemas de fornecedores de identidade

Se tiver problemas ao usar o OIDC ou o LDAP com o seu cluster do GKE, siga os passos nesta secção para resolver problemas do serviço de identidade do GKE e ajudar a determinar se existe um problema com a configuração do seu fornecedor de identidade.

Ative o registo de depuração do GKE Identity Service

Para ajudar a resolver problemas relacionados com a identidade no seu cluster, ative o registo de depuração do GKE Identity Service.

  1. Aplique uma patch ao cluster existente com kubectl patch:

    kubectl patch deployment ais \
      -n anthos-identity-service --type=json \
      -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value":"--vmodule=cloud/identity/hybrid/charon/*=LOG_LEVEL"}]' \
      --kubeconfig KUBECONFIG
    

    Substitua o seguinte:

    • LOG_LEVEL: para os registos mais detalhados, defina este valor como nível 3 durante a resolução de problemas.

    • KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de utilizadores.

Verifique o registo do contentor do serviço de identidade do GKE

Reveja o conteúdo dos registos do contentor do GKE Identity Service para verificar se existem erros ou avisos.

  1. Para rever os registos, use kubectl logs:

    kubectl logs -f -l k8s-app=ais \
      -n anthos-identity-service \
      --kubeconfig KUBECONFIG
    

    Substitua KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster de utilizadores.

Reinicie o pod do serviço de identidade do GKE

Se os registos do contentor mostrarem problemas, reinicie o pod do GKE Identity Service.

  1. Para reiniciar o pod do serviço de identidade do GKE, elimine o pod existente. É criado automaticamente um novo pod como substituição.

    kubectl delete pod -l k8s-app=ais \
      -n anthos-identity-service \
      --kubeconfig KUBECONFIG
    

    Substitua KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster de utilizadores.

Resolva problemas de conetividade com o Fornecedor de identidade

Se o pod do serviço de identidade do GKE parecer estar a ser executado corretamente, teste a conetividade ao fornecedor de identidade remoto.

  1. Inicie um pod do busybox no mesmo espaço de nomes que o pod do serviço de identidade do GKE:

    kubectl run curl --image=radial/busyboxplus:curl \
      -n anthos-identity-service -- sleep 3000 \
      --kubeconfig KUBECONFIG
    

    Substitua KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster de utilizadores.

  2. Para verificar se consegue obter o URL de descoberta, execute no pod busybox e execute o comando curl:

    kubectl exec pod/curl -n anthos-identity-service -- \
      curl ISSUER_URL \
      --kubeconfig KUBECONFIG
    

    Substitua o seguinte:

    • ISSUER_URL: o URL do emissor do seu fornecedor de identidade.
    • KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de utilizadores.

    Uma resposta bem-sucedida é um resultado JSON com os pontos finais do fornecedor de identidade detalhados.

  3. Se o comando anterior não devolver o resultado esperado, contacte o administrador do fornecedor de identidade para receber assistência adicional.

O início de sessão LDAP não funciona para o cluster de administrador do Google Distributed Cloud

Atualmente, o LDAP só é suportado para o cluster de utilizadores do Google Distributed Cloud.