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 389
    • ldaps:// 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.
  • bobctl komut satırı yardımcı programı kuruludur ve oc hedef 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.yaml

Yapı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

AlanAçıklama
nameLDAP 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.
vendorEntegre 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).
connectionUrlProtokol (ldap:// veya ldaps://), host adı ve port numarası dahil olmak üzere LDAP sunucusunun tam URL'si.
usersDnKullanıcı hesaplarının depolandığı ve kullanıcı girişlerinin arandığı ve içe aktarıldığı dizin konumu.
usernameLDAPAttributeKullanıcıların kimlik doğrulaması yaparken kullanıcı adı olarak sağladıkları dizin özniteliği (attribute).
rdnLDAPAttributeDizin 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.
uuidLDAPAttributeHer kullanıcı hesabını kalıcı olarak tanımlamak için kullanılan benzersiz, kararlı, değişmeyen bir dizin özniteliği.
userObjectClassesHangi 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.
domainsDizinle 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.
Önemli:

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

AlanAçıklama
adminEmailsYönetici ayrıcalıkları verilecek kullanıcıların e-posta adresleri. Bob bu kullanıcılara otomatik olarak yönetici erişimi atar.
bindDnDizinle 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.
bindPasswordSecretBağ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.
useTruststoreSpiLDAP 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).
ldapsCACertSecretPEM 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.
searchScopeDizin 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.enabledtrue 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.
userAttributeMappingsDizin özniteliklerinin email, firstName ve lastName gibi Bob kullanıcı profili alanlarıyla nasıl eşlendiğini tanımlar.
priorityBirden 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.
groupMapperLDAP 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.

İpucu:

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.

Kısıtlama:

bob-admins ve bob-users grupları platform tarafından yönetilen gruplardır ve LDAP grup senkronizasyonundan otomatik olarak hariç tutulur.

ParametreVarsayılan değerAçıklama
groupsDnGerekliLDAP grup girişlerini içeren temel ayırt edici ad (base DN).
namegroupsKeycloak'taki grup eşleyicisinin (group mapper) görünen adı.
groupNameLdapAttributecnKeycloak'un grup adı olarak kullandığı LDAP özniteliği.
groupObjectClassesgroupOfNamesGrup girişlerini tanımlayan LDAP nesne sınıfı veya sınıfları.
membershipLdapAttributememberGrup girişinde üye bilgilerini içeren öznitelik.
membershipAttributeTypeDNÜye değerlerinin formatı. Desteklenen değerler: DN (distinguished names) ve UID (user IDs).
userRolesRetrieveStrategyLOAD_GROUPS_BY_MEMBER_ATTRIBUTEGrup üyeliklerini belirlemek için kullanılan yöntem.
memberOfLdapAttributememberOfGET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE kullanıldığında grup üyeliği bilgilerini içeren kullanıcı özniteliği.
customGroupSearchFilterYokGrupları ararken kullanılan ek LDAP filtresi. Filtre parantez içine alınmalıdır, örneğin (cn=dept-*).
modeLDAP_ONLYSenkronizasyon 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.

StratejiAçıklama
LOAD_GROUPS_BY_MEMBER_ATTRIBUTEKullanıcılara referanslar içeren grup girişlerini arayarak grup üyeliklerini alır.
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTEKullanıcının memberOf özniteliğinden grup üyeliklerini alır.
LOAD_GROUPS_BY_MEMBER_ATTRIBUTE_RECURSIVELYLDAP dizini tarafından desteklendiğinde iç içe geçmiş gruplar dahil olmak üzere grup üyeliklerini özyinelemeli (recursive) olarak alır.
İpucu:

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

Uygulamadan ö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-run

Dry 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-file kullanı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.
Not:

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
FlagGerekliAçıklama
--config <file>EvetLDAP yapılandırma dosyasının yolunu belirtir.
--bind-password <password>HayırKümede bindPasswordSecret oluşturur. Dizin anonim bağlama erişimine izin verdiğinde gerekli değildir.
--ca-cert-file <path>HayırYerel 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-runHayırKü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.

KontrolNeyi doğrular
ReadySağlayıcının başarıyla oluşturulduğunu ve kaydedildiğini.
LDAPReachableLDAP sunucusuna kümeden erişilebildiğini.
LDAPAuthenticatedYapı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.yaml

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

LDAP 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 yaml

Entegrasyonu 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 yaml

Aşağıdaki durum koşullarının True olarak ayarlandığını doğrulayın:

KoşulAmaç
ReadyLDAP sağlayıcısının başarıyla kaydedildiğini onaylar.
LDAPReachableKümenin LDAP sunucusuyla iletişim kurabildiğini onaylar.
LDAPAuthenticatedYapılandırılan bağlama kimlik bilgilerinin geçerli olduğunu onaylar.
UserSyncSucceededTü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>/admin

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

  1. Eşlenen yönetici grubuna ait bir kullanıcı hesabıyla oturum açın.
  2. Kullanıcının Bob yönetim kullanıcı arayüzüne erişebildiğini onaylayın.
  3. 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=100

Bildirilen SCIM ile ilgili hataları inceleyin ve senkronizasyon sürecini yeniden denemeden önce bunları çözün.

Bu konu nasıl?