unvdb开启ldap认证方式
概述
unvdb使用LDAP认证,简单说就是将用户名和密码存储在LDAP服务器上,unvdb数据库必须有相同的用户(用户名称相同,密码可以不同),当数据库客户端登录数据库时,数据库服务器不使用本地的密码校验机制而是去请求LDAP服务器验证用户名密码是否正确,正确则登录成功,失败则登录失败。
LDAP是运行于unvdb数据库之外的独立的服务,可以与unvdb数据库运行于同一主机上,也可以单独运行于其他地方,unvdb通过网络访问LDAP服务器。
搭建LDAP服务
使用docker搭建LDAP服务
由于docker源不可用的问题,我这里直接使用下载好的镜像
导入镜像
docker load -i openldap-x86_64.tar
docker load -i phpldapadmin-x86_64.tar
[root@x98 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
phpldapadmin x86_64 dbb580facde3 3 years ago 309MB
openldap x86_64 31d1d6e16394 3 years ago 257MB
导入完毕后创建容器
创建openldap容器
docker run \
-d \
-p 389:389 \
-p 636:636 \
-v /data/openldap/local:/usr/local/ldap \
-v /data/openldap/lib:/var/lib/ldap \
-v /data/openldap/slapd.d:/etc/ldap/slapd.d \
--env LDAP_ORGANISATION="Manager" \
--env LDAP_DOMAIN="example.com" \
--env LDAP_ADMIN_PASSWORD="123456" \
--name openldap \
--hostname openldap-host\
--network bridge \
openldap:x86_64
#p 389:389 TCP/IP访问端口
#p 636:636 SSL连接端口
#name openldap 容器名称为openldap
#network bridge 连接默认的bridge网络
#hostname openldap-host 设置容器主机名称为 openldap-host
#env LDAP_ORGANISATION=“Manager” 配置LDAP组织名称
#env LDAP_DOMAIN=“example.com” 配置LDAP域名
#env LDAP_ADMIN_PASSWORD=“123456” 配置LDAP密码
docker run \
-p 10001:80 \
--privileged \
--name phpldapadmin \
--env PHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=192.168.4.98 \
--detach phpldapadmin:x86_64
#privileged 特权模式启动(使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。)
#env PHPLDAPADMIN_HTTPS=false 禁用HTTPS
#env PHPLDAPADMIN_LDAP_HOSTS =192.168.0.160 安装和运行docker的电脑IP地址,这里需要修改为你的IP
现在ldap和phpladpadmin已经运行起来了,查看运行情况
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
277c8f7de6b8 phpldapadmin:x86_64 "/container/tool/run" 21 minutes ago Up 21 minutes 443/tcp, 0.0.0.0:10001->80/tcp phpldapadmin
060d8fa3a696 openldap:x86_64 "/container/tool/run" 21 minutes ago Up 21 minutes 0.0.0.0:389->389/tcp, 0.0.0.0:636->636/tcp openldap
在浏览器中输入 http://192.168.4.98:10001
可以看到以下内容
配置LDAP
登录LDAP管理系统,依次创建管理组织->用户组->用户:
到这里就以经配置完毕了,如果你想多增加几个用户,在ou=users 下继续新增Generic: User Account。
配置unvdb
vim ../data/ud_hba.conf
host all all 0.0.0.0/0 ldap ldapserver=192.168.44.98 ldapport=389 ldapbasedn="dc=example,dc=com" ldapbinddn="cn=admin,dc=example,dc=com" ldapbindpasswd=123456
systemctl restart unvdb
验证登录
#我之前设置密码的是1
[root@x98 ~]# ud_sql -U unvdb -h 192.168.4.98 -p 5679
Password for user unvdb: 输入之前设置的密码
ud_sql (24.2)
Type "help" for help.
unvdb=# unvdb=# alter user unvdb password '123';
ALTER ROLE
unvdb=# \q
#使用修改后的123密码测试登录
[root@x98 ~]# ud_sql -U unvdb -h 192.168.4.98 -p 5679
Password for user unvdb:
ud_sql: error: connection to server at "192.168.4.98", port 5679 failed: FATAL: LDAP authentication failed for user "unvdb"
#登录失败
#使用原始密码测试登录
[root@x98 ~]# ud_sql -U unvdb -h 192.168.4.98 -p 5679
Password for user unvdb:
ud_sql (24.2)
Type "help" for help.
unvdb=#