基于Docker部署OpenLDAP,同时集成第三方系统(GitLab、JIRA等)


这里可以了解什么是LDAP,为什么要用它>>>

一、通过docker-compose部署open-ldap

下面通过docker-compose一键部署openLDAP、phpldapadmin和self-service-password。(通过K8s部署的方式大同小异)

准备open-ldap的docker-compose文件

version: '2'
services:openldap:image: osixia/openldap:1.5.0  ### 如果有私有仓库可以从自己的私有仓库拉取镜像container_name: openldaprestart: alwaysenvironment:LDAP_LOG_LEVEL: "256"LDAP_ORGANISATION: "xxx"   ### 您的组织名称LDAP_DOMAIN: "zaq.test"    ### 公司域名LDAP_BASE_DN: "dc=zaq,dc=test"   ### 根据域名组成LDAP_ADMIN_PASSWORD: "XXX"   ### 密码自己来设置LDAP_CONFIG_PASSWORD: "XXX"LDAP_READONLY_USER: "false"#LDAP_READONLY_USER_USERNAME: "readonly"#LDAP_READONLY_USER_PASSWORD: "readonly"LDAP_RFC2307BIS_SCHEMA: "false"LDAP_BACKEND: "mdb"#LDAP_TLS: "true"#LDAP_TLS_CRT_FILENAME: "zaq.test.pem"#LDAP_TLS_KEY_FILENAME: "zaq.test.key"#LDAP_TLS_DH_PARAM_FILENAME: "dhparam.pem"#LDAP_TLS_CA_CRT_FILENAME: "ca.crt"#LDAP_TLS_ENFORCE: "false"#LDAP_TLS_CIPHER_SUITE: "SECURE256:-VERS-SSL3.0"# LDAP_TLS_VERIFY_CLIENT: "demand"LDAP_REPLICATION: "false"#LDAP_REPLICATION_CONFIG_SYNCPROV: 'binddn="cn=admin,cn=config" bindmethod=simple credentials="$$LDAP_CONFIG_PASSWORD" searchbase="cn=config" type=refreshAndPersist retry="60 +" timeout=1 starttls=critical'#LDAP_REPLICATION_DB_SYNCPROV: 'binddn="cn=admin,$$LDAP_BASE_DN" bindmethod=simple credentials="$$LDAP_ADMIN_PASSWORD" searchbase="$$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10 retry="60 +" timeout=1 starttls=critical'#LDAP_REPLICATION_HOSTS: "#PYTHON2BASH:['ldap://ldap.example.org','ldap://ldap2.example.org']"KEEP_EXISTING_CONFIG: "false"LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"#LDAP_SSL_HELPER_PREFIX: "ldap"tty: truestdin_open: truevolumes:- /opt/openldap/ldap:/var/lib/ldap- /opt/openldap/slapd.d:/etc/ldap/slapd.d- /opt/openldap/certs:/container/service/lapd/assets/certsports:- "389:389"- "636:636"# For replication to work correctly, domainname and hostname must be# set correctly so that "hostname"."domainname" equates to the# fully-qualified domain name for the host.domainname: "zaq.test"hostname: "ldap-server"phpldapadmin:image: osixia/phpldapadmin:latestcontainer_name: phpldapadminrestart: alwaysenvironment:PHPLDAPADMIN_LDAP_HOSTS: "openldap"   ### 如果部署后登录不进去有可能是这里出了问题,直接换为部署openldap服务的公网IP试试PHPLDAPADMIN_HTTPS: "false"ports:- "50081:80"depends_on:- openldapself-service-password:container_name: self-service-passwordimage: tiredofit/self-service-password:latestrestart: alwaysports:- "50080:80"environment:- LDAP_SERVER=ldap://openldap:389- LDAP_BINDDN=cn=admin,dc=zaq,dc=test- LDAP_BINDPASS=XXXX- LDAP_BASE_SEARCH=dc=zaq,dc=test- MAIL_FROM=it@open.com- MAIL_FROM_NAME=账号自助服务平台- SMTP_DEBUG=0- SMTP_HOST=smtp.qiye.aliyun.com- SMTP_USER=it@open.com- SMTP_PASS=jYda52VZ8Ftw1111- SMTP_PORT=465- SMTP_SECURE_TYPE=ssl- SMTP_AUTH_ON=true- NOTIFY_ON_CHANGE=truevolumes:- /etc/localtime:/etc/localtime- /opt/openldap/self-service-password/htdocs:/www/ssp- /opt/openldap/self-service-password/logs:/www/logsdeploy:resources:limits:memory: 2Greservations:memory: 512M

执行docker-compose up命令,就可以一键部署openldap、phpldapadmin(他就是openldap的操作页面)、self-service-password(用户用来修改密码的操作页面)。

接下来可以通过访问IP:50081访问phpldapadmin了。账号就是cn=admin,dc=zaq,dc=test,密码就是通过LDAP_ADMIN_PASSWORD设置的。

二、操作指南

这里先在dc下面创建一个ou=group和一个ou=user。暂时先不按部分区分,如果想再按部分区分则就先创建一个ou,再在该ou下创建一个ou=group即可。

创建ou


创建Group

在ou=group下创建dev

创建User Account

在ou=people下创建用户

填写用户信息

为用户填写其他属性

为用户添加真实姓名和邮箱(有些系统需要用户的这两个信息!比如gitlab)

效果如下:


LDAP统一账号管理——与第三方集成

一、LDAP和JRIA的集成

  1. 登录进JRIA的控制台(需要是管理员身份)
  2. 点击:配置—>用户管理—>用户目录—>添加目录—>LDAP


特别解释几个属性的含义:

  • LDAP模式

    • “基础DN” 填写LDAP的根节点,类似dc=zaq,dc=test;
    • “附加用户DN” 填写限制用户搜索范围的值,类似ou=people,不填的话从基础DN开始搜索;
    • “附加组DN” 填写限制用户组搜索范围的值,和上一项类似;
  • LDAP权限
    • 只读:JIRA只能从LDAP中读取用户以及用户组信息,所有对用户及用户组的修改不能通过JIRA进行。
    • 本地只读:相比只读来说,可以在JIRA中添加组,并且会将LDAP同步过来的用户加入到该组中。
    • 读写:不但可以读取LDAP上的用户及组信息,还可以通过JIRA修改这些信息,这些信息会自动同步到LDAP。

二、LDAP和Confluence的集成

右上角设置 → 用户管理 → 用户目录 → 添加目录 → LDAP

接下来的流程和JIRA一模一样。(这里也可以直接让JIRA和Confluence联动,就只需要配置好JIRA的LDAP就行了)

三、LDAP和GitLab的集成

找到gitlab的配置文件:/etc/gitlab/gitlab.rb,然后修改下面的内容

### LDAP Settings
###! Docs: https://docs.gitlab.com/omnibus/settings/ldap.html
###! **Be careful not to break the indentation in the ldap_servers block. It is
###!   in yaml format and the spaces must be retained. Using tabs will not work.**gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = false###! **remember to close this block with 'EOS' below**gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'main: # 'main' is the GitLab 'provider ID' of this LDAP serverlabel: 'LDAP'host: 'xx.xx.xx.xx'  ### LDAP服务地址port: 389uid: 'uid'   ### 指定登录gitlab使用LDAP的哪个字段作为账号bind_dn: 'cn=admin,dc=zaq,dc=test'  ### 这里用自己的管理员账号(需要一个有read权限的账号验证通过后搜索用户输入的用户名是否存在)password: 'XXX'encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
#     verify_certificates: true
#     smartcard_auth: falseactive_directory: false       ### 如果是 Active Directory LDAP server 则设为trueallow_username_or_email_login: true  ### 是否允许email登录
#     lowercase_usernames: false    ### 是否将用户名转为小写block_auto_created_users: false   ### 是否自动创建用户。如果设置为true则自动注册的账户是被锁定的,需要管理员账户手动的为这些账户解锁,因此此处将其设置为false。当设置为false的时候,就需要保证,对于第三方登录的用户完全可控。base: 'ou=people,dc=zaq,dc=com'   ### 从哪个位置搜索用户,这里填自己的user_filter: ''     ### 表示以某种过滤条件筛选用户,比如我们只希望组为gitlab的用户来访问GitLab,则这里可以设置为:memberOf=ou=gitlab,ou=people,dc=zaq,dc=com
#    attributes:    # LDAP 中用户的属性
#      username: ['uid', 'userid', 'sAMAccountName']
#      email: ['mail', 'email', 'userPrincipalName']
#      name: 'cn'
#      first_name: 'givenName'
#      last_name:  'sn'## EE onlygroup_base: ''admin_group: ''sync_ssh_keys: falseEOS

修改完后重启GitLab!最后最好再取消GitLab的注册功能,新用户只能通过 LDAP 认证的方式进行登陆。

拉取代码时要用LDAP创建的账号密码拉取。

四、LDAP和Nexus的集成

  1. 登录管理员账号
  2. 配置完后别忘了Users中选中LDAP用户,为LDAP用户分配角色

五、LDAP和Harbor的集成

特别注意:在没有添加任何用户之前,你可以修改认证模式(Database模式或者LDAP模式), 但当Harbor系统中已经有至少一个用户之后(除了admin用户外),将不能够修改认证模式。

新版本的可以直接在页面进行修改,如下:

登录管理员账户,选中配置管理

如果是老版本,则需要修改harbor.cfg文件,如下:

##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
auth_mode = ldap_auth#The url for an ldap endpoint.
ldap_url = xx.xx.xx.xx#A user's DN who has the permission to search the LDAP/AD server.
#If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.
ldap_searchdn = cn=admin,dc=zaq,dc=test#the password of the ldap_searchdn
ldap_search_pwd = xxx#The base DN from which to look up a user in LDAP/AD
ldap_basedn = dc=zaq,dc=com#Search filter for LDAP/AD, make sure the syntax of the filter is correct.
#ldap_filter = (objectClass=person)# The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD
ldap_uid = uid#the scope to search for users, 0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE
ldap_scope = 2#Timeout (in seconds)  when connecting to an LDAP Server. The default value (and most reasonable) is 5 seconds.
ldap_timeout = 5#Verify certificate from LDAP server
ldap_verify_cert = true#The base dn from which to lookup a group in LDAP/AD
ldap_group_basedn = ou=IT,dc=shileizcc,dc=com#filter to search LDAP/AD group
ldap_group_filter = objectclass=group#The attribute used to name a LDAP/AD group, it could be cn, name
ldap_group_gid = cn#The scope to search for ldap groups. 0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE
ldap_group_scope = 2

基于Docker部署OpenLDAP,同时集成第三方系统(GitLab、JIRA、Nexus、Harbor)相关推荐

  1. 基于docker部署 opentsdb + grafana数据监控系统

    文章目录 0 前言 1 docker opentsdb部署 2 docker grafana部署 3 python client写入方案 4 数据持久化方案 5 云服务器部署踩坑事项 参考材料 0 前 ...

  2. 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth

    为什么80%的码农都做不了架构师?>>>    前言 微服务架构中完成一项功能经常会在多个服务之间远程调用(RPC),形成调用链.每个服务节点可能在不同的机器上甚至是不同的集群上,需 ...

  3. 【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

    [云原生之Docker实战]使用docker部署Monica个人开源CRM系统 一.Monica介绍 1.Monica简介 2.Monica特点 二.检查本地docker状态 1.检查docker版本 ...

  4. 推荐一款基于docker部署的个人免费笔记工具wiznote

    推荐一款基于docker部署的个人免费笔记工具wiznote 作为一个爱写作爱折腾的程序员,在做某个事情的时候,脑子里总是会联想并且不断蹦出各种奇怪的创意和想法,但是这些想法很多时候都是一闪而逝,事情 ...

  5. 基于Docker构建-NET持续集成环境

      最近在考虑将整个项目组的产品,努力向着持续集成(CI)/持续部署(CD)的方向靠拢,因为目前我们仅仅实现了基于Docker的自动化部署,而部署包的构建依然依赖于人工打包,而每个版本的测试和部署,基 ...

  6. 基于 Docker 打造前端持续集成开发环境

    知乎: https://zhuanlan.zhihu.com/p/37961402 本文将以一个标准的 Vue 项目为例,完全抛弃传统的前端项目开发部署方式,基于 Docker 容器技术打造一个精简的 ...

  7. 云计算入门科普系列:基于Docker部署LNMP架构

    一. 什么是 docker  环境配置的难题  软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?  用户必须保证两件事:操作系统的设置,各种 ...

  8. 基于Docker部署LNMP架构

    一. 什么是 docker  环境配置的难题  软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?  用户必须保证两件事:操作系统的设置,各种 ...

  9. Docker部署OpenLDAP

    LDAP说明 什么是LDAP? 轻型目录访问协议(Lightweight Directory Access Protocol,LDAP):是一个开放的.中立的.业标准的应用协议,通过IP协议提供访问控 ...

  10. Rocketmq基于docker部署并在Springboot中接入

    服务器部署 关于在服务器上安装docker并启动守护进程,这里不再赘述,此处假设服务器已经安装完成docker. 安装并运行nameserver docker run -d -p 9876:9876 ...

最新文章

  1. matplotlib绘图库入门
  2. 实战SSM_O2O商铺_17【商铺编辑】Dao层开发
  3. PHP中类明明存在 但class_exists 确检测不到的坑: 使用完整命名空间
  4. [python]如何清屏?也就是实现clear?
  5. Java学习笔记2——常用类
  6. mathematica打包java_使用Mathematica将解决方案绘制到方程式中
  7. Word 2010—样式集
  8. 深度学习在视频动作识别中的应用
  9. wegame开dnf正在连接服务器,DNF安装wegame后显示无网络连接状态解决办法
  10. 【多目标跟踪论文阅读笔记——JDE(Towards Real-Time Multi-Object Tracking)】
  11. oracle存货转资产,存货转固定资产账务处理
  12. ROS2系列知识【5】:从海龟教程开始【1】
  13. 大白小课程-跟着官方教程学习Scratch3.0-P04制作音乐
  14. AMiner会议论文推荐第三十五期
  15. r语言worldclim数据_MAXENT数据准备:气候数据与高程数据格式的统一
  16. docker容器下载vim
  17. 搜索引擎相关站点收集
  18. 加密算法应用之密码保护
  19. DIY个人第一台NAS
  20. 快递这个行业杀价拼量力竭

热门文章

  1. SSH known_hosts / authorized_keys 的解释
  2. 容易的面试问题变得更加困难:给定数字1..100,在正好缺少k的情况下,找到缺失的数字
  3. 从零开始搭建公司域环境(二):服务器安装域控并实现客户端加域登陆
  4. 计算机更改为英语,win7如何修改语言 电脑语言改成英文的方法
  5. java标签用setbounds,java-摆动setResizable和setBounds
  6. 190320运算符数据类型
  7. 2014年你不用担心的10件事
  8. Lua的安装配置出现的问题以及解决方案(Win10环境下)
  9. kangle安装php7.0_Kangle Easypanel面板 PHP多版本切换 安装图文教程
  10. Vue3 的 Reactive 响应式到底是什么