OpenLDAPでアクセス制御リストACLを設定する方法

OpenLDAPでアクセス制御リストACLを設定する方法

私はDebian Squeeze OpenLDAPを使用しています。 ACLはどこで設定できますか?指示にアクセスできますかldapmodify? Debian にはファイルがなく、フォルダをslapd.conf使用します。slapd.d

答え1

~からDebian Wiki:

バージョン 2.4.23-3 以降、OpenLDAP 設定のデフォルト値が /etc/ldap/slapd.d に変更されました。

したがって、OpenLDAP は、以下を介して独自の動的構成を許可します。'cn=構成'木。

DNを一覧表示できます。cn=構成次の内容を確認してください。

sudo ldapsearch  -Y EXTERNAL -H ldapi:/// -b cn=config dn
...
# {1}hdb, config
dn: olcDatabase={1}hdb,cn=config
...

sudo ldapsearch  -Y EXTERNAL -H ldapi:/// -b cn=config 'olcDatabase={1}hdb'

# {1}hdb, config
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=nodomain" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=nodomain" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain
olcRootPW: {SSHA}_skip_
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq

プロパティオルク訪問それはあなたが必要とするすべてです。

データベースに新しいACLルールを追加しましょう。dc=ドメインなし

ldifファイルの生成

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {3}to dn.base="cn=test,dc=nodomain" by * read

適用する:

sudo ldapmodify  -Y EXTERNAL -H ldapi:/// -f /tmp/test.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}hdb,cn=config"

望むより:

sudo ldapsearch  -Y EXTERNAL -H ldapi:/// -b cn=config 'olcDatabase={1}hdb'
...
olcAccess: {3}to dn.base="cn=test,dc=nodomain" by * read

答え2

手順は次のように非常に似ています。他の質問で説明されているようにパスワードを変更してください。

また、2つの方法があります。

1) 設定ファイルを編集します。バックエンドの構成ファイルを見つける必要があります。各ACLはolcAccess属性値として定義されます。 ACLの構文は「一般」slapd.confファイルと同じですが、各ACLの先頭に確認するACLキューにACLの「場所」を定義する数値を挿入する必要があります。

ACLエントリの例は次のとおりです。

olcAccess: {0}to * by anonymous write

2)2番目の方法:configデータベースを使用します。データベースが有効になっている場合は、configLDAPクライアントを使用してデータベースにバインドし、olcAccess各バックエンドの値を編集できます。

答え3

全体の内容はslapd.d実行時に一緒にリンクされ、一種の擬似slapd.confファイルを生成します(その説明は完全に正確ではありませんが、概念を理解しようとしています)。これは Debian の一般的な慣行であり、個人的に多くの場合に気に入っています。

slapd.d名前付きの新しいファイルを作成しacl(または同様の、他のファイルに番号プレフィックスがある場合は番号プレフィックスを含める必要があります)、ACLエントリをここに入れてから再起動しますslapd

大丈夫でしょう。 *しかし、slapdのACL構造は一般の人にとっては難しいかもしれません。仕事を間違えたり意図しないようにするのは簡単です。

*注文制限がないとします。 (私はslapdについてよくわからないので、自分で決める必要があります。)

答え4

希望のユーザーを作成します。

# vim ro_user_desc.ldif

dn: cn=ro_admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {SSHA}o3pSzVM3HXqUY6R2VHGJkJEWlwLOUH1N

userPasswordからハッシュ値を取得できますslappasswd -s your_plaintext_pass。このユーザーを作成します。

# ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f ro_user_desc.ldif

必要な役割を割り当てます。

# vim ro_access.ldif

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {3}to dn.base="dc=example,dc=com" by dn.exact="cn=ro_admin,dc=example,dc=com" read

dc=example,dc=com上記で作成したユーザーに対して、ツリー全体のリスト(読み取り専用)アクセスを有効にしました。dn: olcDatabase={1}mdb,cn=config使用する正しい住所を見つけることをお勧めします@sOliverが返信しました。。ただし、この例はMDB OpenLdapベースのものであり、HDBなどの場合は異なる可能性があることに注意してください。

最後に適用して下さい:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f ro_access.ldif

関連情報