Solução de problemas no servidor LDAP

Neste documento, fornecemos orientações de solução de problemas para servidores LDAP no GKE Identity Service.

Problema de conectividade

Ao configurar o GKE Identity Service, é possível encontrar problemas de conectividade ao tentar se conectar a um servidor LDAP. O problema de conectividade também pode ocorrer quando o certificado usado para identificar o servidor LDAP não corresponde ao certificado mencionado na ClientConfig.

Mensagem de erro

As mensagens a seguir são aplicáveis aos 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

É possível resolver os problemas de uma das seguintes maneiras:

  • Se o GKE Identity Service não puder se conectar ao servidor LDAP, faça o seguinte:
    • Para verificar se o tráfego de rede pode chegar ao servidor LDAP (provedor de identidade) do cluster, use telnet, nc ou outro comando semelhante para se conectar ao servidor LDAP. Para se conectar ao servidor LDAP, execute o comando no nó ou pod em que o GKE Identity Service está em execução.
    • Se o comando for bem-sucedido, o pod do GKE Identity Service se conectará ao servidor LDAP.
    • Se o comando falhar, isso indica que há um problema com a conectividade de rede. Você precisa verificar suas configurações de rede ou entrar em contato com o administrador da rede para resolver o problema de conexão.
  • Verifique se o certificado público na configuração está formatado corretamente e corresponde ao servidor LDAP nos seguintes casos:
    • Você usa o LDAP com TLS.
    • A autenticação no LDAP é feita com uma conta de serviço. Use um certificado para identificar a conta de serviço no servidor LDAP.

Problema de autenticação

Um problema de autenticação ocorre em um dos seguintes casos:

  • As configurações do provedor LDAP estão definidas incorretamente no ClientConfig do GKE Identity Service.
  • As credenciais de usuário fornecidas não existem no servidor LDAP.
  • O servidor LDAP está indisponível.

Mensagem de erro

As mensagens a seguir são aplicáveis aos 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, revise os registros do GKE Identity Service e resolva os problemas de autenticação das seguintes maneiras:

  • Can't contact LDAP server: para mais informações sobre como resolver esse problema, consulte Problemas de conectividade.
  • Attempting to bind as the LDAP service account: o GKE Identity Service está tentando se conectar ao servidor LDAP usando as credenciais da conta de serviço fornecidas na ClientConfig. A ausência desta mensagem de registro indica que há um problema de conectividade.
  • Successfully completed BIND as LDAP service account: o GKE Identity Service consegue se conectar ao servidor LDAP e usar a conta de serviço para autenticação do usuário. A ausência dessa mensagem de registro indica um problema de configuração.
  • Successfully found an entry for the user in the database: há uma entrada de usuário no servidor LDAP. Isso significa que os campos baseDN, filter e loginAttribute estão configurados corretamente para recuperar usuários. Essa mensagem aparece apenas quando o detalhamento da geração de registros está acima do nível padrão. Para saber mais sobre como ativar os registros, consulte Ativar o registro de depuração.
  • Attempting to BIND as the user to verify their credentials: o GKE Identity Service está tentando verificar as credenciais do usuário.
  • Successfully completed LDAP authentication: a autenticação do usuário foi bem-sucedida. A ausência dessa mensagem de registro indica credenciais inválidas.

O token de autenticação expirou

Apesar de um login bem-sucedido, você pode ter problemas em que o token de autenticação expirou.

Mensagem de erro

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

Solução

Para resolver o problema, faça login novamente no servidor.

Problema com a vinculação de papel do RBAC ao usuário ou grupo

Esse problema ocorre quando a autenticação é bem-sucedida, mas a autorização falha devido à ausência de vinculações de papéis do RBAC ao usuário ou grupo. Por exemplo, esse problema persiste quando você tenta executar o comando kubectl get pods.

Mensagem de erro

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

Solução

Faça o seguinte para resolver o problema:

  1. Faça login no seu servidor LDAP para visualizar os grupos do usuário de destino.
  2. Verifique se o papel e as vinculações de papéis do Kubernetes estão definidos corretamente e correspondem aos valores no diretório LDAP. Um administrador pode ajudar a verificar as vinculações de papéis por meio da representação do usuário do Kubernetes.
  3. Atualize a vinculação do papel para que o grupo do usuário de destino tenha autorização para realizar a ação necessária.
  4. Verifique se os valores de baseDN e, opcionalmente, filter e identifierAttribute para os grupos estão corretos. O GKE Identity Service usa a configuração de grupo desses campos para consultar todos os grupos a que o usuário pertence. Se baseDN estiver vazio, nenhum grupo será fornecido ao servidor da API Kubernetes. Nenhuma mensagem é registrada nesse caso. Se baseDN não estiver vazio, o GKE Identity Service consultará o banco de dados para os grupos do usuário.
    • Se a consulta for bem-sucedida, os grupos serão fornecidos ao servidor da API Kubernetes.
    • Se a consulta não for bem-sucedida, os grupos não serão fornecidos ao servidor da API Kubernetes. Nesse caso, você precisa corrigir os valores de configuração baseDN e filter para grupos.

O usuário pertence a vários grupos

Esse problema ocorre quando um usuário 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

Como administrador do cluster, você precisa configurar o campo filter em ClientConfig para reduzir o número de grupos retornados pela consulta ao servidor LDAP.

Problema de compatibilidade de versão

Esse problema ocorre quando há uma incompatibilidade de compatibilidade de versão entre o GKE Identity Service e a versão instalada da CLI do Google Cloud.

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

Você precisa fazer upgrade do utilitário gcloud e do GKE Identity Service para a versão mais recente disponível.

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

Esse problema ocorre quando o servidor da API Kubernetes não consegue autenticar o serviço e retorna 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

Resolva esse problema de uma das seguintes maneiras:

  • Verifique se o pod do GKE Identity Service está no estado running usando o seguinte comando:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
    
  • Verifique a configuração do LDAP em ClientConfig usando o seguinte comando:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
    
  • Revise os registros para acessar informações detalhadas sobre o erro. Para mais informações sobre a geração de registros, consulte Como usar a geração de registros e o monitoramento de componentes do sistema.