PowerFlex 4.x LDAP-konfigurasjon for store miljøer
Summary: Ved å begrense LDAP-søkefiltrene for både brukere og grupper ved hjelp av PowerFlex Management Platform SSO-backenden kan vi redusere synkroniseringsproblemer som har blitt observert å forårsake flere problemer med brukergrensesnittet og plattformen. ...
Instructions
- Forberedelse
- LDAP-leverandør Fjerning og opprydding
- Gjenoppbygging av LDAP-leverandør
- Begrenset LDAP-applikasjon for brukere og gruppeomfang
Bakgrunn:
Som standard importerer katalogleverandører av PowerFlex Management Platform (PFMP) alle LDAP-objekter innenfor det konfigurerte søkeomfanget, inkludert ikke-brukerkontoer og andre objekter som ikke kreves av RBAC.
I store miljøer kan denne virkemåten føre til betydelig ressursutnyttelse på tvers av virtuelle maskiner for PFMP-administrasjon (MVM-er), den støttende Postgres-databasen og den generelle plattformen.
Derfor kan det hende at LDAP-synkronisering ikke fullføres innen akseptable tidsrammer, noe som forårsaker etterslep på jobber, minnelekkasjer og problemer med samtidighet.
1. Forberedelse
Krav:
Bruke den globale katalogen for Active Directory
Merk: Vi krever bruk av port 3268 for standard LDAP eller 3269 for LDAPS i AD-miljøer. Dette gjør at LDAP-gruppemedlemmer fra underordnede domener eller andre klarerte domener kan brukes i PFMP.
En AD-gruppe, for eksempel:

Underordnet domene ovenfor na.powerflex.lab.dell.com må være synlig av PFMPs LDAP User Federation Keycloak, ved hjelp av de globale katalogportene som gjør at de kan nås.
Dette er også grunnen til at vi bruker objectGUID i PFMP Directory Provider, det knytter kontoer til deres globale unike UUID.
Hvis begge underordnede domener er oppført under Truster-fanen, ser det ut til at underdomener stoler på hverandre som standard.
I et Microsoft Active Directory-miljø (AD) stoler et overordnet domene og dets underordnede domener (underordnede) på hverandre i en hierarkisk struktur. Dette er kjent som en transitiv tillit.
Som standard er disse klareringene toveis og transitive, noe som betyr at et overordnet domene stoler på sine underordnede domener og omvendt. Denne transitive naturen utvider klareringen til alle domener i overordnet-underordnet-hierarkiet.
Finne tilgjengelige LDAP- eller AD GC-tjenere fra DNS-oppføringer
Vanligvis oppgir kunden LDAP-adressen som skal brukes. Disse innstillingene kan kopieres fra konfigurasjonen av PFMP-katalogleverandør før du fjerner dem som en del av de neste trinnene i denne veiledningen.
Alternativt kan tilgjengelige servere hentes fra DNS for et bestemt domene:
# 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.
Slik finner du distinguishedName for en OU eller gruppe.
Først trenger vi Distinguished Names (DN) til OUene og gruppene der vi ønsker å lese brukere inn i PFMP. Disse banene følger ikke strengt DNS-navngivning og inneholder OUer inne i en x.500 LDAP-bane som vi kan trekke ut manuelt.
Vi kan finne disse DN-ene ved hjelp av forskjellige verktøy avhengig av OS, en enkel måte er å bruke krøll:
Hvordan teste PFMP LDAP-innstillinger ved hjelp av curl-verktøyet på Linux.
De nyere versjonene av curl som er installert på MVM-er, kan brukes til å finne de fullstendige navnene du trenger, for eksempel søker dette etter hele DN-en til 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 3269LDAPSERVER='ldap://ldap.powerflex.lab.dell.com:3268'# Use the same search base as you intend for the group path, generally just the DC componentsSEARCHBASE=DC=powerflex,DC=lab,DC=dell,DC=com# Call curl which will request the password of the bind user and return resultscurl -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=comdistinguishedName: CN=LabAdmins,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=comDN: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=comdistinguishedName: CN=LabAdmins,CN=Users,DC=na,DC=powerflex,DC=lab,DC=dell,DC=comDN: CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=comdistinguishedName: CN=LabUsers,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
Finn alle medlemmer av en LDAP-gruppe ved hjelp av filteregenskaper som du deretter kan plassere 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=commember: CN=matrixadmin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=matrixadmin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=svc_adfsck3,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=svc_mcp_rw,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=adcertsvc,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=bobthebuilder,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=Ashish Rahangdale,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=Packer Admin,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=FDLabAdmins,OU=Foundations,DC=powerflex,DC=lab,DC=dell,DC=commember: CN=Tejas Wadekar,CN=Users,DC=powerflex,DC=lab,DC=dell,DC=com
Hvordan teste PFMP LDAP-innstillinger ved hjelp av ldapsearch eller curl-verktøyet på Linux.
Hvis en linux-vert er tilgjengelig på nettverket, kan bruk av ldapsearch-verktøyet være nyttig for å teste og validere LDAP-innstillinger som brukes i PFMP/Keycloak.
Curl-verktøyet kan også brukes for LDAP-spørringer fra én av administrasjons-VM-ene / MVM-ene.
Rask introduksjon (vanlige alternativer):
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
Kontrollere/installere verktøyet:
$ which ldapsearch
/usr/bin/ldapsearch
#RHEL/CentOS install
sudo yum install openldap-clients
# SLES install
sudo zypper install openldap2-client
Definere grunntall DN (-b) fra LDAP-rotoppføring:
$ 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
Rotoppføringen gir informasjon om katalogserver. På AD gir rootDomainNamingContext-attributtet den øverste basen DN som kan brukes til søk.
-W -b "
Teste LDAP URI,binde DN (bruker/passord med lesetilgang) og innstillinger for brukersøk:
$ 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 eksemplet spør vi LDAP etter en eksisterende brukerkonto ved hjelp av sAMAccountName-attributtet (utdataene er avkortet slik at de bare viser attributtene vi trenger).
Tilsvarende innstillinger i PFMP-brukergrensesnittet:
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 ekvivalenter)
(-x kreves for enkel autentisering for å unngå standard SASL-modus)
Bind DN-passord (-W): be om passord (eller bruk -w '***' for å gi det i kommandoen)
The output of the command validates the following PFMP User Search Settings:
Username LDAP Attribute: sAMAccountName
ID-attributt: objectGUID
Objektklasse: person
Søkebane (-b): "dc=powerflex,dc=lab,dc=dell,dc=com"
Søkeinnstillinger for testgrupper:
$ 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-filter for testgruppe:
$ 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)))"
Testing av LDAP-filter for bruker:
$ ldapsearch -LLL -H ldap://powerflex.lab.dell.com:3268 -x -D "FLEXLAB\ck3-user" -W -b "dc=powerflex,dc=lab,dc=dell,dc=com" \dn: CN=Administrator,CN=Users,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)))" sAMAccountNamesAMAccountName:Administratordn: 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-brukere og -datamaskiner. Klikk på Vis, og velg Avanserte funksjoner.
DN er navnet som unikt identifiserer en oppføring i katalogen. Den første komponenten i DN er referert til som Relative Distinguished Name (RDN).
En DN består av attributt=verdipar, atskilt med komma, for eksempel:
CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com
Tenk på dem som "FQDNs for LDAP", den komplette x500-adressen "URL".
AD-brukere og -datamaskiner kan brukes til å bestemme DN-er og andre attributter:

Naviger og høyreklikk organisasjonsenheten der du vil lese brukere, og velg deretter Egenskaper.

I OU-egenskapene velger du fanen Attributtredigering.
Klikk distinguishedName for å utheve det, og klikk deretter Vis.
Høyreklikk den uthevede verdien, og velg Kopier.
Klikk Avbryt og deretter OK for å lukke vinduene Attributtredigering og OU-egenskaper.

Eksempel på LDAP-brukerfilter med begrenset omfang:
(&(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)))
Visuell forklaring:

Bind brukerkrav.
Denne bindingsbrukeren må minst ha tillatelse til å spørre brukere og grupper som er definert i LDAP-tjeneren, for å tillate at lagringssystemet autentiserer disse brukerne.
Når en bruker legges til i sikkerhetskategorien for toppnivådomenet i Active Directory-brukere og -maskiner, får den som standard skrivebeskyttede krav som kreves for LDAP-autentisering i PFMP. f.eks.



FYI: Vi trenger ikke vår LDAP binde bruker faktisk "i" AD grupper vi må lese i katalogen, trenger vi Sikkerhet kategorien tillatelser av "Les".

Generelle krav for PFMP LDAP-leverandør
Adresse: ldaps://ad.ldap.domain:3269 (SSL) ELLER ldap://ad.ldap.domain:3268 (VANLIG)
Bind DN: ADNTDOMAIN\serviceaccount eller Bind DN Distinguished name.
Bind DN-passord: passord for servicekonto
Timeout 30000
Username LDAP attribute: sAMAccountName
ID-attributt: objectGUID
Object Class: Person
Søkebane: (Høyeste nivå som kan spørre alle grupper, f.eks. bare domenekomponentene/DC-ene: DC = powerflex, DC = lab, DC = dell, DC = com)
Group Member Attribute: member
Group ID Attribute: cn
Group Object Class: group
Gruppesøkebane:( samme som brukersøkebane eller mer detaljert om nødvendig. Siden vi skal bruke et smalt filter, kan omfanget vårt være bredt uten at det påvirker ytelsen.)
#The følgende oppføringen gir minst én gruppe LDAP-gruppefilteret (PFMP 4.6.x+), slik at keycloak ikke søker etter alle grupper fra hele katalogen:
Group LDAP Filter: (CN=GROUP1)
#Given 64-røyebegrensningen i dette feltet bare for PFMP-brukergrensesnitt, må vi bruke keycloak for å omgå det hvis vi vil legge til mer enn det, for eksempel 3 forskjellige grupper:
Group LDAP Filter: (|(CN=GROUP1)(CN=GROUP2)(CN=GROUP3))
Test tilkoblingen, og hvis det lykkes, klikker du på Send inn.
F.eks.

2. Fjerning og opprydding av LDAP-leverandør
Fjern LDAP-brukerne, -gruppene og deretter katalogleverandøren fra PFMP-brukergrensesnittet som administratorbruker. Ikke prøv å gjøre dette som LDAP-bruker, bare som administrator.
ADVARSEL: Pass på at du registrerer gjeldende konfigurasjon for "Directory Provider" og "Remote Users/Groups"-tilordning fra PFMP (spesielt hvis du trenger å gjenopprette tidligere rolletilordning).
Hvis gruppe-/rolletilordning ikke vises på PFMP (kjent problem), følger du følgende instruksjoner:
# 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 | SuperUserLabAdmins | LifecycleAdminLabUsers | 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 | valueEMEALabAdmins | remote_type | LdapEMEALabAdmins | SuperUser | GLB:GLBEMEALabAdmins | is_remote | trueLabAdmins | remote_type | LdapLabAdmins | LifecycleAdmin | GLB:GLBLabAdmins | is_remote | trueLabUsers | remote_type | LdapLabUsers | Monitor | GLB:GLBLabUsers | is_remote | true(9 rows)keycloak=# \q
Hvis det er noen foreldede LDAP-grupper igjen i nøkkelkappedatabasen, kan de slettes manuelt ved hjelp av følgende prosess:
Keycloak database backup og keycloak_group database tabellen rydde opp kommandoer.
Merk: Manuell opprydding keycloak er noen ganger ikke nødvendig.
Vi bør bruke PFMP-brukergrensesnittet for å fjerne leverandøren (alltid fra PFMP først), og deretter bekrefte at den er slettet fra keycloak ved hjelp av / auth / URL.
Slik sjekker du LDAP-gruppeantallet i nøkkelkappe fra en MVM:
# Kjør dette for å angi variabelen 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 bare etter første fjerning i PFMP UI, og bare hvis leverandørdataene forblir i backend. Hvis du bruker PFxM 4.6.0.1, kan du også utføre følgende metode for å fjerne importerte brukere i Keycloak UI:
- Logg inn med /auth/ som keycloak-bruker
- Keycloak passord er unikt for hver installasjon og kan bli funnet på alle MVM bruker:
kubectl get secret -n powerflex keycloak-admin-credentials -o jsonpath="{.data.password}" | base64 --decode; echo
3. Brukerforbund -> LDAP -> Innstillinger, og velg Fjern importert øverst til høyre i rullegardinmenyen Handlinger.

Når gruppene og katalogleverandørene er ryddet opp og fjernet, starter du de tre MVM-nodene på nytt.
-Notat: Dette er bare nødvendig når miljøet er stort, og LDAP-spørringer hoper seg opp gjentatte ganger, som vist i dette tilfellet i loggene nedenfor.
- Hvis miljøet ikke er overbelastet med synkroniseringsproblemer og brukergrensesnittet er stabilt, kan MVM-omstartene generelt hoppes over. Det er et godt tiltak generelt skjønt.
Start KB på nytt https://www.dell.com/support/kbdoc/en-us/000225550
MVM Graceful Reboot (må kjøres én node om gangen) Ikke flytt til neste node før du har bekreftet at databasen rapporterer Sync Standby.
#As en beste praksis, identifiser noden som er den nåværende Postgres-lederen, og start denne på nytt sist.
#Run følgende kommando på en hvilken som helst MVM for å oppgi databasestatus og databasenavn tilknyttet.
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 kommandoen for å identifisere hvilken MVM-node som er vert for postgres-databasepodden.
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 pod-forekomsten. Kjør 'watch kubectl get nodes' for å overvåke statusen til omstartene dine. Denne MVM-en må være den siste noden som startes på nytt.
#Eksempel omstartsrekkefølge hvis pfmp-mgmt-1 er Postgres-lederen. Juster rekkefølgen på kommandoene nedenfor avhengig av hvilken MVM som er Postgres-lederen.
Åpne en terminal koblet til den tredje MVM-en, og kjør de to første kommandoene.
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 opp fra omstart. Kjør følgende kommando.
kubectl uncordon pfmp-mgmt-3 ; kubectl label node pfmp-mgmt-3 cmo.maintenance.mode-
#Run følgende kommando til databasen som er tilknyttet MVM3, rapporterer Sync Standby. På det tidspunktet kan du flytte til neste 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'
Åpne en terminal koblet til den andre MVM-en, og kjør de to første kommandoene.
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 opp fra omstart. Kjør følgende kommando.
kubectl uncordon pfmp-mgmt-2 ; kubectl label node pfmp-mgmt-2 cmo.maintenance.mode-
#Run følgende kommando til databasen som er tilknyttet MVM2, rapporterer Sync Standby. På det tidspunktet kan du flytte til neste 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 å bruke denne MVM-en som MVM for nodestatusovervåking.
'watch kubectl get nodes'
Gå til terminalen som er koblet til den første MVM-en som kjører 'se kubectl få noder'. Trykk på ctrl+c for å gå tilbake til terminalen, og kjør de to første kommandoene.
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 opp fra omstart. Kjør følgende kommando.
kubectl uncordon pfmp-mgmt-1 ; kubectl label node pfmp-mgmt-1 cmo.maintenance.mode-
#Run følgende kommando til databasen som er tilknyttet MVM1, rapporterer Sync Standby. Denne MVM var lederen, men en ny leder ville ta over når MVM1 ble tappet.
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'
SLUTT PÅ MVM GRACEFUL REBOOT-PROSEDYRE
Når du har startet på nytt og brukergrensesnittet er gjenopprettet for PFMP, logger du på som administrator og legger til Innstillinger -> Katalogleverandør ved hjelp av trinnene nedenfor:
3. Gjenoppbygging av LDAP-leverandør
Som nevnt i forberedelsesdelen, hvis det finnes underordnede AD-domener eller AD-domenekontoer i noen grupper du vil bruke i PFMP, bør LDAP-portene 3268 (vanlig) og 3269 (SSL) for global katalog (GC) brukes til dette.
F.eks.
ldaps://ad.ldap.corporate.domain.com:3269Users DN: DC=powerflex,DC=lab,DC=dell,DC=com Bind DN:DOMAIN\svc_ldapbindaccountUsername 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. Begrenset LDAP-applikasjon for brukere og gruppeomfang
Logg inn med /auth/ som keycloak-bruker
Brukerfilter:
# User LDAP Filter mangler i PFMP UI, så vi må bruke følgende for å endre det.
#This filteret må brukes i PowerFlex-området for tastaturkappe (PowerFlex –> brukerforbund – LDAP-filter> for bruker)
LDAP-filter for bruker:
(&(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)))
Lagre endringen.
Forklaring på dette innsnevrede filteret:
objectCategory er lik Person.
og
sAMAccountName finnes
og
memberOf er lik CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com
Eller
memberOf er lik CN=FLEX-STOR-MON,OU=15G,OU=FLEXLAB,DC=powerflex,DC=lab,DC=dell,DC=com
Fra <https://ldap-builder.powerflex.lab.dell.com/>
Brukerforbund -> LDAP -> Innstillinger, og velg fjern importert øverst til høyre i rullegardinmenyen Handlinger.

4.6.x+ UI Metode for å slette gruppetilordning.

I LDAP-gruppetilordningsinnstillingen for 'LDAP-egenskap for medlemskapsbruker' må vi også sørge for at en riktig verdi som vi sender som 'cn' og ikke kan endre i PFMP-brukergrensesnittet, endres i nøkkelkappegrensesnittet til DN.

I gruppen LDAP-filter kan vi føre opp en enten/eller-operatør | og CN-ene i hver gruppe, f.eks.
(|(CN=FLEXLAB-APP-PROD-SDS-Admin)(CN=CN=PRV_US_SA_SRV_SVS))