Bir openldap sunucusunda Ters Grup Üyeliği Bakımını nasıl yapılandırabilirim? (üyesi)


18

Şu anda LDAP kimlik doğrulamasını bir sisteme entegre etmeye çalışıyorum ve LDAP grubuna göre erişimi kısıtlamak istiyorum. Bunu yapmanın tek yolu bir arama filtresidir ve bu nedenle tek seçeneğimin arama filtresimdeki "memberOf" özelliğinin kullanımı olduğuna inanıyorum. Anladığım kadarıyla, "memberOf" özniteliği, sunucudaki herhangi bir "groupOfNames" girdisi için yeni bir "üye" özniteliği oluşturulduğu zaman sunucu tarafından benim için oluşturulabilecek bir işlem özniteliğidir. Benim asıl amacım, varolan bir "groupOfNames" girişine "üye" özelliği ekleyebilmek ve sağladığım DN'ye eşleşen "memberOf" özelliğine sahip olmak.

Şimdiye kadar başardıklarım:

LDAP yönetimi için hala oldukça yeniyim, ancak openldap yöneticisinin kılavuzunda bulduğum bilgilere dayanarak, Reverse Group Membership Maintence aka "memberof overlay" tam olarak aradığım etkiyi elde edecek gibi görünüyor .

Sunucum şu anda "cn = config" tarzı çalışma zamanı yapılandırmasını kullanan openldap 2.4.15 paket yüklemesini (ubuntu'da slapd) çalıştırıyor. Bulduğum örneklerin çoğu hala eski "slapd.conf" statik yapılandırma yöntemine başvuruyor ve yapılandırmaları yeni dizin tabanlı modele uyarlamak için elimden geleni yaptım.

Memberof overlay modülünü etkinleştirmek için aşağıdaki girişleri ekledim:

OlcModuleLoad ile modülü etkinleştirin

cn=config/cn\=module\{0\}.ldif

dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z

Veritabanı için yer paylaşımını etkinleştirdi ve varsayılan ayarlarını (groupOfNames, member, memberOf, vb.) Kullanmasına izin verdi

cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof

dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z

Mevcut sonucum:

Yukarıdaki yapılandırmayı kullanarak, herhangi bir sayıda "üye" girişi ile YENİ bir "groupOfNames" ekleyebilir ve ilgili tüm DN'lerin bir "memberOf" özniteliğiyle güncellenmesini sağlayabilirim. Bu beklediğim davranışın bir parçası. Aşağıdakilerin memberof overlay ile başarılmış olması gerektiğine inanmamla birlikte, aşağıdakileri nasıl yapacağımı hala bilmiyorum ve herhangi bir tavsiyeyi memnuniyetle karşılarım:

  1. Mevcut bir "groupOfNames" öğesine "üye" niteliği ekleyin ve otomatik olarak karşılık gelen bir "memberOf" niteliği oluşturun.
  2. Bir "üye" niteliğini kaldırın ve karşılık gelen "memberOf" özelliğinin "otomatik olarak kaldırılmasını sağlayın.

Yanıtlar:


10

Aynı şeyle uğraşıyorum, openldap belgeleri minimalist ve neredeyse hiç yardımcı değil. Bir yapılandırma veritabanına geçtiklerinde (prensip olarak kötü bir fikir değil) tüm seçenekler değişti, böylece insanlar /etc/ldap/slapd.conf'dan örnek verirken, modern bir slapd yapılandırması (Ubuntu gibi) ile işe yaramaz.

Sonunda bu işe başladım. Özet ... ilk LDIF dosyası:

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof

İkinci LDIF dosyası:

dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

Ldapadd kullanarak yapılandırma veritabanına ekleyin (normal yapılandırma öğeleriyle aynıdır).

Bu vermez otomatik olarak mevcut veri güncelleme değil ben geçici bir dosyaya herşeyi kopyalayabilir ve her grubu ziyaret, grubu silmek ve yeniden aynı grup geri eklemek için slapcat kullanmak için gerekli böylece, veritabanında (kuvvetler memberOf güncellemesine niteliklerini doğru şekilde). Boş bir veritabanıyla başlıyorsanız, nesneler eklendikçe öznitelikleri doğru şekilde güncelleştirir.

Ayrıca, "olcDatabase = {1} hdb" çok tipiktir, ancak kurulumunuzla eşleşmesi garanti edilmez. Bunu kontrol ettiğinizden emin olun.


1
Değil mi slapaddbunu yapmak için doğru yolu (durdurulmuş veritabanı üzerine)?
mad_vs

11

Bu konuyla ilgili son zamanlarda blogumda yazdım, www.jordaneunson.com İlgili bölümleri kopyalayıp yapıştırdım.

Yapmam gereken LDAP sunucumdaki "slapd" hizmetini durdurmak ve slapd.conf dosyamı düzenlemek ve aşağıdaki iki satırı eklemekti.

moduleload memberof.la
overlay memberof

Zaten vpn adlı bir groupOfNames vardı, bu yüzden daha sonra aşağıdaki içeriğe sahip bir LDIF dosyası oluşturmak zorunda kaldı:

dn: cn=vpn,ou=Groups,dc=shop,dc=lan
objectclass: groupofnames
cn: vpn
description: Users allowed to connect on VPN
member: uid=jordan,ou=People,dc=shop,dc=lan

Ve bunu ldap veritabanına ekledim

slapadd -f file.ldif

Bundan sonra hataları kontrol etmek için hata ayıklamada ldap sunucusunu çalıştırdım

slapd -d 99 -f /etc/ldap/slapd.conf 

ve "vpn" grup üyeliğimin kullanıcı girişimde listelendiğinden emin olmak için işaretleyin.

ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf 

ve bam! başarı!

jordan, People, shop.lan
dn: uid=jordan,ou=People,dc=shop,dc=lan
memberOf: cn=vpn,ou=Groups,dc=shop,dc=lan

Bu yüzden slapd servisini yeniden başlattım ve o zamandan beri çok başarılı oldum. Yeni bir GUI yönetim aracı için phpLDAPAdmin kullanıyorum ve kullanıcılarıma atanan ve atanmayan memberOf özniteliğiyle ilgili sorunum yok.

Dikkat edilmesi gereken son bir nokta da "memberOf" özelliğinin temel LDAP v3 şemasının bir parçası olmaması ve bu nedenle ldapsearch yapmanın özellikle sorgulanmadığı sürece bu niteliği göstermeyeceğidir. Bu yüzden yukarıdaki örneğimde ldapsearch parametrelerinin sonunda bildirildi.

Bu yardımcı olur umarım.

Düzenleme: Ben sadece Apache Directory Studio ile sorununuzu sınadım: sürece öznitelik üye değerini bir bütün olarak girdiği sürece A-OK çalışır. Ancak memberOf özniteliği kullanıcı girişinde görünmez. Bunun nedeni memberOf özniteliğinin LDAPv3 şemasının bir parçası olmamasıdır. Orada olduğunu doğrulamak için ldapsearch komut satırı aracını kullanın:

ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf 

1
Modülü yüklemek ve yer paylaşımı eklemek ne yazık ki yaptığım şeydir. Sorun, yeni groupOfNames girdileri için "memberOf" özniteliklerinin eklenmediği değil, varolan bir gruba yalnızca "member" özniteliğini eklediğimde eklenmedikleri değil. Şu anda LDAP'ma göz atmak ve yapılandırmak için Apache Directory Studio kullanıyorum, böylece göz attığımda memberOf girişlerini gösteriyor. Bu onların gizlenmesi meselesi değil.
19'da emills

1
GroupOfNames içinde üye niteliğini nasıl oluşturuyorsunuz? Tüm DN'yi kullanıyor mu? like: "uid = user, ou = People, dc = corp, dc = org" veya kullanıcı adlarını mı dolduruyorsunuz? Ters eşlemenin çalışması için, tüm DN'yi kullanmanız gerekir, böylece memberOf, ters haritanın nereye yerleştirileceğini bilir.
Jordan Eunson

1
Düzenleme: Ben sadece A-OK çalışır yukarıda belirtildiği gibi bir bütün olarak öznitelik üye değeri girmek sürece Apache Directory Studio ile sorununuzu test. Ancak memberOf özniteliği kullanıcı girişinde görünmez. Bunun nedeni memberOf özniteliğinin LDAPv3 şemasının bir parçası olmamasıdır. Orada olduğunu doğrulamak için ldapsearch komut satırı aracını kullanın. <code> ldapsearch -h ldap -x -b "dc = mağaza, dc = lan" '(uid = jordan)' memberOf </code>
Ürdün Eunson 16:09

1
Üye girişinde DN kullanıyorum. Daha önce de belirttiğim gibi, sadece yeni bir groupOfNames ile eklenir (ve bu nedenle görünür) eklenir (mevcut bir gruba üye niteliği eklediğimde değil).
6'da emills

1
<quote> sadece ekleniyorlar (ve bu nedenle görünürler) </quote> Üzgünüm ama bu ifade yanlış. Özel olarak sorgulamadığınız sürece memberOf özniteliği görünmez. Lütfen yukarıda listelenen ldapsearch komutunun çıktısını kaydeder misiniz? Kullanıcıyı bir memberOf özniteliğine sahip olması gereken bir kullanıcı olarak değiştirin .
Jordan Eunson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.