Docker composer 容器化部署 openldap.
动机
我们目前还没有统一的账号认证系统,目前先用openldap搭建一套,后面如果需要用oauth2或者oidc认证再考虑去怎么替换,先把认证体系搭起来先。
部署步骤
创建以下目录
1
2
3
4
5
6
7
8
9
10
|
# docker compose 文件目录
/data/servers/openldap
#持久化数据
/data1/storage/openldap/ldap
/data1/storage/openldap/slapd.d
# ssl证书,目前没用到
/data1/storage/openldap/certs
|
docker-compose.yml
openldap 就是服务主体
phpldapadmin ui管理界面
self-service-password 自助改密
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
services:
openldap:
image: 192.168.2.221:80/devops/openldap:1.5.0
container_name: openldap
restart: always
environment:
LDAP_LOG_LEVEL: "256"
LDAP_ORGANISATION: "yourorg"
LDAP_DOMAIN: "yourorg.com.cn"
LDAP_BASE_DN: "dc=yourorg,dc=com,dc=cn"
LDAP_ADMIN_PASSWORD: "xxx"
LDAP_CONFIG_PASSWORD: "xxx"
LDAP_READONLY_USER: "false"
LDAP_RFC2307BIS_SCHEMA: "false"
LDAP_BACKEND: "mdb"
LDAP_REPLICATION: "false"
KEEP_EXISTING_CONFIG: "false"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
tty: true
stdin_open: true
volumes:
- /data1/storage/openldap/ldap:/var/lib/ldap
- /data1/storage/openldap/slapd.d:/etc/ldap/slapd.d
- /data1/storage/openldap/certs:/container/service/lapd/assets/certs
ports:
- "389:389"
- "636:636"
hostname: "ldap-server"
phpldapadmin:
image: 192.168.2.221:80/devops/phpldapadmin:latest
container_name: phpldapadmin
restart: always
environment:
PHPLDAPADMIN_LDAP_HOSTS: "192.168.2.205"
PHPLDAPADMIN_HTTPS: "false"
ports:
- "50081:80"
depends_on:
- openldap
self-service-password:
container_name: self-service-password
image: tiredofit/self-service-password:latest
restart: always
ports:
- "50080:80"
environment:
- LDAP_SERVER=ldap://openldap:389
- LDAP_BINDDN=cn=admin,dc=yourorg,dc=com,dc=cn
- LDAP_BINDPASS=xxx
- LDAP_BASE_SEARCH=dc=yourorg,dc=com,dc=cn
- MAIL_FROM=smtp.163.com
- MAIL_FROM_NAME=账号自助服务平台
- SMTP_DEBUG=0
- SMTP_HOST=smtp.163.com
- SMTP_USER=[email protected]
- SMTP_PASS=xxx
- SMTP_PORT=465
- SMTP_SECURE_TYPE=ssl
- SMTP_AUTH_ON=true
- NOTIFY_ON_CHANGE=true
volumes:
- /etc/localtime:/etc/localtime
- /data1/storage/self-service-password/htdocs:/www/ssp
- /data1/storage/self-service-password/logs:/www/logs
|
ldap管理
创建用户组有2种方式:
-
Posixgroup用户组
-
GroupOfUniqueNames用户组
第一种比较简单,比较适合一些轻量的配置,能满足大部分场景。
第二种相对复杂一点,对于 jira、confluence 或者 rancher 等这种就不太适合用第一种。
登录 phpldapadmin
用户:cn=admin,dc=yourorg,dc=com,dc=cn
为了方便以后的管理,目录树结构我设置为如下,groups 和 users ,匹配用户和组的查询语句直接就去对应的 ou 里面去查找,方便快捷。
PosixGroup
在对应的目录下,选择 Create a child entry –> Generic: Posix Group –> 填写组的名字,提交即可 。
选择该组,点击 Add new attribute 添加属性,选择 memberUid ,将用户加入到 memberUid ,这种用户组,能满足大部分场景。
GroupOfUniqueNames
在对应的目录下,选择 Create a child entry –> Default –> 选 groupOfUniqueNames –> 如下,只填前面 3 项,其他默认即可 。
如果想添加新的成员,如下即可。
最后
为什么记录这个,是因为我之前没有完整部署过一套ldap,很多东西都不知道,比如上面的2种组,在对接 rancher 和 confluence 的时候,就经常各种问题,经查资料后得知是使用 GroupOfUniqueNames 这种方式后,很快就把问题解决了。
参考文档:
https://blog.csdn.net/weixin_44729138/article/details/135174020
https://cloud.tencent.com/developer/article/2303220