LDAP entegrasyonu
BobLDAP özel kaynağını ve bobctl add-ldap komutunu kullanarak IBM Bob on-premises için LDAP veya Active Directory federasyonunu yapılandırın.
Bob on-premises, dizini bir Keycloak kullanıcı federasyonu sağlayıcısı olarak yapılandıran bobctl yardımcı programı aracılığıyla LDAP veya Active Directory ortamınızı Keycloak ile entegre eder. Bu entegrasyon genellikle kurulum sırasında kurulsa da, devam eden kullanıcı yönetimi etkinliklerinin bir parçası olarak dağıtımdan sonra da yapılandırılabilir, güncellenebilir veya bakımı yapılabilir.
Başlamadan önce
LDAP federasyonunu yapılandırmadan önce aşağıdaki gereksinimlerin karşılandığından emin olun:
- OpenShift Container Platform (OCP) kümesinin uygun port üzerinden LDAP sunucusuna ağ bağlantısı vardır:
ldap://için 389ldaps://için 636
- Dizine okuma erişimi olan bir servis hesabı (bind DN) mevcuttur veya LDAP sunucusu anonim bağlamalara (anonymous binds) izin verecek şekilde yapılandırılmıştır.
- Özel veya dahili olarak imzalanmış bir sertifika yetkilisi (CA) ile
ldaps://kullanıyorsanız, LDAP sunucusunun CA sertifikasını PEM formatında edinin. bobctlkomut satırı yardımcı programı kuruludur veochedef kümeye karşı yapılandırılmış ve kimlik doğrulaması yapılmıştır.
Yapılandırma dosyası referansı
Bir LDAP sağlayıcısını kaydetmeden önce sağlanan şablondan bir LDAP yapılandırma dosyası oluşturun.
cp config-ldap-template.yaml my-ldap.yamlYapılandırma dosyası, Bob'un LDAP dizininize nasıl bağlanacağını, kimlik doğrulaması yapacağını ve kullanıcıları nasıl senkronize edeceğini tanımlayan gerekli ve isteğe bağlı parametreleri içerir.
Gerekli alanlar
| Alan | Açıklama |
|---|---|
name | LDAP sağlayıcısı için benzersiz, açıklayıcı bir tanımlayıcı. Yapılandırılan her sağlayıcının farklı bir adı olmalıdır. |
vendor | Entegre edilecek LDAP dizininin türünü belirtir. Desteklenen değerler: other (OpenLDAP ve LDAPv3 uyumlu), ad (Microsoft Active Directory), rhds (Red Hat Directory Server), tivoli (IBM Security Directory Server), edirectory (NetIQ eDirectory). |
connectionUrl | Protokol (ldap:// veya ldaps://), host adı ve port numarası dahil olmak üzere LDAP sunucusunun tam URL'si. |
usersDn | Kullanıcı hesaplarının depolandığı ve kullanıcı girişlerinin arandığı ve içe aktarıldığı dizin konumu. |
usernameLDAPAttribute | Kullanıcıların kimlik doğrulaması yaparken kullanıcı adı olarak sağladıkları dizin özniteliği (attribute). |
rdnLDAPAttribute | Dizin yapısı içindeki girişleri tanımlamak için kullanılan dizin özniteliği. Çoğu yapılandırmada bu, usernameLDAPAttribute ile aynıdır. |
uuidLDAPAttribute | Her kullanıcı hesabını kalıcı olarak tanımlamak için kullanılan benzersiz, kararlı, değişmeyen bir dizin özniteliği. |
userObjectClasses | Hangi dizin girişlerinin kullanıcı hesabı olarak tanınacağını ve işleneceğini tanımlayan virgülle ayrılmış LDAP nesne sınıfları (object classes) listesi. |
domains | Dizinle ilişkili bir veya daha fazla e-posta etki alanı (domain). Kimlik doğrulama sırasında, e-posta adresleri yapılandırılan alan adlarından herhangi biriyle eşleşen kullanıcılar, kimlik bilgisi doğrulaması için otomatik olarak bu LDAP sağlayıcısına yönlendirilir. |
domains parametresi, on-premises dağıtımlarda alan adı tabanlı yönlendirmeyi yapılandırmak için desteklenen tek yöntemdir. Bob yönetim kullanıcı arayüzü üzerinden alan adlarını yapılandırmayın; çünkü bu desteklenmez ve kimlik doğrulama hatalarına neden olabilir.
İsteğe bağlı alanlar
| Alan | Açıklama |
|---|---|
adminEmails | Yönetici ayrıcalıkları verilecek kullanıcıların e-posta adresleri. Bob bu kullanıcılara otomatik olarak yönetici erişimi atar. |
bindDn | Dizinle kimlik doğrulaması yapmak ve bağlanmak için kullanılan servis hesabının DN'i. Dizin anonim bağlama erişimine izin veriyorsa atlanabilir. |
bindPasswordSecret | Bağlama hesabı parolasını depolayan Secret'a başvurur. Bu Secret, bobctl komutuyla --bind-password seçeneği sağlandığında otomatik olarak oluşturulur. |
useTruststoreSpi | LDAP CA sertifikasının sunucu doğrulaması için ne zaman kullanılacağını belirtir. Değerler: always (özel veya dahili olarak düzenlenen CA sertifikaları için varsayılan), ldapsOnly (genel olarak güvenilen CA sertifikaları için), never (güvenli olmayan ldap:// üzerinden bağlanırken). |
ldapsCACertSecret | PEM formatında LDAP sunucusunun CA sertifikasını içeren Secret'a başvurur. Bu Secret, --ca-cert-file sağlandığında otomatik olarak oluşturulur. |
searchScope | Dizin aramalarının derinliğini belirler. 2 tüm alt kapsayıcıları ve alt ağaçları arar (varsayılan); 1 aramaları yalnızca doğrudan alt girişlerle sınırlar. |
customUserSearchFilter | Örneğin servis hesaplarını hariç tutmak veya aramaları belirli kullanıcı türleriyle kısıtlamak için tüm kullanıcı arama işlemlerine uygulanan ek bir filtre. |
userSync.enabled | true olarak ayarlandığında, sağlayıcı başlangıçta yapılandırıldığında tüm kullanıcılar içe aktarılır ve sonraki dizin değişiklikleri her beş dakikada bir senkronize edilir. Çoğu dağıtım için önerilir. |
userAttributeMappings | Dizin özniteliklerinin email, firstName ve lastName gibi Bob kullanıcı profili alanlarıyla nasıl eşlendiğini tanımlar. |
priority | Birden fazla sağlayıcı yapılandırıldığında sağlayıcıların değerlendirilme sırasını belirler. Daha düşük değerlere sahip sağlayıcılar önce kontrol edilir. Varsayılan 0dır. |
groupMapper | LDAP gruplarını Keycloak ile senkronize eder. Bkz. LDAP grup senkronizasyonunu yapılandırma. |
Kullanıcı senkronizasyon davranışı
userSync.enabled değeri true olarak ayarlandığında, Bob, LDAP sağlayıcısı kaydedildiğinde tüm kullanıcıların tek seferlik içe aktarımını gerçekleştirir. İlk içe aktarma tamamlandıktan sonra, devam eden kullanıcı yaşam döngüsü senkronizasyonu SCIM aracılığıyla otomatik olarak gerçekleştirilir.
Büyük LDAP dizinleri için userSync.enabled ayarını false olarak bırakmayı ve kullanıcıların ilk kez oturum açtıklarında sağlanmasına izin vermeyi değerlendirin. Bu yaklaşım, LDAP sağlayıcısını kaydetmek için gereken süreyi azaltabilir.
LDAP grup senkronizasyonunu yapılandırma
LDAP gruplarını Keycloak ile senkronize etmek için isteğe bağlı groupMapper yapılandırmasını kullanın. Grup senkronizasyonu, LDAP dizininizde tanımlanan kullanıcıların ve grup üyeliklerinin Keycloak aracılığıyla içe aktarılmasını ve yönetilmesini sağlar.
groupsDn parametresi zorunludur. Diğer tüm parametreler isteğe bağlıdır ve LDAP dizin şemanıza ve grup yapınıza uyacak şekilde özelleştirilebilir.
bob-admins ve bob-users grupları platform tarafından yönetilen gruplardır ve LDAP grup senkronizasyonundan otomatik olarak hariç tutulur.
| Parametre | Varsayılan değer | Açıklama |
|---|---|---|
groupsDn | Gerekli | LDAP grup girişlerini içeren temel ayırt edici ad (base DN). |
name | groups | Keycloak'taki grup eşleyicisinin (group mapper) görünen adı. |
groupNameLdapAttribute | cn | Keycloak'un grup adı olarak kullandığı LDAP özniteliği. |
groupObjectClasses | groupOfNames | Grup girişlerini tanımlayan LDAP nesne sınıfı veya sınıfları. |
membershipLdapAttribute | member | Grup girişinde üye bilgilerini içeren öznitelik. |
membershipAttributeType | DN | Üye değerlerinin formatı. Desteklenen değerler: DN (distinguished names) ve UID (user IDs). |
userRolesRetrieveStrategy | LOAD_GROUPS_BY_MEMBER_ATTRIBUTE | Grup üyeliklerini belirlemek için kullanılan yöntem. |
memberOfLdapAttribute | memberOf | GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE kullanıldığında grup üyeliği bilgilerini içeren kullanıcı özniteliği. |
customGroupSearchFilter | Yok | Grupları ararken kullanılan ek LDAP filtresi. Filtre parantez içine alınmalıdır, örneğin (cn=dept-*). |
mode | LDAP_ONLY | Senkronizasyon modu. Desteklenen değerler: LDAP_ONLY ve READ_ONLY. |
groupsPath | / | Senkronize edilen grupların oluşturulduğu Keycloak grup hiyerarşisindeki konum. |
Grup üyeliği alma stratejileri
userRolesRetrieveStrategy parametresi, Keycloak'un bir kullanıcının grup üyeliklerini nasıl belirleyeceğini denetler.
| Strateji | Açıklama |
|---|---|
LOAD_GROUPS_BY_MEMBER_ATTRIBUTE | Kullanıcılara referanslar içeren grup girişlerini arayarak grup üyeliklerini alır. |
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE | Kullanıcının memberOf özniteliğinden grup üyeliklerini alır. |
LOAD_GROUPS_BY_MEMBER_ATTRIBUTE_RECURSIVELY | LDAP dizini tarafından desteklendiğinde iç içe geçmiş gruplar dahil olmak üzere grup üyeliklerini özyinelemeli (recursive) olarak alır. |
LDAP dizininiz grup üyeliği bilgilerini memberOf özniteliği aracılığıyla kullanıcı girişlerinde saklamadığı veya özyinelemeli aramalar gerektiren iç içe geçmiş grup yapıları kullanmadığı sürece LOAD_GROUPS_BY_MEMBER_ATTRIBUTE kullanın.
Örnek yapılandırma
name: corp-ldap
vendor: other
connectionUrl: ldaps://ldap.corp.example.com:636
usersDn: ou=People,dc=corp,dc=example,dc=com
usernameLDAPAttribute: uid
rdnLDAPAttribute: uid
uuidLDAPAttribute: entryUUID
userObjectClasses: inetOrgPerson,organizationalPerson,person
domains:
- corp.example.com
bindDn: cn=bob-svc,ou=ServiceAccounts,dc=corp,dc=example,dc=com
useTruststoreSpi: always
userSync:
enabled: true
userAttributeMappings:
- ldapAttribute: mail
userModelAttribute: email
- ldapAttribute: givenName
userModelAttribute: firstName
- ldapAttribute: sn
userModelAttribute: lastName
# İsteğe bağlı: LDAP gruplarını Keycloak ile senkronize et
groupMapper:
groupsDn: ou=Groups,dc=corp,dc=example,dc=com
groupObjectClasses: groupOfNames
membershipLdapAttribute: member./bobctl add-ldap --config corp-ldap.yaml \
--bind-password '<bind-password>' \
--ca-cert-file /path/to/ca.crtUygulamadan önce bir LDAP yapılandırmasını doğrulama
Kümeye bir LDAP yapılandırması uygulamadan önce, yapılandırmayı doğrulamak ve oluşturulacak kaynakları önizlemek için --dry-run seçeneğini kullanın. Bir deneme çalıştırması (dry run) yapmak, kümede herhangi bir değişiklik yapılmadan önce yaygın yapılandırma sorunlarının belirlenmesine yardımcı olabilir.
./bobctl add-ldap --config my-ldap.yaml \
--bind-password '<bind-password>' \
--ca-cert-file /path/to/ca.crt \
--dry-runDry run aşağıdaki kontrolleri gerçekleştirir:
- Yapılandırma dosyasında gerekli tüm yapılandırma parametrelerinin mevcut olduğunu doğrular.
--ca-cert-filekullanıldığında belirtilen CA sertifika dosyasının yerel olarak mevcut olduğunu doğrular.- Oluşturulacak veya güncellenecek
BobLDAPözel kaynağının bir önizlemesini görüntüler. - Yapılandırmanın bir parçası olarak oluşturulacak Kubernetes Secret'larını gösterir.
- Kümedeki herhangi bir kaynağı oluşturmadan, değiştirmeden veya silmeden çıkar.
Dry-run işlemi, LDAP sunucusuna ağ bağlantısını doğrulamaz, sağlanan kimlik bilgilerini dizine karşı doğrulamaz veya kümedeki başvurulan Secret'ların varlığını onaylamaz. Bu doğrulamalar yalnızca yapılandırma uygulandıktan sonra gerçekleştirilir ve LDAPReachable ve LDAPAuthenticated durum koşullarına yansıtılır.
Yapılandırmayı uygulama
LDAP yapılandırma dosyanızı oluşturup doğruladıktan sonra, yapılandırmayı kümeye uygulamak için add-ldap komutunu çalıştırın.
./bobctl add-ldap --config my-ldap.yaml \
--bind-password '<bind-password>' \
--ca-cert-file /path/to/ca.crt| Flag | Gerekli | Açıklama |
|---|---|---|
--config <file> | Evet | LDAP yapılandırma dosyasının yolunu belirtir. |
--bind-password <password> | Hayır | Kümede bindPasswordSecret oluşturur. Dizin anonim bağlama erişimine izin verdiğinde gerekli değildir. |
--ca-cert-file <path> | Hayır | Yerel bir PEM dosyasından ldapsCACertSecret oluşturur. Genel olarak güvenilen bir CA veya güvenli olmayan bir ldap:// bağlantısı kullanıldığında atlanabilir. |
--dry-run | Hayır | Kümeye herhangi bir değişiklik uygulamadan yapılandırmayı doğrular ve oluşturulacak veya güncellenecek kaynakların bir önizlemesini görüntüler. |
Komut çalıştığında, bobctl operatörün yapılandırmayı mutabakata varmasını (reconcile) bekler ve BobLDAP özel kaynağı tarafından bildirilen durum koşullarını kontrol ederek LDAP sağlayıcısını doğrular.
| Kontrol | Neyi doğrular |
|---|---|
Ready | Sağlayıcının başarıyla oluşturulduğunu ve kaydedildiğini. |
LDAPReachable | LDAP sunucusuna kümeden erişilebildiğini. |
LDAPAuthenticated | Yapılandırılan bağlama kimlik bilgilerinin geçerli olduğunu. |
UserSyncSucceeded | İlk kullanıcı içe aktarımının başarıyla tamamlandığını. Bu koşul yalnızca userSync.enabled değeri true olarak ayarlandığında değerlendirilir. |
Varsayılan doğrulama zaman aşımı 600 saniyedir (10 dakika). Büyük dizinlerin bulunduğu ortamlarda, ilk kullanıcı senkronizasyonunun tamamlanması birkaç dakika sürebilir. Zaman aşımı süresini artırmak için BOB_LDAP_WAIT_TIMEOUT ortam değişkenini ayarlayın:
BOB_LDAP_WAIT_TIMEOUT=900 ./bobctl add-ldap --config my-ldap.yamlBirden fazla LDAP sağlayıcısı yapılandırma
Birden fazla LDAP veya Active Directory kaynağından kullanıcıları entegre etmek için her dizin için ayrı bir yapılandırma dosyası oluşturun ve her yapılandırmadaki name alanına benzersiz bir değer atayın.
./bobctl add-ldap --config ldap-corp.yaml
./bobctl add-ldap --config ldap-subsidiary.yamlLDAP kaynak durumunu inceleme
Yapılandırılan LDAP sağlayıcılarının durumunu görüntülemek için:
oc get bobldap -n <instance-namespace>Belirli bir sağlayıcı için ayrıntılı yapılandırma ve durum bilgilerini görüntülemek için:
oc get bobldap <name> -n <instance-namespace> -o yamlEntegrasyonu doğrulama
bobctl add-ldap başarıyla tamamlandıktan sonra LDAP entegrasyonunun düzgün çalıştığını doğrulayın.
BobLDAP özel kaynağının durumunu kontrol edin:
oc get bobldap <name> -n <instance-namespace> -o yamlAşağıdaki durum koşullarının True olarak ayarlandığını doğrulayın:
| Koşul | Amaç |
|---|---|
Ready | LDAP sağlayıcısının başarıyla kaydedildiğini onaylar. |
LDAPReachable | Kümenin LDAP sunucusuyla iletişim kurabildiğini onaylar. |
LDAPAuthenticated | Yapılandırılan bağlama kimlik bilgilerinin geçerli olduğunu onaylar. |
UserSyncSucceeded | Tüm kullanıcıların başarıyla içe aktarıldığını onaylar. Yalnızca userSync.enabled: true olduğunda mevcuttur. |
Herhangi bir koşul False ise tanı ayrıntıları için ilgili message alanını inceleyin.
Kullanıcı kimlik doğrulamasının çalıştığını doğrulamak için federe LDAP dizinindeki kimlik bilgilerini kullanarak oturum açın.
Bob URL'sini açın:
https://bob.<namespace>.<ingress-domain>Başarılı bir oturum açma; bağlantının, kimlik doğrulamanın, etki alanı yönlendirmesinin, SCIM sağlamanın ve rol eşlemenin düzgün çalıştığını onaylar.
Kullanıcı ilk kez oturum açtıktan sonra, kullanıcı kaydının Bob'da mevcut olduğunu onaylayın.
Bob yönetim kullanıcı arayüzünü açın:
https://bob.<namespace>.<ingress-domain>/adminBir Bob yöneticisi olarak oturum açın ve test kullanıcısının kullanıcılar listesinde göründüğünü doğrulayın.
Eğer groupMapper bir LDAP grubunu Bob yöneticileriyle eşleyecek şekilde yapılandırılmışsa:
- Eşlenen yönetici grubuna ait bir kullanıcı hesabıyla oturum açın.
- Kullanıcının Bob yönetim kullanıcı arayüzüne erişebildiğini onaylayın.
- Yönetici düzeyindeki işlevlerin kullanılabilir olduğunu doğrulayın.
userSync.enabled: true ise, kullanıcılar LDAP sağlayıcısı kaydedildikten sonra otomatik olarak içe aktarılır. Test kullanıcısı ilk oturum açmaya gerek kalmadan Bob'da görünmelidir.
Kullanıcı birkaç dakika sonra görünmezse sağlama hataları için bob-admin loglarını inceleyin:
oc logs -n <instance-namespace> -l app=bob-admin --tail=100Bildirilen SCIM ile ilgili hataları inceleyin ve senkronizasyon sürecini yeniden denemeden önce bunları çözün.