快速搭建OpenLDAP环境并对接Rancher认证
简介
如果企业内部有使用LDAP进行用户身份验证,则可以通过配置Rancher与OpenLDAP服务器通信以对用户进行身份验证。
本文将介绍如何通过docker快速搭建OpenLDAP环境,并对接Rancher认证功能
主要用到两个镜像:
步骤
安装OpenLDAP服务
-
基于
osixia/openldap:1.5.0
镜像,创建OpenLDAP服务docker run -p 389:389 -p 636:636 --name openldap -itd --env LDAP_ORGANISATION="rancher" --env LDAP_DOMAIN="rancherldap.com" --env LDAP_ADMIN_PASSWORD="Rancher123" osixia/openldap:1.5.0
参数说明:
缺省ldap使用389端口,加密使用636端口
LDAP_ORGANISATION
:Organisation名称,默认是Example Inc.
LDAP_DOMAIN
:LDAP domain,例如默认是example.org
,则domain为dc=example,dc=org
LDAP_ADMIN_PASSWORD
:admin用户密码 -
创建
osixia/phpldapadmin:0.9.0
镜像,创建Web服务phpldapadmin是一个基于Web的管理LDAP的工具,可以更加直观的查看和管理LDAP信息
docker run -p 6443:443 --env PHPLDAPADMIN_LDAP_HOSTS=172.16.21.12 -itd --name phpldapadmin osixia/phpldapadmin:0.9.0
参数说明:
PHPLDAPADMIN_LDAP_HOSTS
:LDAP服务地址,这里如果是将openLDAP容器启动在相同主机上则填写本机的IP地址即可 -
docker-compose(可选)
也可以通过docker-compose去创建OpenLDAP环境
version: '2.3' services: openldap: image: osixia/openldap:1.5.0 container_name: openldap restart: always environment: - LDAP_ORGANISATION=rancher - LDAP_DOMAIN=rancherldap.com - LDAP_ADMIN_PASSWORD=Rancher123 ports: - 389:389 - 636:636 volumes: - ./slapd:/etc/ldap/slapd.d - ./data:/var/lib/ldap phpldapadmin: image: osixia/phpldapadmin:0.9.0 container_name: phpldapadmin restart: always environment: - PHPLDAPADMIN_LDAP_HOSTS=openldap links: - openldap:openldap depends_on: - openldap ports: - 6443:443 volumes: - ./phpldapadmin-certs:/container/service/phpldapadmin/assets/apache2/certs
将上诉文件保存到
docker-compose.yml
中,然后执行docker-compose up -d
命令即可运行成功后,会在跟
docker-compose.yml
文件相同的目录下创建三个目录slapd
、data
、phpldapadmin-certs
默认admin domain账号为:
cn=admin,dc=rancherldap,dc=com
,密码为:Rancher123
-
进入openldap容器中,执行
ldapsearch
命令尝试搜索docker exec openldap ldapsearch -x -H ldap://localhost -b dc=rancherldap,dc=com -D "cn=admin,dc=rancherldap,dc=com" -w Rancher123
可以得到如下输出结果,则说明部署成功
# extended LDIF # # LDAPv3 # base <dc=rancherldap,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # rancherldap.com dn: dc=rancherldap,dc=com objectClass: top objectClass: dcObject objectClass: organization o: rancher dc: rancherldap # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
基于phpldapadmin的web工具创建用户
浏览器访问:https://<IP>:6443
,点击左侧login登录
其中账号密码如下:
cn=admin,dc=rancherldap,dc=com
Rancher123
登录进去后,可以看到domain相关信息
创建Organisational Unit
点击dc=rancherldap,dc=com
,在其目录下点击Create a child entry
创建子条目
点击 Generic: Organisational Unit
填写OU名称,例如这里填写rancher,填好之后点击Create Object
创建该对象
点击Commit二次确认
创建成功后,就可以在左侧中看到我们创建的OU对象
创建Group
在ou=rancher
下,点击Create a child entry
创建子条目,点击 Generic: Posix Group
创建Group对象
填写Group名称,例如这里填写group
,
填好之后点击Create Object
创建该对象,点击Commit二次确认,创建成功后,就可以在左侧中看到我们创建的Group对象
创建User
在cn=group
下,点击Create a child entry
创建子条目,点击 Generic: User Account
创建User对象
填写对应的user信息,填写First name和Last name,会自动生成Common Name和User ID,其中UserID为后续Rancher登录的用户名
填写Password,后续登录Rancher使用该密码
选择刚刚创建的group
填好之后点击Create Object
创建该对象,点击Commit二次确认,创建成功后,就可以在左侧中看到我们创建的USer对象
同理,我们用相同的方法再创建一个test用户
对接Rancher认证
对接OpenLDAP
在Rancher UI中,点击 全局-安全-认证,选择OpenLDAP
参数说明:
主机名或 IP 地址
:OpenLDAP服务器的IP地址
端口
:默认端口是389
服务帐户专有名称
:cn=admin,dc=rancherldap,dc=com
,这里填写admin用户的domain
服务账号密码
:admin用户的密码
用户搜索起点
:例如刚刚创建的OU为rancher,则这里的搜索起点为ou=rancher,dc=rancherldap,dc=com
用户名
:这个用户会成为管理员,用户名需要基于User Name
填写,例如我们刚刚创建的adminuser,则这里填写auser
密码
:该用户的密码
参数填写完之后,点击启用OpenLDAP认证,开启OpenLDAP认证
测试LDAP用户登录
登录成功,默认该用户没有权限