Docker 安装LDAP(企业级统一账号配置系统)
- 背景
- 1、LDAP 简介
- 2、LDAP部署
- 2.1、LDAP Compose编排
- 2.2、镜像
- 2.2.1、拉镜像
- 2.2.2、镜像包
- 2.3、起容器
- 2.3.1、创建编排文件
- 2.3.2、起容器
- 3、验证
背景
在企业数字世界里,每个员工都需要登录邮箱、系统、Wi-Fi等多把“钥匙”。如果每把钥匙都要单独配制,管理将无比混乱。LDAP就像一位智能管家,它制作一把“万能钥匙”(统一账号密码),让你畅通所有授权区域,极大简化了登录与管理。
1、LDAP 简介
LDAP到底是啥?—— 您公司里的“统一账户管理中心”
想象一下,你在一家大公司上班。
周一早上,你打开电脑,需要输入密码登录Windows系统;然后打开公司邮箱,又得输一遍密码;接着要连公司Wi-Fi,再输一次;想用一下内部的报销系统,好家伙,还得输密码!
是不是很烦?而且对公司的网管大叔来说更是个噩梦:如果有100个员工,每个人要记4个密码,那他就要管理400个账户。万一有人离职了,他得记得把这一个人的所有账户在四个系统里全都删掉,万一漏了一个,就可能有安全风险。
这个时候,LDAP就来拯救大家了!
LDAP(轻型目录访问协议),你可以把它通俗地理解成公司内部的一个 “统一的通讯录” 或者 “万能账号本”。
这个“通讯录”里不光有每个人的电话、部门,更重要的,它存着你的一套统一的用户名和密码,以及你能访问哪些系统的权限清单。
它是怎么工作的呢?很简单:
你只记一套密码:就像只用一把万能钥匙。
当你登录任何一个公司系统(比如电脑、Wi-Fi、邮箱)时,那个系统不会自己判断你对不对,而是会跑去问LDAP服务器:“喂,老兄,看看这个叫‘张三’的,密码是‘123456’,对不对?他有没有权限登录我啊?”
LDAP服务器一查自己的“账号本”:“嗯,密码对的,而且我这儿记录着他确实是IT部的,可以登录邮箱和Wi-Fi。批准!”
于是,“叮”的一声,你就顺利登录了。
所以,LDAP起的作用就是:
对员工(你)来说:省事! 再也不用记一大堆密码了,一次登录,畅通无阻。
对公司(网管)来说:省心又安全!
只需要在LDAP这一个地方,给新员工创建一个账号、分配好权限;员工离职时,直接在这个账号本上给他画个叉,他就所有系统都登不上了,管理起来非常方便,避免了安全漏洞。
总结一下:
LDAP就像是一个公司的“后台大总管”。所有需要账号密码的地方,都归它管。它建立了一套统一的标准,让所有的软件和系统都知道该去找谁验证身份。
你下次如果再遇到一家公司,发现用一个账号密码就能登录所有内部系统,那背后默默干活儿的,十有八九就是LDAP这位“深藏功与名”的超级管家了!
2、LDAP部署
2.1、LDAP Compose编排
docker compose 编排文件,方便快捷的部署容器,编排内容如下,多瞧瞧注释,起容器很细节都在这些点上。
services:openldap: #容器一,ldap基础服务image: osixia/openldap:latestcontainer_name: openldapenvironment:LDAP_LOG_LEVEL: "256"LDAP_ORGANISATION: "Focus"LDAP_DOMAIN: "test.com.cn"LDAP_BASE_DN: "dc=test,dc=com,dc=cn" #Ldap初始根目录LDAP_ADMIN_PASSWORD: "qwer1234" #管理密码,超管账号会是:cn=admin,dc=test,dc=com,dc=cnLDAP_CONFIG_PASSWORD: "config"LDAP_READONLY_USER: "false"LDAP_RFC2307BIS_SCHEMA: "false"LDAP_BACKEND: "mdb"LDAP_TLS: "true"LDAP_TLS_CRT_FILENAME: "ldap.crt"LDAP_TLS_KEY_FILENAME: "ldap.key"LDAP_TLS_CA_CRT_FILENAME: "ca.crt"LDAP_TLS_ENFORCE: "false"LDAP_TLS_CIPHER_SUITE: "SECURE256:-VERS-SSL3.0"LDAP_TLS_PROTOCOL_MIN: "3.1"LDAP_TLS_VERIFY_CLIENT: "try"LDAP_REPLICATION: "false"KEEP_EXISTING_CONFIG: "false"LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"LDAP_SSL_HELPER_PREFIX: "ldap"tty: truestdin_open: truevolumes:- /data/apps/openldap/var/lib/ldap:/var/lib/ldap- /data/apps/openldap/etc/ldap/slapd.d:/etc/ldap/slapd.d- /data/apps/openldap/container/service/slapd/assets/certs:/container/service/slapd/assets/certsports:- "389:389"- "636:636"domainname: "hunwei.top" #可以设计一个域名,个人随便都行,真实如果使用域名访问,就用这个。hostname: "hunwei.top" #可以设计一个主机名,随便都行phpldapadmin: # 容器二,ldap管理平台image: osixia/phpldapadmin:latestcontainer_name: phpldapadminenvironment:PHPLDAPADMIN_LDAP_HOSTS: "openldap"PHPLDAPADMIN_HTTPS: "false"ports:- "6443:80"depends_on:- openldapssp-app: # 容器三,ldap密码自助服务image: registry.cn-hangzhou.aliyuncs.com/eryajf/self-service-passwordcontainer_name: ssp-appvolumes:- /data/apps/ssp/ssp:/www/ssp- /data/apps/ssp/logs:/www/logsports:- 6445:80environment:- LDAP_SERVER=ldap://192.168.1.122:389 #这里可以使用域名访问,也可以使用ip访问,安装ldap的宿主机IP- LDAP_STARTTLS=false- LDAP_BINDDN=cn=admin,dc=test,dc=com,dc=cn #ldap超管账号- LDAP_BINDPASS=qwer1234- LDAP_BASE_SEARCH=dc=test,dc=com,dc=cn- LDAP_LOGIN_ATTRIBUTE=uid- LDAP_FULLNAME_ATTRIBUTE=cn- ADMODE=false- AD_OPT_FORCE_UNLOCK=false- AD_OPT_FORCE_PWD_CHANGE=false- AD_OPT_CHANGE_EXPIRED_PASSWORD=false- SAMBA_MODE=false- SHADOW_OPT_UPDATE_SHADOWLASTCHANGE=false- PASSWORD_HASH=MD5- PASSWORD_MIN_LENGTH=6- PASSWORD_MAX_LENGTH=30- PASSWORD_MIN_LOWERCASE=2- PASSWORD_MIN_UPPERCASE=1- PASSWORD_MIN_DIGIT=1- PASSWORD_MIN_SPECIAL=0- PASSWORD_NO_REUSE=true- PASSWORD_SHOW_POLICY=never- PASSWORD_SHOW_POLICY_POSITION=above- WHO_CAN_CHANGE_PASSWORD=user- QUESTIONS_ENABLED=false- LDAP_MAIL_ATTRIBUTE=mail- MAIL_FROM=530623756@qq.com- MAIL_FROM_NAME=Password Reset- NOTIFY_ON_CHANGE=true- SMTP_DEBUG=0- SMTP_HOST=smtp.qq.com #smtp服务,要使用自己的- SMTP_AUTH_ON=true- SMTP_USER=530623756@qq.com #smtp服务账号- SMTP_PASS=wyeennefrzunbjcg #smtp服务账号密码- SMTP_PORT=465- SMTP_SECURE_TYPE=ssl- SMTP_AUTOTLS=false- USE_SMS=false- IS_BEHIND_PROXY=true- SHOW_HELP=true- LANG=en- DEBUG_MODE=false- SECRETEKEY=secretkey- USE_RECAPTCHA=false- RECAPTCHA_PUB_KEY=akjsdnkajnd- RECAPTCHA_PRIV_KEY=aksdjnakjdnsa- DEFAULT_ACTION=change
编排内容转换成具体编排文件,见2.3.1,不过不着急,一步一步操作下去才最好。
2.2、镜像
2.2.1、拉镜像
通过编排文件里面可以看出需要拉取三个镜像
osixia/openldap:latest
osixia/phpldapadmin:latest
registry.cn-hangzhou.aliyuncs.com/eryajf/self-service-password
运行编排文件起容器时,会自动拉取镜像,但为了防止起容器时日志太多导致新手不知道什么问题,这边我们先执行这三个镜像的拉取。一般来说,现在这个时间,电脑没有在国外,docker镜像拉取,必定会失败。如下三个图片;
看得出来,三个镜像下载都失败了。如果是国外用户可以拉下来,国内就不一定了,具体原因这里不过多说明,可自行上网查询,本文提供解决方案,见下个小节:2.2.2
2.2.2、镜像包
这三个镜像包,我已存好,下载链接:
https://download.csdn.net/download/weixin_40331132/91746058
1、包解压使用
解压后,得到三个tar.gz包
将三个tar.gz包上载到部署ldap的宿主机
2、 加载Openldap
使用命令加载openldap镜像,命令:
docker load -i openldap.tar.gz
查看加载的镜像,此时镜像还没有名称版本
docker images
给镜像命名与版本
docker tag 31d1d6e16394 osixia/openldap:latest #31d1d6e16394是镜像名称,具体自己的镜像id是什么就是什么
#通过docker iamges 查看是否命名成功
3、加载phpldapadmin
使用命令加载phpldapadmin镜像,命令:
docker load -i phpldapadmin.tar.gz #加载
可以看出加载成功,使用docker images查看,Images id对上了,只是没有镜像名与版本
给镜像命名与版本
docker tag dbb580facde3 osixia/phpldapadmin:latest #dbb580facde3是镜像名称,具体自己的镜像id是什么就是什么
#通过docker iamges 查看是否命名成功
4、加载self-service-password
使用命令加载phpldapadmin镜像,命令:
docker load -i self-service-password.tar.gz #加载
可以看出加载成功,使用docker images查看,Images id对上了,只是没有镜像名与版本
给镜像命名与版本
docker tag 0c82d11421f1 registry.cn-hangzhou.aliyuncs.com/eryajf/self-service-password #0c82d11421f1是镜像名称,具体自己的镜像id是什么就是什么。这里会发现一个小细节,我们只给了名称,没有给版本,它会自动给上latest版本号
#通过docker iamges 查看是否命名成功
好了,三个镜像全部加载并命名成功,可以使用docker compose编排文件快速起容器了。
2.3、起容器
起容器前,先回看2.1的编排文件,里面的注释内容都是要自己根据自己的需要,自已填写的,如密码,如ip,一定要填写正确,不正确,将无法运行。
2.3.1、创建编排文件
1、进入宿主机,创建一个ldap目录,进入到这个目录,新增一个compose.yaml编排文件,vi这个文件,按i插入2.1中的编排内容,记得相关信息要维护好
都是linux操作的基础,这里便不做多的述说,具体命令如下图:
使用cat compose.yaml查看编排文件,一切正常后,便可以开始起容器了
2.3.2、起容器
1、进入到ldap目录,输入命令
docker compose up -d #运行容器编排,默认读取当前目录下的compose.yaml文件,也可以指定文件,这个可自行研究。
通过 docker ps查看容器启动情况,端口都出现了,表示启动成功。
如果这里没有启动成功,可以先查看编排文件里的内容是否正确,如果正常,可以私聊我来解决。
3、验证
phpldapadmin是管理服务,使用这个验证,
它的容器映射出来的接口是6443,宿主机的ip是192.168.1.122(这个各位看自己的宿主机ip地址即可,编排文件里面也用到过)
所以在浏览器里输入 192.168.1.122:6443
打开如下图
点击 login,输入账号密码,编排文件里面有给出,点击Authenticate,登录成功,出现下图页面,验证了LDAP安装完美成功,可以进行企业域账号管理了
域名创建细节,见下一个博客。