-1

アプリケーションサービス用にいくつかの OpenLDAP サーバーを構築しました。どちらのサーバーも構成面では完全に問題ないように見え、Apache Directory Studio でRootDN cn=admin,dc=somedomain,dc=comとしてこれらを管理できます。また、それらの間でもレプリケーションが機能します。これらは、OpenLDAP サーバー パッケージが提供されなくなったため、OpenLDAP ソース コードをコンパイルすることによって RHEL8 上に構築されます。OpenLDAP のバージョンは 2.4.52 です。

Directory Studio を使用して OU とユーザーを作成し、それらの 1 つを認証目的でサービス アカウントとしてアプリで使用することができました。この場合、ユーザーはuid=svc-admin,ou=Admins,ou=People,dc=somedomain,dc=comで、OU は次のとおりです。

  • ou=管理者,ou=人,dc=何らかのドメイン,dc=com
  • ou=読者、ou=人、dc=何らかのドメイン、dc=com
  • ou=ユーザー、ou=人、dc=何らかのドメイン、dc=com

現在の要件は、アプリが新しいユーザーをプロビジョニングするように設計されており、サービス アカウントとして svc-admin を使用して上記の OU に書き込むため、ユーザーsvc-adminには上記の OU への書き込み/完全なアクセス許可が必要です。ユーザーを作成し、その属性を変更できる必要があります。

ACL を作成し、ldapmodify を使用して適用できましたが、Apache DS で svc-admin として LDAP サーバーに接続すると、読み取りはできますが、新しいユーザーを変更または作成することはできません。これを行うと、Apache DS とシェルの両方でエラーが発生します。権限がありません - エラー 50 - 親への書き込みアクセス権がありません

使用した ACL は次のとおりです。

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to dn.subtree="ou=People,dc=somedomain,dc=com" by dn.exact="uid=svc-admin,ou=Admins,ou=People,dc=somedomain,dc=com" write
olcAccess: to dn.subtree="ou=Users,ou=People,dc=somedomain,dc=com" by dn.exact="uid=svc-admin,ou=Admins,ou=People,dc=somedomain,dc=com" write
olcAccess: to dn.subtree="ou=Readers,ou=People,dc=somedomain,dc=com" by dn.exact="uid=svc-admin,ou=Admins,ou=People,dc=somedomain,dc=com" write

動いていない。これが私のolcDatabase={1}mdbおよびolcDatabase={0} 構成ファイルです。ACL がうまく機能していないため、ACL をクリーンアップしました

olcDatabase={1}mdb

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 54063f10
dn: olcDatabase={1}mdb
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/openldap
olcSuffix: dc=somedomain,dc=com
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowExpire by self wr
 ite by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn
 =external,cn=auth" manage  by * none
olcAccess: {1}to dn.subtree="dc=somedomain,dc=com" by dn.subtree="gidNumber=
 0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by users read by * re
 ad
olcRootDN: cn=admin,dc=somedomain,dc=com
olcRootPW:: e1NTSEF9dkc0ZkIyYkZrYVduNU1BbTdkAHQ5ZXE0WlFEUHBSSGk=
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn pres,eq,approx,sub
olcDbIndex: mail pres,eq,sub
olcDbIndex: objectClass pres,eq
olcDbIndex: loginShell pres,eq
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
olcDbMaxSize: 42949672960
structuralObjectClass: olcMdbConfig
entryUUID: 3b57a8aa-b1d8-103a-87d6-7198db52aeab
creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
createTimestamp: 20201103042439Z
olcSyncrepl: {0}rid=003 provider=ldaps://ldapserver01.somedomain.com binddn="
 cn=admin,dc=somedomain,dc=com" bindmethod=simple credentials="TestCreds" s
 earchbase="dc=somedomain,dc=com" type=refreshAndPersist timeout=0 network-t
 imeout=0 retry="30 5 300 +"
olcSyncrepl: {1}rid=004 provider=ldaps://ldapserver02.somedomain.com binddn="
 cn=admin,dc=somedomain,dc=com" bindmethod=simple credentials="TestCreds" s
 earchbase="dc=somedomain,dc=com" type=refreshAndPersist timeout=0 network-t
 imeout=0 retry="30 5 300 +"
olcMirrorMode: TRUE
entryCSN: 20210202222100.054442Z#000000#001#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20210202222100Z

olcDatabase={0}構成:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 f2b26838
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to dn.base="" by * read
olcAccess: {1}to dn.base="cn=Subschema" by * read
olcAccess: {2}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=exter
 nal,cn=auth" manage  by self write by users read by anonymous auth
olcRootDN: cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: f1608708-b1d7-103a-8934-b724f0ebd8c8
creatorsName: cn=config
createTimestamp: 20201103042234Z
olcRootPW:: e1NTSEF9dkc0ZkIyYkZrYVduNU1BbTdkAHQ5ZXE0WlFEUHBSSGk=
olcSyncrepl: {0}rid=001 provider=ldaps://ldapserver01.ugo-wallet.com binddn="
 cn=config" bindmethod=simple credentials="TestCreds" searchbase="cn=config
 " type=refreshAndPersist timeout=0 network-timeout=0 retry="30 5 300 +"
olcSyncrepl: {1}rid=002 provider=ldaps://ldapserver02.ugo-wallet.com binddn="
 cn=config" bindmethod=simple credentials="TestCreds" searchbase="cn=config
 " type=refreshAndPersist timeout=0 network-timeout=0 retry="30 5 300 +"
olcMirrorMode: TRUE
entryCSN: 20210202221926.832349Z#000000#001#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20210202221926Z

どうすればこれを解決できますか。この問題に取り組む上での助けは大歓迎です。

4

1 に答える 1