Büyük Ortamlar İçin PowerFlex 4.x LDAP Yapılandırması
Summary: PowerFlex Management Platform SSO arka ucunu kullanarak hem kullanıcı hem de grup LDAP arama filtrelerini daraltarak, birden fazla kullanıcı arayüzü ve platform sorununa neden olduğu gözlemlenen senkronizasyon sorunlarını azaltabiliriz. ...
Instructions
- Hazırlık
- LDAP Sağlayıcı Kaldırma ve temizleme
- LDAP Sağlayıcı Yeniden Oluşturma
- Dar LDAP kullanıcı ve grup kapsamı uygulaması
Arkaplan:
Varsayılan olarak, PowerFlex Management Platform (PFMP) dizin sağlayıcıları, kullanıcı olmayan hesaplar ve RBAC mizin gerektirmediği diğer nesneler de dahil olmak üzere, yapılandırılmış arama kapsamındaki tüm LDAP nesnelerini içe aktarır.
Büyük ortamlarda bu davranış, PFMP yönetim VM'leri (MVM), destekleyen Postgres veritabanı ve genel platform genelinde önemli kaynak kullanımına neden olabilir.
Bu nedenle, LDAP senkronizasyonu kabul edilebilir zaman dilimleri içinde tamamlanamayabilir ve bu da iş biriktirme listelerine, bellek sızıntılarına ve eşzamanlılık sorunlarına neden olabilir.
1. Hazırlık
Gereksinimler:
- Global Katalog
- PFMP için AD Gruplarının DN'sini Bulma
- Bind Kullanıcı Gereksinimleri
- PFMP LDAP Genel Gereksinimleri
Active Directory Genel Kataloğunu Kullanma
Not: AD ortamlarında standart LDAP için 3268 bağlantı noktasının veya LDAPS için 3269 bağlantı noktasının kullanılmasını gerektiririz. Bu, alt etki alanlarındaki veya diğer güvenilir etki alanlarındaki LDAP grubu üyelerinin PFMP'de kullanılabilmesini sağlar.
Örneğin bir AD grubu:

Yukarıdaki na.powerflex.lab.dell.com alt etki alanı, erişilmelerine izin veren genel katalog bağlantı noktaları kullanılarak PFMP'nin LDAP Kullanıcı Federasyonu Keycloak u tarafından görülebilmelidir.
PFMP Dizin Sağlayıcısında objectGUID kullanmamızın nedeni de budur; bu, hesapları genel benzersiz UUID'lerine bağlar.
Her iki alt alan da Trusts sekmesi altında listeleniyorsa, alt alan adları varsayılan olarak birbirine güveniyor gibi görünür.
Microsoft Active Directory (AD) ortamında, bir üst etki alanı ve alt (alt) etki alanları, doğası gereği hiyerarşik bir yapıda birbirine güvenir. Bu, geçişli güven olarak bilinir.
Varsayılan olarak, bu güvenler iki yönlü ve geçişlidir, yani bir üst etki alanı alt etki alanlarına güvenir ve bunun tersi de geçerlidir. Bu geçişli yapı, güveni üst-alt hiyerarşisi içindeki tüm etki alanlarına genişletir.
DNS girişlerinden kullanılabilir LDAP veya AD GC sunucularını bulma
Genellikle müşteri, kullanmak üzere LDAP adresi sağlar. Bu ayarlar, bu kılavuzun sonraki adımlarının bir parçası olarak kaldırılmadan önce PFMP Dizin Sağlayıcı yapılandırmasından kopyalanabilir.
Alternatif olarak, kullanılabilir sunucular belirli bir etki alanı için DNS'den alınabilir:
# 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.
Bir OU veya Grubun ayırt edici adı nasıl bulunur?
İlk olarak, kullanıcıları PFMP'ye okumak istediğimiz OU'ların ve Grupların Ayırt Edici Adlarına (DN) ihtiyacımız olacak. Bu yollar kesinlikle DNS adlandırmasına uymaz ve manuel olarak ayıklayabileceğimiz bir x.500 LDAP yolu içinde OU'lar içerir.
Bu DN'leri işletim sistemine bağlı olarak farklı yardımcı programlar kullanarak bulabiliriz, kolay bir yol curl kullanmaktır:
Linux'tacurl yardımcı programını kullanarak PFMP LDAP ayarlarını test etme.
MVM'lere yüklenen curl'un daha yeni sürümleri, ihtiyacınız olan tam ayırt edici adları bulmak için kullanılabilir, örneğin bu, LabAdmins Group CN'nin tam DN'sini arar:
#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
Daha sonra keycloak arka ucuna yerleştirebileceğiniz filtre özelliklerini kullanarak bir LDAP grubunun tüm üyelerini bulun:
#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
Linux'taldapsearch veya curl yardımcı programını kullanarak PFMP LDAP ayarlarını test etme.
Ağda bir linux ana bilgisayarı varsa, LDAPSEARCH yardımcı programını kullanmak, PFMP/Keycloak'ta kullanılan LDAP ayarlarını test etmek ve doğrulamak için faydalı olabilir.
Alternatif olarak, curl yardımcı programı Yönetim VM'lerinden/MVM'lerinden birinden LDAP sorguları için de kullanılabilir.
Hızlı giriş (yaygın olarak kullanılan seçenekler):
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
Aleti kontrol etme/yükleme:
$ which ldapsearch
/usr/bin/ldapsearch
#RHEL/CentOS install
sudo yum install openldap-clients
# SLES install
sudo zypper install openldap2-client
LDAP kök girişinden Temel DN (-b) tanımlama:
$ 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
Kök girişi, dizin sunucusu hakkında bilgi sağlar. AD'de rootDomainNamingContext özniteliği, arama için kullanılabilecek en üst temel DN'yi verir.
-W -b "
LDAP URI,Bind DN (okuma erişimine sahip kullanıcı/parola) ve Kullanıcı Arama Ayarlarının test edilmesi:
$ 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)"
Bu örnekte, sAMAccountName özniteliğini kullanarak mevcut bir kullanıcı hesabı için LDAP'yi sorguluyoruz (çıktı yalnızca ihtiyacımız olan öznitelikleri gösterecek şekilde kesildi).
PFMP kullanıcı arayüzünde karşılık gelen ayarlar:
Adres (-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" veya "ck3-user@powerflex.lab.dell.com" eşdeğerdir)
(Varsayılan SASL modundan kaçınmak için basit kimlik doğrulama için -x gereklidir)
Bind DN Parolası (-W): parola sor (veya komutta sağlamak için–w '***' kullanın)
The output of the command validates the following PFMP User Search Settings:
Username LDAP Attribute: sAMAccountName
ID Özniteliği: objectGUID
Nesne Sınıfı: kişi
Arama Yolu (-b): DC=PowerFlex,DC=Lab,DC=Dell,DC=com
Test Grubu Arama Ayarları:
$ 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"
Test Grubu LDAP Filtresi:
$ 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)))"
Kullanıcı LDAP Filtresini Test Etme:
$ 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
Active Directory Kullanıcıları ve Bilgisayarları'nı başlatın. Görünüm öğesine tıklayın ve Gelişmiş Özellikler i seçin.
DN, dizindeki bir girişi benzersiz şekilde tanımlayan addır. DN'nin ilk bileşeni, Göreli Ayırt Edici Ad (RDN) olarak adlandırılır.
DN, virgülle ayrılmış öznitelik=değer çiftlerinden oluşur, örneğin:
CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com
Bunları, tam x500 adresi 'URL'si olan "LDAP için FQDN'ler" olarak düşünün.
AD Kullanıcıları ve Bilgisayarları, DN'leri ve diğer öznitelikleri belirlemek için kullanılabilir:

Kullanıcıları okumak istediğiniz OU'ya gidip sağ tıklayın, ardından Özellikler'i seçin.

OU Özellikleri'nde Öznitelik Düzenleyicisi sekmesini seçin.
Vurgulamak için distinguishedName'i tıklayın, sonra View'ı tıklayın.
Vurgulanan değere sağ tıklayın ve Copy öğesini seçin.
Attribute Editor ve OU Properties pencerelerini kapatmak için Cancel ve OK öğesine tıklayın.

Dar kapsamlı LDAP Kullanıcı Filtresi örneği:
(&(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)))
Görsel açıklama:

Bind Kullanıcı Gereksinimleri.
Bu bağlama kullanıcısının, depolama sisteminin bu kullanıcıları doğrulamasına izin vermek için en azından LDAP sunucusunda tanımlanan kullanıcıları ve grupları sorgulama iznine sahip olması gerekir.
Varsayılan olarak, Active Directory Kullanıcıları ve Bilgisayarları'nda üst düzey etki alanının güvenlik sekmesine bir kullanıcı eklendiğinde, PFMP'de LDAP kimlik doğrulaması için gereken varsayılan salt okunur gereksinimler verilir. Örneğin.



BİLGİNİZE: Dizinde okumamız gereken AD gruplarında LDAP bağlama kullanıcımıza ihtiyacımız yok, "Okuma" için Güvenlik sekmesi izinlerine ihtiyacımız var.

PFMP LDAP Sağlayıcısı Genel Gereksinimleri
Adres: ldaps://ad.ldap.domain:3269 (SSL) VEYA ldap://ad.ldap.domain:3268 (PLAIN)
DN'yi bağla: ADNTDOMAIN\serviceaccount veya Bind DN Ayırt edici adı.
Bind DN Parolası: hizmet hesabı parolası
Timeout 30000
Username LDAP attribute: sAMAccountName
ID özniteliği:objectGUID
Object Class: Person
Arama Yolu: (Tüm grupları sorgulayabilen en üst düzey, ör. yalnızca Etki Alanı Bileşenleri/DC'leri: DC=powerflex,DC=lab,DC=dell,DC=com)
Group Member Attribute: member
Group ID Attribute: cn
Group Object Class: group
Grup Arama Yolu:(Kullanıcı Arama Yolu ile aynı veya gerekirse daha ayrıntılı. Dar bir filtre kullanacağımız için kapsamımız performansı etkilemeden geniş olabilir.)
#The giriş, LDAP Grup filtresine (PFMP 4.6.x+) en az bir grup sağlar, böylece keycloak dizinin tamamındaki tüm grupları aramaz:
Group LDAP Filter: (CN=GROUP1)
Bu alandaki 64 karakter sınırlamasını yalnızca PFMP kullanıcı arayüzü için #Given, bundan daha fazlasını eklemek istiyorsak, örneğin 3 farklı grup eklemek istiyorsak, bu sorunu çözmek için keycloak'u kullanmalıyız:
Group LDAP Filter: (|(CN=GROUP1)(CN=GROUP2)(CN=GROUP3))
Bağlantıyı test edin ve başarılı olursa Gönder'e tıklayın.
Ör.

2. LDAP Sağlayıcısı Kaldırma ve Temizleme
LDAP kullanıcılarını, gruplarını ve ardından Dizin Sağlayıcıyı PFMP kullanıcı arayüzünden yönetici kullanıcı olarak kaldırın. Bunu bir LDAP kullanıcısı olarak değil, yalnızca yönetici olarak yapmaya çalışın.
UYARI: PFMP'den "Directory Provider" ve "Remote Users/Groups" eşlemesi için geçerli yapılandırmayı kaydettiğinizden emin olun (özellikle önceki rol eşlemesini geri yüklemeniz gerekiyorsa).
PFMP'de grup/rol eşlemesi görüntülenmiyorsa (bilinen sorun) aşağıdaki talimatları kullanın:
# 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
Keycloak veritabanında eski LDAP grupları kalırsa aşağıdaki işlem kullanılarak manuel olarak silinebilir:
Keycloak veritabanı yedekleme ve keycloak_group veritabanı tablosu temizleme komutları.
Not: Keycloak'u manuel olarak temizlemek bazen gerekli değildir.
Sağlayıcıyı kaldırmak için PFMP kullanıcı arayüzünü kullanmalıyız (her zaman önce PFMP'den), ardından /auth/ URL'sini kullanarak keycloak'tan temizlendiğini doğrulamalıyız.
Herhangi bir MVM'den keycloak da LDAP grup sayısını kontrol etme:
# Önce değişkeni ayarlamak için bunu çalıştırın.
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;"
Bu, yalnızca PFMP kullanıcı arayüzünde ilk kaldırma işleminden sonra ve yalnızca sağlayıcı verileri arka uçta kalırsa geçerlidir. PFxM 4.6.0.1 kullanıyorsanız, Keycloak kullanıcı arayüzünde içe aktarılan kullanıcıları kaldırmak için aşağıdaki yöntemi de uygulayabilirsiniz:
- Keycloak kullanıcısı olarak /auth/ kullanarak oturum açın
- Keycloak parolası her yükleme için benzersizdir ve aşağıdakiler kullanılarak herhangi bir MVM'de bulunabilir:
kubectl get secret -n powerflex keycloak-admin-credentials -o jsonpath="{.data.password}" | base64 --decode; echo
3. Kullanıcı federasyonu -> LDAP -> Ayarlar ve sağ üstteki Eylemler açılır menüsünden İçe Aktarılanları Kaldır öğesini seçin.

Gruplar ve dizin sağlayıcıları temizlenip kaldırıldıktan sonra üç MVM düğümünü yeniden başlatın.
-Not: Bu yalnızca ortam büyük olduğunda ve LDAP sorguları, aşağıdaki günlüklerde bu örnekte görüldüğü gibi tekrar tekrar biriktiğinde gereklidir.
- Ortam eşitleme sorunlarıyla aşırı yüklenmemişse ve kullanıcı arabirimi kararlıysa, MVM yeniden başlatmaları genellikle atlanabilir. Yine de genel olarak iyi bir önlemdir.
Yeniden başlatma KB https://www.dell.com/support/kbdoc/en-us/000225550
MVM Kademeli Yeniden Başlatma (Bir kerede bir düğüm çalıştırılmalıdır) Veritabanının Senkronizasyon Bekleme raporladığını doğrulayana kadar bir sonraki düğüme geçmeyin.
#As iyi bir uygulama olarak, geçerli Postgres lideri olan düğümü belirleyin ve en son bu düğümü yeniden başlatın.
Veritabanı durumunu ve ilişkili veritabanı adlarını listelemek için herhangi bir MVM'de aşağıdaki komutu #Run.
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'
Postgres veritabanı podunu barındıran MVM düğümünü belirlemek için bu komutu #Run.
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
MVM'yi, yani Postgres Leader pod örneğini #On. Yeniden başlatmalarınızın durumunu izlemek için 'watch kubectl get nodes' komutunu çalıştırın. Bu MVM, yeniden başlatılacak son düğüm olmalıdır.
#Pfmp-mgmt-1 Postgres Lideri ise örnek yeniden başlatma sırası. Hangi MVM'nin Postgres Lideri olduğuna bağlı olarak aşağıdaki komutların sırasını ayarlayın.
Üçüncü MVM'ye bağlı bir terminal açın ve ilk iki komutu çalıştırın.
kubectl label
node pfmp-mgmt-3 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-3 --ignore-daemonsets --delete-emptydir-data && sudo reboot
#When düğüm yeniden başlatmadan çıkar. Aşağıdaki komutu çalıştırın.
kubectl uncordon pfmp-mgmt-3 ; kubectl label node pfmp-mgmt-3 cmo.maintenance.mode-
MVM3 ile ilişkili veritabanı Sync Standby raporunu bildirene kadar aşağıdaki komutu #Run. Bu noktada bir sonraki MVM'ye geçebilirsiniz.
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'
İkinci MVM'ye bağlı bir terminal açın ve ilk iki komutu çalıştırın.
kubectl label node pfmp-mgmt-2 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-2 --ignore-daemonsets --delete-emptydir-data && sudo reboot
#When düğüm yeniden başlatmadan çıkar. Aşağıdaki komutu çalıştırın.
kubectl uncordon pfmp-mgmt-2 ; kubectl label node pfmp-mgmt-2 cmo.maintenance.mode-
MVM2 ile ilişkili veritabanı Sync Standby bildirene kadar aşağıdaki komutu #Run. Bu noktada bir sonraki MVM'ye geçebilirsiniz.
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'
Bu MVM'yi düğüm durumu izleme MVM'si olarak kullanmak için aşağıdaki komutu #Run.
'watch kubectl get nodes'
watch kubectl get nodes" komutunu çalıştıran ilk MVM'ye bağlı terminale gidin. Terminale geri dönüp ilk iki komutu çalıştırmak için ctrl+c tuşlarına basın.
kubectl label
node pfmp-mgmt-1 cmo.maintenance.mode=true
kubectl drain pfmp-mgmt-1 --ignore-daemonsets --delete-emptydir-data && sudo reboot
#When düğüm yeniden başlatmadan çıkar. Aşağıdaki komutu çalıştırın.
kubectl uncordon pfmp-mgmt-1 ; kubectl label node pfmp-mgmt-1 cmo.maintenance.mode-
MVM1 ile ilişkili veritabanı Sync Standby raporlayana kadar aşağıdaki komutu #Run. Bu MVM liderdi, ancak MVM1 boşaldığında yeni bir lider devralacaktı.
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'
MVM KADEMELI YENIDEN BAŞLATMA PROSEDÜRÜNÜN SONU
PFMP için kullanıcı arayüzü yeniden başlatıldıktan sonra yönetici olarak oturum açın ve aşağıdaki adımları kullanarak Ayarlar -> Dizin Sağlayıcı öğesini ekleyin:
3. LDAP Sağlayıcı Yeniden Oluşturma
Hazırlık bölümünde belirtildiği gibi, PFMP'de kullanacağınız gruplardan herhangi birinde alt AD etki alanları veya AD etki alanı güven hesapları varsa genel katalog (GC) LDAP bağlantı noktaları 3268 (normal) ve 3269 (SSL) kullanılmalıdır.
Ör.
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. Dar LDAP kullanıcı ve grup kapsamı uygulaması
Keycloak kullanıcısı olarak /auth/ kullanarak oturum açın
Kullanıcı Filtresi:
# PFMP kullanıcı arayüzünde Kullanıcı LDAP Filtresi eksik, bu yüzden bunu değiştirmek için aşağıdakileri kullanmamız gerekiyor.
#This filtresi Keycloak PowerFlex alanına uygulanmalıdır (PowerFlex --> Kullanıcı federasyonu --> Kullanıcı LDAP filtresi)
Kullanıcı LDAP filtresi:
(&(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)))
Değişikliği kaydedin .
Bu daraltılmış filtrenin açıklaması:
objectCategory, Person'a eşittir.
Ve
sAMAccountName mevcut
Ve
memberOf eşittir CN=PowerFlex Admin,OU=sio-group1,DC=powerflex,DC=lab,DC=dell,DC=com
Veya
memberOf eşittir CN=FLEX-STOR-MON,OU=15G,OU=FLEXLAB,DC=powerflex,DC=lab,DC=dell,DC=com
Başlangıç <https://ldap-builder.powerflex.lab.dell.com/>
Kullanıcı federasyonu -> LDAP -> Ayarlar ve sağ üstteki Eylemler açılır menüsünden içe aktarılanları kaldır öğesini seçin.

4.6.x+ UI Grup eşlemesini silme yöntemi.

'Üyelik Kullanıcısı LDAP Özniteliği' için LDAP Grup Eşlemesi ayarında, keycloak kullanıcı arayüzünde 'cn' olarak gönderdiğimiz ve PFMP kullanıcı arayüzünde değiştiremediğimiz doğru bir değerin DN olarak değiştirildiğinden de emin olmamız gerekir.

LDAP filtresi grubunda bir ya/ya da operatörü | ve her grubun CN'leri, örn.
(|(CN=FLEXLAB-APP-PROD-SDS-Admin)(CN=CN=PRV_US_SA_SRV_SVS))