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

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. Forberedelse
  2. LDAP-leverandør Fjerning og opprydding
  3. Gjenoppbygging av LDAP-leverandør
  4. 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 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

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=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

 

 

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" \
"(&(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-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".

 

image

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 | 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 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:

  1. Logg inn med /auth/ som keycloak-bruker
  2. 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: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. 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))

 

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.