PowerFlex 4.x Не удается добавить или удалить группу LDAP

Summary: После удаления AD из PFxM Keycloak не удается удалить кэшированные группы LDAP.

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

Сценарий

Первая попытка добавить группу приводит к ошибке:

Failed to add Remote group 
Failed to find request group 

Добавление удаленного пользователя

Не удалось добавить удаленную группу

 

После заполнения групп в фильтре ldap keycloak в соответствии с PowerFlex 4.X — как применить фильтр поиска групп LDAP в консоли администрирования PFxM Keyclaak | Dell US и синхронизации из PFxM к поставщику LDAP, sso.stdout.log показывает, что групповая синхронизация не работает:

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

После удаления поставщика LDAP в базе данных по-прежнему отображаются группы (например, ниже показано четыре группы)

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)

Подключение к ldap из PFMP необходимо подтвердить с помощью следующей команды:

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

Пример.

Keycloak

Воздействие

Не удается добавить или удалить группы LDAP.

Cause

При удалении AD:

  • Серверная часть инициирует удаление связанных пользователей и групп.
  • Это удаление происходит пакетами для эффективного управления процессом.


При повторном добавлении AD во время текущего удаления:

  • Keycloak начинает синхронизацию групп из только что добавленного AD.
  • Если во время этого процесса по какой-либо причине произойдет сбой синхронизации, могут возникнуть проблемы.


Если AD снова удаляется во время сбоя синхронизации:

  • Группы, оставшиеся после сбоя синхронизации, остаются видимыми в пользовательском интерфейсе Keycloak.


Эти остаточные группы активно не связаны с какой-либо AD и могут потребовать очистки вручную.

 

Resolution

Удаляйте каждую группу по отдельности с помощью API по одной.

1) Получение учетных данных 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) Получите токен доступа (примечание: замените 4578ZZyT3f паролем из приведенного выше вывода):

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) Проверка наличия групп с помощью api (вывод 10 групп за раз)

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

4) Удаляйте группы по одной (подставляйте каждый идентификатор из шага 3 выше).

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

Кроме того, можно использовать циклический сценарий для удаления group_id по одному.

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

Пример 

Пример:

Затронутые версии

PFMP 4.x

Исправлено в версии

 Будущая версия keycloak будет поддерживать массовое удаление групп.

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.