背景:公司内部开源软件及认证服务应用,需要对接ldap认证,为了保障用户数据安全,建议创建一个只读的ldap账号作对接。
操作步骤:
1、查看管理员信息
命令:
ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW
输出:
dn: olcDatabase={0}config,cn=config
olcRootDN: cn=admin,cn=config
olcRootPW: {SSHA}Nv3eVIfLIHNYMQdn8V7YRQjuzvbU4HJn
dn: olcDatabase={1}mdb,cn=config
olcRootDN: cn=admin,dc=163,dc=com
olcRootPW: {SSHA}hGr68R7N+3nT/obm8x18uEJRSGqZK00r
2、创建ldap只读账号
#密码
LDAP_READONLY_USER_PW='123456'
#Base DN
LDAP_BASE_DN='dc=163,dc=com'
cat <<EOF > ./readOnly.ldif
dn: cn=readonly,${LDAP_BASE_DN}
cn: readonly
objectClass: simpleSecurityObject
objectClass: organizationalRole
description: LDAP read only user
userPassword: ${LDAP_READONLY_USER_PW}
EOF
需要管理员密码
ldapadd -x -D cn=admin,dc=163,dc=com -w '密码' -f ./readOnly.ldif
2、配置只读账号权限
dn: olcDatabase={1}mdb,cn=config 是从1中查出的数据
LDAP_BASE_DN='dc=163,dc=com'
cat <<EOF > readonly-user-acl.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
delete: olcAccess
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=163,dc=com" write
by anonymous auth
by self write
by dn="cn=readonly,dc=163,dc=com" read
by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=163,dc=com" write by * read
EOF
ldapmodify -Y EXTERNAL -H ldapi:/// -f readonly-user-acl.ldif
注意:
1)格式中换行要注意空格。
2)使用ldapmodify命令修改优点是服务无影响,可以正常提供服务,比直接修改配置文件灵活。