PowerFlex 4.x LDAP-konfiguration til store miljøer

Summary: Ved at indsnævre LDAP-søgefiltrene for både brugere og grupper ved hjælp af PowerFlex Management Platform SSO-backend kan vi afhjælpe synkroniseringsproblemer, som har forårsaget flere problemer med brugergrænsefladen og platformen. ...

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. Præparation
  2. Fjernelse og oprydning af LDAP-udbyder
  3. Genopbygning af LDAP-udbyder
  4. Smal LDAP-bruger- og gruppeomfangsapplikation

 

 

Baggrund: 

 

Som standard importerer PowerFlex Management Platform (PFMP)-biblioteksudbydere alle LDAP-objekter inden for det konfigurerede søgeområde, herunder ikke-brugerkonti og andre objekter, der ikke kræves af vores RBAC.

I store miljøer kan denne funktionsmåde resultere i en betydelig ressourceudnyttelse på tværs af PFMP-administrations-VM'er (MVM'er), den understøttende Postgres-database og den overordnede platform.

Derfor kan LDAP-synkronisering muligvis ikke fuldføres inden for acceptable tidsrammer, hvilket forårsager jobefterslæb, hukommelseslækager og samtidighedsproblemer.

 

1. Præparation

 

Krav:

 

 

Brug af Active Directory Global Catalog

Bemærk:  Vi kræver brug af port 3268 til standard LDAP eller 3269 til LDAPS i AD-miljøer. Dette gør det muligt for LDAP-gruppemedlemmer fra underordnede domæner eller andre godkendte domæner at kunne bruges i PFMP.

En AD-gruppe for eksempel:

 

Det underordnede domæne over na.powerflex.lab.dell.com skal være synligt af PFMP's LDAP User Federation Keycloak, der gør det muligt at nå dem ved hjælp af de globale katalogporte. 

Det er også derfor, vi bruger objectGUID i PFMP-katalogudbyderen, som knytter konti til deres globale unikke UUID.

 

Hvis begge underordnede domæner er angivet under fanen Trusts, ser det ud til, at underdomæner stoler på hinanden som standard.

I et Microsoft Active Directory-miljø (AD) har et overordnet domæne og dets underordnede (under)domæner i sagens natur tillid til hinanden i en hierarkisk struktur. Dette er kendt som en transitiv tillid.

Disse tillid er som standard tovejs og transitive, hvilket betyder, at et overordnet domæne har tillid til sine underordnede domæner og omvendt. Denne transitive karakter udvider tilliden til alle domæner inden for forældre-barn-hierarkiet.

 

Finde tilgængelige LDAP- eller AD GC-servere fra DNS-poster

 

Normalt angiver kunden LDAP-adresse, der skal bruges.  Disse indstillinger kan kopieres fra konfigurationen af PFMP-biblioteksudbyderen, før de fjernes, som en del af de næste trin i denne vejledning.

Alternativt kan tilgængelige servere hentes fra DNS for et bestemt domæne:

 

# 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.

 

 

Sådan finder du det skelnenavn på en OU eller gruppe.

Først skal vi bruge Distinguished Names (DN) på OU'erne og grupperne, hvor vi vil læse brugere ind i PFMP.  Disse stier følger ikke strengt DNS-navngivning og indeholder OU'er inde i en x.500 LDAP-sti, som vi kan udtrække manuelt.

Vi kan finde disse DN'er ved hjælp af forskellige værktøjer afhængigt af OS, en nem måde er at bruge curl:

Sådan testes PFMP LDAP-indstillinger ved hjælp af curl-værktøjet på Linux.

 

De nyere versioner af curl, der er installeret på MVM'er, kan bruges til at finde de fulde fremtrædende navne, du har brug for, for eksempel søger dette efter den fulde DN for 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

Find alle medlemmer af en LDAP-gruppe ved hjælp af filteregenskaber, som du derefter kan placere i keycloak-backend:

#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

 

 

Sådan testes PFMP LDAP-indstillinger ved hjælp af ldapsearch eller curl-værktøjet på Linux.

 

Hvis en Linux-vært er tilgængelig på netværket, kan det være nyttigt at bruge ldapsearch-værktøjet til at teste og validere LDAP-indstillinger, der bruges i PFMP/Keycloak.

Alternativt kan curl-værktøjet også bruges til LDAP-forespørgsler fra en af Management VM'erne/MVM'erne.

 

Hurtig introduktion (ofte anvendte indstillinger):

 

 

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

 

 

 

Kontrol/installation af værktøjet:

$ which ldapsearch
/usr/bin/ldapsearch

#RHEL/CentOS install
sudo yum install openldap-clients

# SLES install
sudo zypper install openldap2-client

 

 

Definition af basis-DN (-b) ud fra LDAP-rodpost:

 

$ 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

 

 

Rodposten indeholder oplysninger om biblioteksserver. På AD giver attributten rootDomainNamingContext den øverste base DN, som kan bruges til søgning.

 -W -b "

 

Test af LDAP URI,Bind DN (bruger/adgangskode med læseadgang) og indstillinger for brugersøgning:

 

$ 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)"

I dette eksempel forespørger vi LDAP for en eksisterende brugerkonto ved hjælp af attributten sAMAccountName (outputtet er blevet afkortet til kun at vise attributter, vi har brug for).

 

Tilsvarende indstillinger i PFMP-brugergrænsefladen:

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

Bind DN (-D): "CN=ck3-user,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com" # ("FLEXLAB\ck3-user" eller "ck3-user@powerflex.lab.dell.com" er ækvivalenter)

(-x kræves til enkel godkendelse for at undgå standard SASL-tilstand)

Bind DN-adgangskode (-W): Bed om adgangskode (eller brug –w '***' til at angive den i kommandoen)

 

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

Username LDAP Attribute: sAMAccountName

ID-attribut: objectGUID

Objektklasse: person

Søgesti (-b): "DC=PowerFlex,DC=Lab,DC=Dell,DC=com"

 

 

Indstillinger for testgruppesøgning:

 

$ 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"

 

LDAP-testgruppefilter:

 $ 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)))"

 

Test af brugerens LDAP-filter:

$ 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

Start Active Directory-brugere og -computere. Klik på Vis, og vælg Avancerede funktioner.

DN er det navn, der entydigt identificerer en post i mappen. Den første komponent i DN kaldes Relative Distinguished Name (RDN).

En DN består af attribut=værdipar, adskilt af kommaer, for eksempel:

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

Tænk på dem som "FQDN'er til LDAP", den komplette x500-adresse 'URL'.

AD-brugere og computere kan bruges til at bestemme DN'er og andre attributter:

 

 

Naviger og højreklik på den OU, hvor du vil læse brugere, og vælg derefter Egenskaber.

I OU-egenskaber skal du vælge fanen Attributeditor.

Klik på distinguishedName for at fremhæve det, og klik derefter på Oversigt.

Højreklik på den fremhævede værdi, og vælg Kopiér. 

Klik på Annuller og derefter OK for at lukke vinduerne Attributeditor og OU-egenskaber.

 

 

 

 

Eksempel på LDAP-brugerfilter med smal rækkevidde:

 

(&(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)))

 

 

Visuel forklaring:

 

Bind brugerkrav.

 

Denne bindebruger skal som minimum have tilladelse til at forespørge på brugere og grupper, der er defineret på LDAP-serveren, for at gøre det muligt for lagringssystemet at godkende disse brugere.

 

Når en bruger føjes til sikkerhedsfanen for domænet på øverste niveau i Active Directory-brugere og -computere, får brugeren som standard de skrivebeskyttede standardkrav, der kræves til LDAP-godkendelse i PFMP. fx.

 

 

 

 

FYI: Vi har ikke brug for, at vores LDAP-bindbruger faktisk er 'i' de AD-grupper, vi skal læse i biblioteket, vi har brug for tilladelserne til fanen Sikkerhed for "Læs".

 

billede

Generelle krav til PFMP LDAP-udbyder

 

Adresse: ldaps://ad.ldap.domain:3269 (SSL) ELLER ldap://ad.ldap.domain:3268 (PLAIN)

Bind DN: ADNTDOMAIN\serviceaccount eller Bind DN Distinguished name.

Bind DN-adgangskode: adgangskode til tjenestekonto

Timeout 30000

Username LDAP attribute: sAMAccountName

ID-attribut: objectGUID

Object Class: Person

Søgesti: (Højeste niveau, der kan forespørge på alle grupper, f.eks. kun domænekomponenterne/DC'erne: DC=powerflex,DC=lab,DC=dell,DC=com)

Group Member Attribute: member

Group ID Attribute: cn

Group Object Class: group

Gruppesøgesti:(Samme som brugersøgesti eller mere detaljeret, hvis det er nødvendigt.  Da vi bruger et smalt filter, kan vores anvendelsesområde være bredt uden at påvirke ydeevnen.)

 

#The følgende post angiver mindst én gruppe til LDAP-gruppefilteret (PFMP 4.6.x+), så Keycloak ikke søger efter alle grupper fra hele biblioteket:

Group LDAP Filter: (CN=GROUP1)

#Given begrænsningen på 64 char kun i dette felt for PFMP-brugergrænsefladen, skal vi bruge tastaturkappen til at omgå det, hvis vi vil tilføje mere end det, f.eks. 3 forskellige grupper:
 

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

Test forbindelsen, og klik på Send, hvis det lykkes.

Fx.

 

 

2. Fjernelse og oprydning af LDAP-udbyder

 

Fjern LDAP-brugere, -grupper og derefter biblioteksudbyderen fra PFMP-brugergrænsefladen som administratorbruger.  Forsøg ikke at gøre dette som LDAP-bruger, kun som administrator.

 

ADVARSEL: Sørg for at registrere den aktuelle konfiguration for tilknytningen af "Katalogudbyder" og "Fjernbrugere/-grupper" fra PFMP (især hvis du har brug for at gendanne tidligere rolletilknytning).

Hvis gruppe-/rolletilknytning ikke vises på PFMP (kendt problem), skal du bruge følgende instruktioner:

# 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

 

 

Hvis der forbliver forældede LDAP-grupper i keycloak-databasen, kan de slettes manuelt ved hjælp af følgende proces:

 

Keycloak-databasesikkerhedskopiering og keycloak_group databasetabeloprydningskommandoer.

 

Bemærk: Manuel oprydning keycloak er undertiden ikke nødvendig. 

Vi skal bruge PFMP-brugergrænsefladen til at fjerne udbyderen (altid fra PFMP først) og derefter bekræfte, at den er blevet ryddet fra keycloak ved hjælp af /auth/ URL.

 

 

Sådan kontrolleres LDAP-gruppetællingen i keycloak fra en hvilken som helst MVM:

 

# Kør dette for at indstille variablen først.

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;"

 

Dette er kun efter første fjernelse i PFMP UI, og kun hvis udbyderdataene forbliver i backend.  Hvis du bruger PFxM 4.6.0.1, kan du også udføre følgende metode til at fjerne importerede brugere i Keycloak-brugergrænsefladen:

  1. Log på med /auth/ som keycloak-bruger
  2. Keycloak-adgangskoden er unik for hver installation og kan findes på enhver MVM ved hjælp af:

 

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

 

3. Brugersammenslutning -> LDAP -> Indstillinger og vælg Fjern importeret i rullemenuen Handlinger øverst til højre.

 

 

 

 

 

 

Når grupperne og katalogudbyderne er ryddet op og fjernet, skal du genstarte de tre MVM-noder. 

 

 -Seddel: Dette kræves kun, når miljøet er stort, og LDAP-forespørgsler hober sig op gentagne gange, som det ses i dette tilfælde i logfilerne nedenfor.

 - Hvis miljøet ikke er overbelastet med synkroniseringsproblemer, og brugergrænsefladen er stabil, kan MVM-genstarter generelt springes over. Det er dog generelt en god foranstaltning.

 

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

MVM kontrolleret genstart (skal køres én node ad gangen) Flyt ikke til den næste node, før du har kontrolleret, at databasen rapporterer synkroniseringsstandby.

 

#As bedste praksis skal du identificere den node, der er den aktuelle Postgres-leder, og genstarte denne sidste.

#Run følgende kommando på en MVM for at få vist databasestatus og tilknyttede databasenavne.

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 denne kommando for at identificere, hvilken MVM-node der er vært for postgres-databasepod'en.

 

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, som er Postgres Leader-podforekomsten.   Kør 'watch kubectl get nodes' for at overvåge status for dine genstarter. Denne MVM skal være den sidste node, der genstartes.

#Eksempel på genstartsrækkefølge, hvis pfmp-mgmt-1 er Postgres-leder. Juster rækkefølgen af kommandoerne nedenfor, afhængigt af hvilken MVM der er Postgres-leder.

 

Åbn en terminal, der er tilsluttet den tredje MVM, og kør de to første kommandoer.

 

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

#When noden kommer op fra genstart. Kør følgende kommando.

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

#Run følgende kommando, indtil databasen, der er knyttet til MVM3, rapporterer synkroniseringsstandby. På det tidspunkt kan du flytte til den næste 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'

 

Åbn en terminal, der er tilsluttet den anden MVM, og kør de to første kommandoer.

 

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

#When noden kommer op fra genstart.  Kør følgende kommando.

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

#Run følgende kommando, indtil databasen, der er knyttet til MVM2, rapporterer synkroniseringsstandby. På det tidspunkt kan du flytte til den næste 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 følgende kommando for at bruge denne MVM som MVM til overvågning af nodestatus.

'watch kubectl get nodes'

 

Gå til terminalen, der er tilsluttet den første MVM, der kører 'se kubectl få noder'.  Tryk på ctrl+c for at gå tilbage til terminalen og køre de to første kommandoer.

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

#When noden kommer op fra genstart.  Kør følgende kommando.

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

#Run følgende kommando, indtil databasen, der er knyttet til MVM1, rapporterer synkroniseringsstandby.  Denne MVM var lederen, men en ny leder ville tage over, når MVM1 blev drænet.  

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'

AFSLUTNING AF MVM KONTROLLERET GENSTARTSPROCEDURE

Når den er genstartet, og brugergrænsefladen er gendannet til PFMP, skal du logge ind som administrator og tilføje Indstillinger -> Katalogudbyder ved hjælp af nedenstående trin:

3. Genopbygning af LDAP-udbyder

 

Som nævnt i forberedelsesafsnittet, hvis der er underordnede AD-domæner eller AD-domænetillidskonti i grupper, som du skal bruge i PFMP, skal LDAP-portene 3268 (almindelig) og 3269 (SSL) bruges i det globale katalog (GC).

 

Fx.

 

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. Smal LDAP-bruger- og gruppeomfangsapplikation

 

 

 

Log på med /auth/ som keycloak-bruger


Brugerfilter:

 

 

 

# Bruger LDAP-filter mangler i PFMP-brugergrænsefladen, så vi skal bruge følgende for at ændre det.

#This filter skal anvendes i Keycloak PowerFlex-verdenen (PowerFlex --> Brugersammenslutning --> LDAP-brugerfilter)

 

 

 

LDAP-brugerfilter:

 

 

(&(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)))

 

 

 

Gem ændringen.

 

 

 

Forklaring af dette indsnævrede filter:

 

 

 

objectCategory er lig med Person.

Og

sAMAccountName findes

Og

memberOf er lig med CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com

Eller

memberOf er lig med CN=FLEX-STOR-MON,OU=15G,OU=FLEXLAB,DC=powerflex,DC=lab,DC=dell,DC=com

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

Brugersammenslutning -> LDAP -> Indstillinger og i rullemenuen Handlinger øverst til højre skal du vælge Fjern importeret.

 

4.6.x+ Brugergrænseflademetode til sletning af gruppetilknytning.

 

I LDAP-gruppetilknytningsindstillingen for 'LDAP-attribut for medlemsbruger-LDAP' skal vi også sikre, at en korrekt værdi, vi sender som 'cn' og ikke kan ændre i PFMP-brugergrænsefladen, ændres i keycloak-brugergrænsefladen til DN.

 

 

 

I gruppen LDAP-filter kan vi angive en enten/eller-operator |   og KN for hver gruppe, f.eks.

(|(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.