Konfigurace protokolu LDAP PowerFlex 4.x pro velká prostředí

Summary: Zúžením vyhledávacích filtrů LDAP uživatelů i skupin pomocí backendu PowerFlex Management Platform SSO můžeme zmírnit problémy se synchronizací, u nichž bylo zjištěno, že způsobují více problémů s uživatelským rozhraním a platformou. ...

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.

Instructions

  1. Příprava
  2. Odebrání a vyčištění poskytovatele LDAP
  3. Opětovné vytvoření poskytovatele LDAP
  4. Zúžení aplikace oboru uživatele a skupiny LDAP

 

 

Pozadí: 

 

Poskytovatelé adresářů PFMP (PowerFlex Management Platform) ve výchozím nastavení importují všechny objekty LDAP v nakonfigurovaném oboru vyhledávání, včetně neuživatelských účtů a dalších objektů, které naše RBAC nevyžaduje.

Ve velkých prostředích může toto chování vést k významnému využití prostředků napříč virtuálními počítači pro správu PFMP (MVM), podpůrnou databází Postgres a celkovou platformou.

Proto se synchronizace LDAP nemusí dokončit v přijatelných časových rámcích, což může způsobit backlogy úloh, nevracení paměti a problémy se souběžností.

 

1. Příprava

 

Požadavky:

 

 

Použití globálního katalogu služby Active Directory

Poznámka:  Požadujeme použití portu 3268 pro standardní protokol LDAP nebo 3269 pro protokol LDAPS v prostředích AD. To umožňuje, aby členové skupiny LDAP z podřízených domén nebo jiných důvěryhodných domén byli použitelní v PFMP.

Skupina AD, například:

 

Podřízená doména nad na.powerflex.lab.dell.com musí být viditelná pomocí protokolu PFMP LDAP User Federation Keycloak pomocí portů globálního katalogu, které umožňují jejich dostupnost. 

To je také důvod, proč používáme objectGUID v PFMP Directory Provider, propojuje účty s jejich globálním unikátním UUID.

 

Pokud jsou obě podřízené domény uvedené na kartě Vztahy důvěryhodnosti, zdá se, že subdomény si ve výchozím nastavení vzájemně důvěřují.

V prostředí služby Microsoft Active Directory (AD) si nadřazená doména a její podřízené (poddomény) ze své podstaty vzájemně důvěřují v hierarchické struktuře. To se označuje jako tranzitivní vztah důvěryhodnosti.

Ve výchozím nastavení jsou tyto vztahy důvěryhodnosti obousměrné a přenositelné, což znamená, že nadřazená doména důvěřuje svým podřízeným doménám a naopak. Tato přenosná povaha rozšiřuje vztah důvěryhodnosti na všechny domény v hierarchii nadřazený-podřízený.

 

Vyhledání dostupných serverů LDAP nebo AD GC z položek DNS

 

Zákazník obvykle poskytne adresu LDAP, kterou má použít.  Tato nastavení lze zkopírovat z konfigurace poskytovatele adresáře PFMP před jeho odebráním v rámci dalších kroků této příručky.

Případně lze dostupné servery načíst ze služby DNS pro konkrétní doménu:

 

# listing LDAP server
$ host -t srv _ldap._tcp.powerflex.lab.dell.com
Server:  nameserver.dell.com
Address:  10.8.8.8

Non-authoritative answer:
_ldap._tcp.powerflex.lab.dell.com       service = 0 100 636 hcihopad1.powerflex.lab.dell.com. _ldap._tcp.powerflex.lab.dell.com       service = 0 100 389 hcihopad1.powerflex.lab.dell.com. _ldap._tcp.powerflex.lab.dell.com       service = 0 100 389 hcick3ad2.powerflex.lab.dell.com. _ldap._tcp.powerflex.lab.dell.com       service = 0 100 636 hcick3ad1.powerflex.lab.dell.com. _ldap._tcp.powerflex.lab.dell.com       service = 0 100 389 hcihopad3.powerflex.lab.dell.com.
# listing AD GC servers (Active Directory Global Catalog) 
host -t srv _gc._tcp.powerflex.lab.dell.com
Server:  nameserver.dell.com
Address:  10.8.8.8

Non-authoritative answer:
_gc._tcp.powerflex.lab.dell.com service = 0 100 3268 hcihopad3.powerflex.lab.dell.com.
_gc._tcp.powerflex.lab.dell.com service = 0 100 3268 hcick3ad3.powerflex.lab.dell.com.
_gc._tcp.powerflex.lab.dell.com service = 0 100 3268 hcick3ad2.powerflex.lab.dell.com.

 

 

Jak najít rozlišující název organizační jednotky nebo skupiny.

Nejprve budeme potřebovat rozlišující názvy (DN) organizačních jednotek a skupin, ve kterých chceme číst uživatele do PFMP.  Tyto cesty nedodržují striktně názvy DNS a obsahují organizační jednotky uvnitř cesty LDAP x.500, kterou lze extrahovat ručně.

Tyto DN můžeme najít pomocí různých nástrojů v závislosti na operačním systému, jedním ze snadných způsobů je použití curl:

Jak otestovat nastavení PFMP LDAP pomocí nástroje curl v systému Linux.

 

Novější verze curl, které jsou nainstalovány na MVM, lze použít k nalezení úplných rozlišujících názvů, které potřebujete, například toto vyhledá úplné DN LabAdmins Group CN:

#Get the DN of your groups for use in the LDAP User filter while also validating your LDAP Group Filter syntax
# Set this to the group filter you intend to use in keycloak
GROUPFILTER='(CN=LabAdmins)'
# Use the LDAP svc bind creds to confirm the user can in fact call LDAP and see the group(s)
BINDUSER="user@powerflex.lab.dell.com"
# LDAP server URL.  For TLS use ldaps:// and port 3269
LDAPSERVER='ldap://ldap.powerflex.lab.dell.com:3268'
# Use the same search base as you intend for the group path, generally just the DC components
SEARCHBASE=DC=powerflex,DC=lab,DC=dell,DC=com
# Call curl which will request the password of the bind user and return results curl -s sub --user "$BINDUSER" "$LDAPSERVER/$SEARCHBASE?distinguishedName?sub?$GROUPFILTER" 

Enter host password for user 'jacqup@powerflex.lab.dell.com':

 

DN:CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
      distinguishedName:CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com

DN: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=com  distinguishedName: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=com

 

 

Manual examples:

 

curl -s sub --user "FLEXLAB\jacqup"
"ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?distinguishedName,objectGUID?sub?(|(CN=FLEXLAB-APP-PROD-SDS-Admin)(CN=LabAdmins)(CN=LabUsers)(CN=EMEALabAdmins))"

Enter host password for user 'FLEXLAB\jacqup':

DN: CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
       distinguishedName: CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com

DN: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=com
       distinguishedName: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=com

DN: CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
       distinguishedName: CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com

Najděte všechny členy skupiny LDAP pomocí vlastností filtru, které pak můžete umístit do backendu keycloak:

#check for all members of the group with CN=LabAdmins

curl -s sub
--user "jacqup@powerflex.lab.dell.com"
"ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?member?sub?(&(objectClass=group)(cn=LabAdmins))"

DN:CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=matrixadmin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=matrixadmin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=svc_adfsck3,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=svc_mcp_rw,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com         member: CN=adcertsvc,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com         member: CN=bobthebuilder,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com         member: CN=Ashish Rahangdale,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=Packer Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=FDLabAdmins,OU=Foundations,DC=powerflex,DC=lab,DC=dell,DC=com
        member: CN=Tejas Wadekar,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com

 

 

Jak otestovat nastavení PFMP LDAP pomocí nástroje ldapsearch nebo curl v systému Linux.

 

Pokud je v síti k dispozici linuxový hostitel, může být užitečné použít utilitu ldapsearch k otestování a ověření nastavení LDAP použitých v PFMP/Keycloak.

Alternativně lze nástroj curl použít také pro dotazy LDAP z jednoho z virtuálních počítačů pro správu nebo MVM.

 

Rychlý úvod (běžně používané možnosti):

 

 

ldapsearch - LDAP search tool
ldapsearch opens a connection to an LDAP server, binds, and performs a search using specified parameters.

usage: ldapsearch [options] [filter
[attributes...]]

where:

filter       RFC 4515 compliant LDAP search filter
attributes   whitespace-separated list of attribute descriptions

Search options:
  -b basedn base dn for search
 -LLL      print responses in LDIF format without comments and version Common options:  -D binddn bind DN  -H URI    LDAP Uniform Resource Identifier(s)  -N        do not use reverse DNS to canonicalize SASL host name  -w passwd bind password (for simple authentication)  -W        prompt for bind password  -x        Simple authentication

 

 

 

Kontrola/instalace nástroje:

$ which ldapsearch
/usr/bin/ldapsearch

#RHEL/CentOS install
sudo yum install openldap-clients

# SLES install
sudo zypper install openldap2-client

 

 

Definování Base DN (-b) z kořenové položky LDAP:

 

$ curl "ldap://ldap.powerflex.lab.dell.com:3268/?rootDomainNamingContext"
DN:
        rootDomainNamingContext: DC=powerflex,DC=lab,DC=dell,DC=com

# ldapsearch (with simple auth)
$ ldapsearch -LLL -H ldap://ldap.powerflex.lab.dell.com -x -D "FLEXLAB\ck3-user" -W -b "" -s base "dn=" rootDomainNamingContext

dn: rootDomainNamingContext: DC=powerflex,DC=lab,DC=dell,DC=com

 

 

Kořenový adresář obsahuje informace o adresářovém serveru. Ve službě AD atribut rootDomainNamingContext poskytuje nejvyšší základní rozlišující název, který lze použít pro vyhledávání.

 -W -b "

 

Testování identifikátoru URI LDAP, rozlišujícího jména vazby (uživatel/heslo s přístupem pro čtení) a nastavení vyhledávání uživatelů:

 

$ ldapsearch -LLL -H ldap://powerflex.lab.dell.com:3268 -x -D "CN=ck3-user,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com" -W \ -b "dc=powerflex,dc=lab,dc=dell,dc=com" "(sAMAccountName=damonl)"
Enter LDAP Password: ********

dn: CN=Luc Damon,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
objectClass: person
cn: Luc Damon memberOf: CN=EMEALabAdmins,OU=LabAdmins,DC=powerflex,DC=lab,DC=dell,DC=com memberOf: CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com memberOf: CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com objectGUID:: 6Z359eP5vky4P0Ye8iFp8g== sAMAccountName: damonl

# equivalent curl command:

$ curl -u 'CN=ck3-user,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com' \ 
"ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com??sub?(sAMAccountName=damonl)"
# OR (with attributes selection)
$ curl -u 'FLEXLAB\ck3-user' \
"ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?cn,objectClass,memberOf,objectGUID,sAMAccountName?sub?(sAMAccountName=damonl)"

V tomto příkladu se dotazujeme na protokol LDAP pro existující uživatelský účet pomocí atributu sAMAccountName (výstup byl zkrácen tak, aby zobrazoval pouze atributy, které potřebujeme).

 

Odpovídající nastavení v uživatelském rozhraní PFMP:

Adresa (-H):  ldap://active.directory.domain.address.com:3268

Rozlišující název vazby (-D): "CN=ck3-user,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com" # ("FLEXLAB\ck3-user" nebo "ck3-user@powerflex.lab.dell.com" jsou ekvivalenty)

(-x se vyžaduje pro jednoduché ověřování, aby se zabránilo výchozímu režimu SASL)

Bind DN Password (-W): výzva k zadání hesla (nebo ho zadejte v příkazupomocí –w '***').

 

The output of the command validates the following PFMP User Search Settings:

Username LDAP Attribute: sAMAccountName

Atribut ID: identifikátor objectGUID

Třída objektu: person

Vyhledávací cesta (-b): "dc=powerflex,dc=lab,dc=dell,dc=com"

 

 

Nastavení vyhledávání testovacích skupin:

 

$ ldapsearch -LLL -H ldap://powerflex.lab.dell.com:3268 -x -D "FLEXLAB\ck3-user" -W \ -b "dc=powerflex,dc=lab,dc=dell,dc=com" "(&(objectClass=group)(|(cn=FLEXLAB-APP-PROD-SDS-Admin)(cn=EMEALabAdmins)))" cn 

dn: CN=EMEALabAdmins,OU=LabAdmins,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName: Administrator

member: CN=ck3-builder,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName: jacqup member: CN=Luc Damon,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com sAMAccountName: damonl member: CN=Patrick Jacques,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com sAMAccountName: bobthebuilder
$ curl -u 'FLEXLAB\ck3-user' "ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?member?sub?(&(objectClass=group)(cn=EMEALabAdmins))"

 

 

In this example, we are querying LDAP for an existing group (objectClass) using its cn attribute and requesting member value(s).

 

It permits to validate following PFMP settings:

Group Member Attribute: member

Group ID Attribute: cn

Group Object Class: group

Group Search Path: "dc=powerflex,dc=lab,dc=dell,dc=com"

 

Testovací skupina LDAP filtru:

 $ ldapsearch -LLL -H ldap://powerflex.lab.dell.com:3268 -x -D "FLEXLAB\ck3-user" -W \ -b "dc=powerflex,dc=lab,dc=dell,dc=com" "(&(objectClass=group)(|(cn=FLEXLAB-APP-PROD-SDS-Admin)(cn=EMEALabAdmins)))" cn dn:
CN=EMEALabAdmins,OU=LabAdmins,DC=powerflex,DC=lab,DC=dell,DC=com 
cn:EMEALabAdmins

dn:CN=FLEXLAB-APP-PROD-SDS-Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
cn:FLEXLAB-APP-PROD-SDS-Admin

$ curl -u 'FLEXLAB\ck3-user' "ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?cn?sub?(&(objectClass=group)(|(cn=FLEXLAB-APP-PROD-SDS-Admin)(cn=EMEALabAdmins)))"

 

Testování uživatelského filtru LDAP:

$ ldapsearch -LLL -H ldap://powerflex.lab.dell.com:3268 -x -D "FLEXLAB\ck3-user" -W -b "dc=powerflex,dc=lab,dc=dell,dc=com" \
"(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=CN=FLEXLAB-APP-PROD-SDS-Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)\(memberOf=CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)))" sAMAccountName

dn: CN=Administrator,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName:Administrator

dn: CN=Patrick Jacques,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName:jacqup

dn: CN=Luc Damon,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName: damonl

dn: CN=bobthebuilder,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
sAMAccountName: bobthebuilder

 

 

curl -u 'FLEXLAB\ck3-user' "ldap://ldap.powerflex.lab.dell.com:3268/DC=powerflex,DC=lab,DC=dell,DC=com?sAMAccountName?sub?(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=CN=FLEXLAB-APP-PROD-SDS-Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)(memberOf=CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)))"

 

Windows

Spusťte nástroj Uživatelé a počítače služby Active Directory. Klikněte na Zobrazit a zvolte Pokročilé funkce.

DN je název, který jednoznačně identifikuje položku v adresáři. První složka DN se označuje jako relativní rozlišující název (RDN).

DN se skládá z párů atribut = hodnota oddělených čárkami, například:

CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com

Představte si je jako "FQDN for LDAP", což je úplná adresa "URL" adresy x500.

Uživatelé a počítače služby AD lze použít k určení názvů názvů a dalších atributů:

 

 

Přejděte a klikněte pravým tlačítkem na organizační jednotku, ve které chcete číst uživatele, a pak vyberte Vlastnosti.

V části Vlastnosti organizační jednotky vyberte kartu Editor atributů.

Kliknutím na rozlišující název ho zvýrazněte a potom klikněte na Zobrazit.

Klikněte pravým tlačítkem na zvýrazněnou hodnotu a vyberte možnost Kopírovat. 

Kliknutím na tlačítko Storno a poté na tlačítko OK zavřete okna Editor atributů a Vlastnosti organizační jednotky.

 

 

 

 

Příklad uživatelského filtru LDAP s úzkým rozsahem:

 

(&(objectCategory=Osoba)(sAMAccountName=*)(|( memberOf=CN=FLEXLAB-APP-PROD-SDS-Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)(memberOf=CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)))

 

 

Vizuální vysvětlení:

 

Vytvořte vazbu uživatelských požadavků.

 

Tento uživatel vazby musí mít alespoň oprávnění k dotazování uživatelů a skupin definovaných na serveru LDAP, aby úložný systém mohl tyto uživatele ověřit.

 

Ve výchozím nastavení platí, že když je uživatel přidán na kartu zabezpečení domény nejvyšší úrovně v modulu Uživatelé a počítače služby Active Directory, jsou mu dány výchozí požadavky jen pro čtení potřebné pro ověřování LDAP v PFMP. např.

 

 

 

 

FYI: Nepotřebujeme, aby uživatel vazby LDAP skutečně "v" skupinách AD, které musíme číst v adresáři, potřebujeme oprávnění karty Zabezpečení "Číst".

 

obrázek

Obecné požadavky poskytovatele PFMP LDAP

 

Adresa: ldaps://ad.ldap.domain:3269 (SSL) NEBO ldap://ad.ldap.domain:3268 (PLAIN)

Bind DN: ADNTDOMAIN\serviceaccount nebo rozlišující název rozlišujícího názvu Bind DN.

Bind DN Password: heslo účtu služby

Timeout 30000

Username LDAP attribute: sAMAccountName

Atribut ID: objectGUID

Object Class: Person

Cesta hledání: (Nejvyšší úroveň, která se může dotazovat na všechny skupiny, např. pouze na komponenty domény/DC: DC = powerflex, DC = laboratoř, DC = dell, DC = com)

Group Member Attribute: member

Group ID Attribute: cn

Group Object Class: group

Vyhledávací cesta skupiny:(Stejná jako vyhledávací cesta uživatele, případně podrobnější.  Vzhledem k tomu, že budeme používat úzký filtr, může být náš rozsah široký, aniž by to mělo vliv na výkon.)

 

#The následující položka poskytuje alespoň jednu skupinu do filtru LDAP Group (PFMP 4.6.x+), aby keycloak nehledal všechny skupiny z celého adresáře:

Group LDAP Filter: (CN=GROUP1)

#Given omezením 64 znaků v tomto poli pouze pro uživatelské rozhraní PFMP musíme použít klávesový plášť, abychom to vyřešili, pokud chceme přidat více než to, např. 3 různé skupiny:
 

Group LDAP Filter: (|(CN=GROUP1)(CN=GROUP2)(CN=GROUP3))

Otestujte připojení a v případě úspěchu klikněte na tlačítko Odeslat.

Např.

 

 

2. Odebrání a vyčištění poskytovatele LDAP

 

Odeberte uživatele LDAP, skupiny a poté poskytovatele adresářů z uživatelského rozhraní PFMP jako uživatele admin.  Nepokoušejte se o to jako uživatel LDAP, ale pouze jako správce.

 

VÝSTRAHA: Nezapomeňte si poznamenat aktuální konfiguraci pro mapování "Directory Provider" a "Remote Users/Groups" z PFMP (zejména pokud potřebujete obnovit předchozí mapování rolí).

Pokud se v PFMP nezobrazuje mapování skupin/rolí (známý problém), postupujte podle následujících pokynů:

# from any mvm
cmo_pri=$(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master,postgres-operator.crunchydata.com/instance-set' -o name)
# Group role
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "SELECT keycloak_group.name AS group_name,keycloak_role.name AS role_name FROM group_role_mapping JOIN keycloak_group ON (group_role_mapping.group_id = keycloak_group.id) JOIN keycloak_role ON (group_role_mapping.role_id = keycloak_role.id);"
# Group attributes
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "SELECT keycloak_group.name AS group_name,group_attribute.name AS attribute_name, value FROM group_attribute JOIN keycloak_group ON (group_attribute.group_id = keycloak_group.id);"
Example:
mvm01:~
# kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak
keycloak=# SELECT keycloak_group.name AS group_name,keycloak_role.name AS role_name FROM group_role_mapping JOIN keycloak_group ON (group_role_mapping.group_id = keycloak_group.id) JOIN keycloak_role ON (group_role_mapping.role_id = keycloak_role.id);
 
 group_name  |   role_name
---------------+----------------
EMEALabAdmins | SuperUser
LabAdmins     | LifecycleAdmin
LabUsers      | Monitor (3 rows) keycloak=# SELECT keycloak_group.name AS group_name,group_attribute.name AS attribute_name, value FROM group_attribute JOIN keycloak_group ON (group_attribute.group_id = keycloak_group.id);  group_name  | attribute_name |  value ---------------+----------------+---------
EMEALabAdmins | remote_type    | Ldap EMEALabAdmins | SuperUser      | GLB:GLB EMEALabAdmins | is_remote      | true LabAdmins     | remote_type    | Ldap LabAdmins     | LifecycleAdmin | GLB:GLB LabAdmins     | is_remote      | true LabUsers      | remote_type    | Ldap LabUsers      | Monitor        | GLB:GLB LabUsers      | is_remote      | true (9 rows)
keycloak=# \q

 

 

Pokud v databázi keycloak zůstanou nějaké zastaralé skupiny LDAP, lze je odstranit ručně pomocí následujícího procesu:

 

Příkazy pro zálohování databáze Keycloak a keycloak_group vyčištění databázové tabulky.

 

Poznámka: Ruční čištění klávesnice někdy není nutné. 

K odstranění poskytovatele bychom měli použít uživatelské rozhraní PFMP (nejprve vždy z PFMP) a poté pomocí adresy URL /auth/ potvrdit, že byl vymazán z funkce keycloak.

 

 

Jak zkontrolovat počet skupin LDAP v keycloak z libovolného MVM:

 

# Spusťte toto pro nastavení proměnné jako první.

cmo_pri=$(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master,postgres-operator.crunchydata.com/instance-set' -o name)

#check count of groups in keycloak
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "SELECT COUNT (*) FROM keycloak_group;"
# We usually want 0 groups after removing the LDAP provider.
#Backup the current keycloak DB before any edits.
kubectl exec -it -n powerflex $cmo_pri -- bash -c 'pg_dump -U postgres -d keycloak' >/home/delladmin/keycloak.sql
#delete all entries inside of keycloak_group (and related roles and attributes) while preserving its structure
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "DELETE FROM group_attribute;"
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "DELETE FROM group_role_mapping;"
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "DELETE FROM keycloak_group;"
#check that the group count has reduced:
kubectl exec -it -n powerflex $cmo_pri -- psql -U postgres -d keycloak -c "SELECT COUNT (*) FROM keycloak_group;"

 

To je pouze po prvním odebrání v uživatelském rozhraní PFMP a pouze v případě, že data poskytovatele zůstanou v back-endu.  Pokud používáte PFxM 4.6.0.1, můžete také provést následující metodu pro odebrání importovaných uživatelů v uživatelském rozhraní Keycloak:

  1. Přihlaste se pomocí /auth/ jako uživatel keycloak.
  2. Heslo Keycloak je jedinečné pro každou instalaci a lze jej nalézt na jakémkoli MVM pomocí:

 

kubectl get secret -n powerflex keycloak-admin-credentials -o jsonpath="{.data.password}" | base64 --decode; echo

 

3. Federace uživatelů –> LDAP –> Nastavení a v rozevíracím seznamu Akce vpravo nahoře vyberte Odebrat importované.

 

 

 

 

 

 

Po vyčištění a odebrání skupin a poskytovatelů adresářů restartujte tři uzly MVM. 

 

 -Poznámka: To je vyžadováno pouze v případě, že je prostředí velké a dotazy LDAP se opakovaně sčítají, jak je vidět v tomto případě v protokolech níže.

 - Pokud prostředí není přetížené problémy se synchronizací a uživatelské rozhraní je stabilní, restartování MVM je obecně možné přeskočit. Obecně je to však dobré opatření.

 

Restartujte https://www.dell.com/support/kbdoc/en-us/000225550 KB  

MVM Graceful Reboot (musí být spuštěn po jednom uzlu) Nepřecházejte do dalšího uzlu, dokud neověříte, že databáze hlásí pohotovostní režim synchronizace.

 

#As osvědčených postupů identifikujte uzel, který je aktuálním vedoucím Postgres, a restartujte jej jako poslední.

#Run následující příkaz u libovolného MVM pro výpis stavu databáze a přidružených názvů databází.

kubectl exec -n powerflex -c database $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- sh -c 'patronictl list'

#Run tímto příkazem identifikujte, který uzel MVM je hostitelem databázového podu Postgres.

 

for x in `kubectl get pods -n powerflex | grep "postgres-ha-cmo" |awk '{print $1}'` ; do echo $x; kubectl get pods -n powerflex $x -o json | grep '"nodeName"' | cut -d ':' -f2 ; echo " "; done

 

#On MVM, což je instance podu Postgres Leader.   Spuštěním příkazu "watch kubectl get nodes" monitorujte stav restartování. Tento MVM musí být posledním uzlem, který se restartuje.

#Příklad pořadí restartování, pokud je pfmp-mgmt-1 vedoucím Postgres. Upravte pořadí níže uvedených příkazů podle toho, který MVM je vedoucím Postgres.

 

Otevřete terminál připojený ke třetímu MVM a spusťte první dva příkazy.

 

kubectl label
node pfmp-mgmt-3 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-3 --ignore-daemonsets --delete-emptydir-data && sudo reboot

#When se uzel probudí z restartování. Spusťte následující příkaz.

kubectl uncordon pfmp-mgmt-3 ; kubectl label node pfmp-mgmt-3 cmo.maintenance.mode-

#Run následující příkaz, dokud databáze přidružená k MVM3 nenahlásí úsporný režim synchronizace. V tomto okamžiku můžete přejít na další MVM.

 

kubectl exec -n powerflex -c database $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- sh -c 'patronictl list'

 

Otevřete terminál připojený ke druhému MVM a spusťte první dva příkazy.

 

kubectl label node pfmp-mgmt-2 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-2 --ignore-daemonsets --delete-emptydir-data && sudo reboot

#When se uzel probudí z restartování.  Spusťte následující příkaz.

kubectl uncordon pfmp-mgmt-2 ; kubectl label node pfmp-mgmt-2 cmo.maintenance.mode-

#Run následující příkaz, dokud databáze přidružená k MVM2 nenahlásí úsporný režim synchronizace. V tomto okamžiku můžete přejít na další MVM.

kubectl exec -n powerflex -c database $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- sh -c 'patronictl list' 

#Run následující příkaz, chcete-li použít tento MVM jako MVM monitorování stavu uzlu.

'watch kubectl get nodes'

 

Přejděte k terminálu připojenému k prvnímu MVM, na kterém běží "watch kubectl get nodes".  Stisknutím kláves Ctrl+C se vraťte do terminálu a spusťte první dva příkazy.

kubectl label
node pfmp-mgmt-1 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-1 --ignore-daemonsets --delete-emptydir-data && sudo reboot

#When se uzel probudí z restartování.  Spusťte následující příkaz.

kubectl uncordon pfmp-mgmt-1 ; kubectl label node pfmp-mgmt-1 cmo.maintenance.mode-

#Run následující příkaz, dokud databáze přidružená k MVM1 nenahlásí úsporný režim synchronizace.  Tento MVM byl vůdcem, ale nový vůdce převzal vedení, když byl MVM1 vyčerpán.  

kubectl exec -n powerflex -c database $(kubectl get pods -n powerflex -l='postgres-operator.crunchydata.com/role=master, postgres-operator.crunchydata.com/instance-set' | grep Running | cut -d' ' -f1) -- sh -c 'patronictl list'

KONEC PROCEDURY MVM GRACEFUL REBOOT

Po restartování a obnovení uživatelského rozhraní pro PFMP se přihlaste jako admin a přidejte Settings –> Directory Provider pomocí následujících kroků:

3. Opětovné vytvoření poskytovatele LDAP

 

Jak je uvedeno v části přípravy, Pokud existují podřízené domény AD nebo důvěryhodné účty domény AD ve všech skupinách, které chcete použít v PFMP, měli byste použít porty LDAP globálního katalogu (GC) 3268 (plain) a 3269 (SSL).

 

Např.

 

ldaps://ad.ldap.corporate.domain.com:3269
Users DN: DC=powerflex,DC=lab,DC=dell,DC=com
Bind DN:DOMAIN\svc_ldapbindaccount 
Username LDAP attribute: sAMAccountName
UUID LDAP attribute: objectGUID
User Object Classes: Person
This field has a 64 character limit in PFMP UI only.   You can put one group in to prevent 'full' directory sync, then use the keycloak UI to refine and add on to the group filter.
Group LDAP Filter: (|(CN=FLEXLAB-APP-PROD-SDS-Admin)(CN=LabAdmins))
Timeout 22222

4. Zúžení aplikace oboru uživatele a skupiny LDAP

 

 

 

Přihlaste se pomocí /auth/ jako uživatel keycloak.


Uživatelský filtr:

 

 

 

# V uživatelském rozhraní PFMP chybí uživatelský LDAP filtr, takže to musíme změnit pomocí následujícího.

#This filtr musí být použit v oblasti Keycloak PowerFlex (PowerFlex --> Federace uživatelů --> Filtr LDAP uživatele)

 

 

 

Uživatelský filtr LDAP:

 

 

(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=CN=FLEXLAB-APP-PROD-SDS-Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)(memberOf=CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)(memberOf=CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com)))

 

 

 

Uložte změnu .

 

 

 

Vysvětlení tohoto zúženého filtru:

 

 

 

objectCategory se rovná Person.

a

sAMAccountName existuje

a

memberOf se rovná CN=PowerFlex Admin, OU=sio-group1;DC=powerflex,DC=lab,DC=dell,DC=com

Nebo

memberOf se rovná CN=FLEX-STOR-MON,OU=15G,OU=FLEXLAB,DC=powerflex,DC=lab,DC=dell,DC=com

Od <https://ldap-builder.powerflex.lab.dell.com/>

Federace uživatelů –> LDAP –> Nastavení a v rozevíracím seznamu Akce vpravo nahoře vyberte odebrat importované.

 

4.6.x+ Metoda uživatelského rozhraní pro odstranění mapování skupin.

 

V nastavení mapování skupiny LDAP pro atribut LDAP uživatele členství musíme také zajistit, aby se správná hodnota, kterou dodáváme jako "cn" a nelze ji změnit, změnila v uživatelském rozhraní klávesnice na DN.

 

 

 

Ve skupinovém LDAP filtru můžeme vypsat operátor buď/nebo |   a kombinované nomenklatury každé skupiny, např.

(|(CN=FLEXLAB-APP-PROD-SDS-Admin)(CN=CN=PRV_US_SA_SRV_SVS))

 

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 custom node, PowerFlex custom node R650, PowerFlex custom node R6525, PowerFlex custom node R660, PowerFlex custom node R6625, PowerFlex custom node R750, PowerFlex custom node R760, PowerFlex custom node R7625, PowerFlex custom node R860, PowerFlex rack connectivity, PowerFlex rack HW, PowerFlex rack RCM Software, PowerFlex Software, VxFlex Ready Node, VxFlex Ready Node R640, VxFlex Ready Node R740xd, PowerFlex appliance R640, PowerFlex appliance R740XD, PowerFlex appliance R7525, PowerFlex appliance R840, VxFlex Ready Node R840 ...
Article Properties
Article Number: 000243118
Article Type: How To
Last Modified: 20 Mar 2025
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.