PowerFlex 4.x Não foi possível adicionar ou remover o grupo LDAP

Summary: Após a remoção do AD do PFxM e o Keycloak não é possível remover grupos LDAP armazenados em cache.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Situação

Uma tentativa inicial de adicionar um grupo resulta em um erro:

Failed to add Remote group 
Failed to find request group 

Adicionar usuário remoto

Falha ao adicionar o grupo remoto

 

Depois de preencher grupos no filtro ldap keycloak, de acordo com PowerFlex 4.X - Como aplicar o filtro de pesquisa de grupo LDAP no console de administração do Keycloak PFxM | Dell EUA e sincronização do PFxM para o provedor de LDAP, o sso.stdout.log mostra que a sincronização de grupo não está funcionando:

2024-09-25T07:10:31.684769872Z stdout F 2024-09-25T07:10:31.684Z  INFO 1 --- [io-8083-exec-10] c.d.s.c.DirectoryServicesController      : Received sync user request
2024-09-25T07:10:31.685080784Z stdout F 2024-09-25T07:10:31.684Z  INFO 1 --- [pool-9-thread-1] c.d.s.managers.DirectoryServiceManager   : starting sync process for ldap groups
2024-09-25T07:10:31.69678586Z stdout F 2024-09-25T07:10:31.696Z  INFO 1 --- [pool-9-thread-1] com.dell.sso.clients.KeycloakClient      : Ldap group sync started
2024-09-25T07:10:31.710659167Z stdout F 2024-09-25T07:10:31.710Z ERROR 1 --- [pool-9-thread-1] com.dell.sso.clients.KeycloakClient      : Failed to sync groups: HTTP 500 Internal Server Error
 
2024-09-25T07:10:31.710959458Z stderr F Exception in thread "pool-9-thread-1" java.lang.RuntimeException: com.dell.sso.exceptions.KeycloakException: Failed to sync groups or sync users

Depois de remover o provedor LDAP, o banco de dados ainda mostra grupos (por exemplo, abaixo mostra quatro grupos)

delladmin@mvm1:/>kubectl exec -it -c database -n powerflex $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- psql -U postgres -d keycloak -c "SELECT COUNT(*) FROM keycloak_group;"
 count
-------
     4
(1 row)

A conectividade com o LDAP a partir da PFMP deve ser confirmada com o seguinte comando:

kubectl exec -it keycloak-0 -n powerflex -- curl --verbose ldap://

Exemplo:

Keycloak

Impacto

Não foi possível adicionar ou remover grupos LDAP.

Cause

Quando o AD é removido:

  • O back-end inicia a exclusão de usuários e grupos associados.
  • Essa exclusão ocorre em lotes para gerenciar o processo de forma eficiente.


Quando o AD é adicionado novamente durante a exclusão contínua:

  • O Keycloak começa a sincronizar grupos do AD recém-adicionado.
  • Se a sincronização falhar por qualquer motivo durante esse processo, poderão surgir problemas.


Se o AD for removido novamente durante uma falha de sincronização:

  • Os grupos residuais da sincronização com falha permanecem visíveis na interface do usuário do Keycloak.


Esses grupos residuais não estão ativamente vinculados a nenhum AD e podem exigir limpeza manual.

 

Resolution

Exclua cada grupo individualmente usando a API, um de cada vez.

1) Recupere as credenciais do Keycloak.

kubectl get secrets -n powerflex keycloak-admin-credentials -o jsonpath='{.data.username}' | base64 --decode; echo -e
kubectl get secrets -n powerflex keycloak-admin-credentials -o jsonpath='{.data.password}' | base64 --decode; echo -e

2) Obtenha o token de acesso (nota: substitua 4578ZZyT3f pela senha da saída acima):

TOKEN=$(curl -X POST https://keycloak-http.powerflex/auth/realms/master/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'scope=openid&grant_type=password&client_id=admin-cli&username=keycloak&password=4578ZZyT3f' | jq -r '.access_token'); echo $TOKEN

3) Verifique se há grupos usando a api (liste 10 grupos por vez)

curl -X GET "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups?first=0&max=10" -H "Authorization: Bearer $TOKEN" | jq

4) Exclua os grupos um de cada vez (substitua por cada id da etapa 3 acima.

curl -X DELETE https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups/"" -H "Authorization: Bearer $TOKEN"

Como alternativa, use o script de loop para excluir group_id um de cada vez.

for group_id in $(curl -X GET "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups" -H "Authorization: Bearer $TOKEN" | jq -r '.[].id'); do  curl -X DELETE "https://keycloak-http.powerflex/auth/admin/realms/powerflex/groups/$group_id" -H "Authorization: Bearer $TOKEN"; done

Exemplo 

exemplo

Versões afetadas

PFMP 4.x

Correção feita na versão

 A versão futura do keycloak oferecerá suporte à exclusão em massa do grupo.

Affected Products

PowerFlex rack, VxFlex Ready Nodes, PowerFlex custom node, PowerFlex appliance R650, PowerFlex appliance R6525, PowerFlex appliance R660, PowerFlex appliance R6625, Powerflex appliance R750, PowerFlex appliance R760, PowerFlex appliance R7625 , PowerFlex appliance R640, PowerFlex appliance R740XD, PowerFlex appliance R7525, PowerFlex appliance R840 ...
Article Properties
Article Number: 000291045
Article Type: Solution
Last Modified: 04 Mar 2025
Version:  1
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.