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.
- Para verificar se algum tráfego de rede consegue alcançar o servidor LDAP (fornecedor de identidade) a partir do cluster, use
- 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 camposbaseDN
,filter
eloginAttribute
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:
- Inicie sessão no seu servidor LDAP para ver os grupos do utilizador de destino.
- 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.
- 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.
- Verifique se os valores de
baseDN
e, opcionalmente, os valores defilter
eidentifierAttribute
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. SebaseDN
estiver vazio, não são fornecidos grupos ao servidor da API Kubernetes. Não existem mensagens registadas nesse caso. SebaseDN
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
efilter
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.