PowerFlex 4.x: impossibile aggiungere o rimuovere un gruppo LDAP

Summary: Dopo la rimozione di AD da PFxM e Keycloak non è in grado di rimuovere i gruppi LDAP memorizzati nella 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

Scenario

Un primo tentativo di aggiungere un gruppo genera un errore:

Failed to add Remote group 
Failed to find request group 

Aggiunta di un utente remoto

Impossibile aggiungere gruppo remoto

 

Dopo aver popolato i gruppi nel filtro LDAP Keycloak, in base a PowerFlex 4.X - Come applicare il filtro Ricerca gruppo LDAP in PFxM Keycloak Admin Console | Dell US e la sincronizzazione da PFxM al provider LDAP, il sso.stdout.log mostra che la sincronizzazione del gruppo non funziona:

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

Dopo aver rimosso il provider LDAP, il database mostra ancora i gruppi (ad esempio, di seguito sono riportati quattro gruppi)

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)

La connettività a ldap da PFMP deve essere confermata con il seguente comando:

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

Esempio:

Keycloak

Impatto

Impossibile aggiungere o rimuovere gruppi LDAP.

Cause

Quando AD viene rimosso:

  • Il back-end avvia l'eliminazione degli utenti e dei gruppi associati.
  • Questa eliminazione avviene in batch per gestire il processo in modo efficiente.


Quando AD viene aggiunto nuovamente durante l'eliminazione in corso:

  • Keycloak inizia a sincronizzare i gruppi dall'AD appena aggiunto.
  • Se la sincronizzazione non riesce per qualsiasi motivo durante questo processo, potrebbero verificarsi problemi.


Se AD viene rimosso nuovamente durante un errore di sincronizzazione:

  • I gruppi residui della sincronizzazione non riuscita rimangono visibili nell'interfaccia utente di Keycloak.


Questi gruppi residui non sono collegati attivamente ad alcun AD e potrebbero richiedere una pulizia manuale.

 

Resolution

Eliminare ciascun gruppo singolarmente utilizzando l'API uno alla volta.

1) Recuperare le credenziali 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) Ottenere il token di accesso (nota: sostituire 4578ZZyT3f con la password dell'output precedente):

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) Verificare la presenza di gruppi utilizzando l'api (elencare 10 gruppi alla volta)

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

4) Elimina i gruppi uno alla volta (sostituisci ogni ID del passaggio 3 sopra.

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

In alternativa, utilizzare lo script loop per eliminare i group_id uno alla volta.

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

Esempio 

Esempio:

Versioni interessate

PFMP 4.x

Risolto nella versione

 La versione futura di Keycloak supporterà l'eliminazione in blocco di gruppi.

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.