OpenLDAP에서 액세스 제어 목록 ACL을 설정하는 방법

OpenLDAP에서 액세스 제어 목록 ACL을 설정하는 방법

저는 Debian Squeeze OpenLDAP를 사용하고 있습니다. ACL은 어디에서 설정할 수 있나요? 지침에 대한 액세스가 가능합니까 ldapmodify? 데비안에는 파일이 없으며 폴더를 slapd.conf사용합니다.slapd.d

답변1

~에서데비안 위키:

버전 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

절차는 다음과 매우 유사합니다.다른 질문에 설명된 대로 비밀번호를 변경하세요..

또한 두 가지 방법이 있습니다.

1) 구성 파일을 편집합니다. 백엔드에 대한 구성 파일을 찾아야 합니다. 각 ACL은 olcAccess속성 값 으로 정의됩니다 . ACL의 구문은 "일반" slapd.conf 파일과 동일하지만 각 ACL의 시작 부분에 확인할 ACL 대기열에서 ACL의 "위치"를 정의하는 숫자를 삽입해야 합니다.

ACL 항목의 예는 다음과 같습니다.

olcAccess: {0}to * by anonymous write

2) 두 번째 방법: config데이터베이스를 사용합니다. 데이터베이스가 활성화된 경우 configLDAP 클라이언트를 사용하여 데이터베이스에 바인딩하고 olcAccess각 백엔드의 값을 편집할 수 있습니다.

답변3

전체 내용은 slapd.d런타임 시 함께 연결되어 일종의 의사 slapd.conf파일을 생성합니다(해당 설명은 완전히 정확하지는 않지만 개념을 이해하려고 노력하고 있습니다). 이는 데비안의 일반적인 관행이며 개인적으로 많은 경우에 마음에 듭니다.

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

관련 정보