Resolução de problemas do servidor LDAP

Este documento fornece orientações de resolução de problemas para problemas do servidor LDAP no GKE Identity Service.

Problema de conetividade

Quando configura o GKE Identity Service, pode ter problemas de conetividade ao tentar estabelecer ligação a um servidor LDAP. O problema de conetividade também pode ocorrer quando o certificado usado para identificar o servidor LDAP não corresponde ao certificado mencionado no ClientConfig.

Mensagem de erro

As seguintes mensagens aplicam-se a erros que ocorrem quando o comando gcloud anthos auth login é executado.

  • ERROR: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
  • ERROR: Configuring Anthos authentication failed

Solução

Pode resolver os problemas de uma das seguintes formas:

  • Se o serviço de identidade do GKE não conseguir estabelecer ligação ao servidor LDAP, faça o seguinte:
    • Para verificar se algum tráfego de rede consegue alcançar o servidor LDAP (fornecedor de identidade) a partir do cluster, use telnet, nc ou um comando semelhante para estabelecer ligação ao servidor LDAP. Para estabelecer ligação ao servidor LDAP, tem de executar o comando no nó ou no pod onde o GKE Identity Service está em execução.
    • Se o comando for bem-sucedido, o pod do GKE Identity Service deve estabelecer ligação ao servidor LDAP.
    • Se o comando falhar, indica que existe um problema com a conetividade de rede. Tem de verificar as definições de rede ou contactar o administrador de rede para resolver o problema de ligação.
  • Verifique se o certificado público na configuração está formatado corretamente e corresponde ao seu servidor LDAP nos seguintes casos:
    • Usar LDAP com TLS.
    • Autentica-se no LDAP com uma conta de serviço. Usa um certificado para identificar a conta de serviço junto do servidor LDAP.

Problema de autenticação

Ocorre um problema de autenticação num dos seguintes casos:

  • As definições do fornecedor LDAP estão configuradas incorretamente no ClientConfig para o GKE Identity Service.
  • As credenciais do utilizador que indicou não existem no servidor LDAP.
  • O servidor LDAP está inativo.

Mensagem de erro

As seguintes mensagens aplicam-se a erros que ocorrem quando o comando gcloud anthos auth login é executado.

  • ERROR: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
  • ERROR: Configuring Anthos authentication failed

Solução

Como administrador do cluster, reveja os registos do GKE Identity Service e resolva os problemas de autenticação das seguintes formas:

  • Can't contact LDAP server: para mais informações sobre como resolver este problema, consulte o artigo sobre problemas de conetividade.
  • Attempting to bind as the LDAP service account: o GKE Identity Service está a tentar estabelecer ligação ao servidor LDAP através das credenciais da conta de serviço fornecidas no ClientConfig. A ausência desta mensagem de registo indica que existe um problema de conetividade.
  • Successfully completed BIND as LDAP service account: o GKE Identity Service consegue estabelecer ligação com êxito ao servidor LDAP e usar a respetiva conta de serviço para autenticação de utilizadores. A ausência desta mensagem de registo indica que existe um problema de configuração.
  • Successfully found an entry for the user in the database: Existe uma entrada de utilizador no servidor LDAP. Isto implica que os campos baseDN, filter e loginAttribute estão configurados corretamente para obter utilizadores. Esta mensagem é apresentada apenas quando o nível de detalhe do registo está acima do nível predefinido. Para mais informações sobre como ativar os registos, consulte o artigo Ative o registo de depuração.
  • Attempting to BIND as the user to verify their credentials: o serviço de identidade do GKE está a tentar validar as credenciais do utilizador.
  • Successfully completed LDAP authentication: a autenticação do utilizador é bem-sucedida. A ausência desta mensagem de registo indica credenciais inválidas.

O token de autenticação expirou

Apesar de um início de sessão bem-sucedido, pode ter problemas quando o token de autenticação expira.

Mensagem de erro

ERROR: You must be logged in to the server (Unauthorized)

Solução

Pode resolver o problema iniciando sessão novamente no servidor.

Problema com a associação de funções RBAC ao utilizador ou ao grupo

Este problema ocorre quando a autenticação é bem-sucedida, mas a autorização falha devido à ausência de funções RBAC associadas ao utilizador ou ao grupo. Por exemplo, este problema persiste quando tenta emitir o comando kubectl get pods.

Mensagem de erro

Error from server (Forbidden): <SERVICE or PODS> is forbidden: <MORE DETAILS>

Solução

Pode resolver o problema fazendo o seguinte:

  1. Inicie sessão no seu servidor LDAP para ver os grupos do utilizador de destino.
  2. Verifique se a função e as associações de funções do Kubernetes estão definidas corretamente e correspondem aos valores no seu diretório LDAP. Um administrador pode ajudar a validar as associações de funções através da representação de utilizadores do Kubernetes.
  3. Atualize a associação de funções de modo que o grupo do utilizador de destino esteja autorizado a realizar a ação necessária.
  4. Verifique se os valores de baseDN e, opcionalmente, os valores de filter e identifierAttribute para grupos estão corretos. O serviço de identidade do GKE usa a configuração do grupo destes campos para consultar todos os grupos aos quais o utilizador pertence. Se baseDN estiver vazio, não são fornecidos grupos ao servidor da API Kubernetes. Não existem mensagens registadas nesse caso. Se baseDN não estiver vazio, o serviço de identidade do GKE consulta a base de dados para os grupos do utilizador.
    • Se a consulta for bem-sucedida, os grupos são fornecidos ao servidor da API Kubernetes.
    • Se a consulta não for bem-sucedida, os grupos não são fornecidos ao servidor da API Kubernetes. Neste caso, tem de corrigir os valores de configuração baseDN e filter para grupos.

O utilizador pertence a vários grupos

Este problema ocorre quando um utilizador pertence a vários grupos.

Mensagem de erro

could not obtain an STS token: STS token exceeds allowed size limit. Possibility of too many groups associated with the credentials provided.

Solução

Enquanto administrador do cluster, tem de configurar o campo filter no ClientConfig para reduzir o número de grupos devolvidos pela consulta ao servidor LDAP.

Problema de compatibilidade de versões

Este problema ocorre quando existe uma incompatibilidade de versões entre o GKE Identity Service e a versão da CLI Google Cloud instalada.

Mensagem de erro

  • unable to parse STS Token Response
  • could not obtain an STS token: JSON parse error: The request was malformed.
  • could not obtain an STS token: Grant type must confirm that the request is intended for a token exchange.
  • could not obtain an STS token: Requested token type must correspond to an access token.
  • could not obtain an STS token: Subject token type must be a valid token type supported for token exchange.

Solução

Tem de atualizar a utilidade gcloud e o serviço de identidade do GKE para a versão disponível mais recente.

Código de estado 401 de falha na autenticação

Este problema ocorre quando o servidor da API Kubernetes não consegue autenticar o serviço e devolve um código de erro 401.

Mensagem de erro

  • ERROR: LDAP login failed: STSToken() failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": DialContext() failed: podEndpoint() failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized

  • ERROR: Configuring Anthos authentication failed

Solução

Pode resolver este problema de uma das seguintes formas:

  • Verifique se o pod do serviço de identidade do GKE está no estado running com o seguinte comando:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
  • Verifique a configuração do LDAP no ClientConfig através do seguinte comando:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
  • Reveja os registos para obter informações detalhadas sobre o erro. Para mais informações sobre o registo, consulte o artigo Usar o registo e a monitorização para componentes do sistema.