-
2022-03-10 19:26:54
部署指令
docker run --detach -p 1389:1389 -p 1636:1636 --name openldap --env LDAP_ADMIN_USERNAME=admin --env LDAP_ADMIN_PASSWORD=Hc@Cloud01 --env LDAP_USERS=customuser --env LDAP_PASSWORDS=Hc@Cloud01 --env LDAP_ROOT=dc=springframework,dc=org bitnami/openldap:latest
参数详解:
--name:指定容器名字
通过环境变量设置参数
LDAP_ADMIN_USERNAME:管理员账户的名字
LDAP_ADMIN_PASSWORD:管理员账户的密码
LDAP_ROOT:根dc,一般为域名,用多个dc表示,如果域名为www.xiaozhuge.com,则为dc=www,dc=xiaozhuge,dc=com
部署成功后,使用1389端口进行访问。
更多相关内容 -
OpenLDAP docker 部署
2020-12-16 20:28:21热度比较高的有两个镜像:osixia/openldap、bitnami/openldap osixia/openldap: 集成了 TLS 安全认证,默认开启 个人维护 6个月前更新 bitnami/openldap: 没有做签名认证 团队维护 7天前更新 两者都没有做 SSL...OpenLDAP docker 部署
镜像
热度比较高的有两个镜像:osixia/openldap、bitnami/openldap
osixia/openldap:
- 集成了 TLS 安全认证,默认开启
- 个人维护
- 6个月前更新
bitnami/openldap:
- 没有做签名认证
- 团队维护
- 7天前更新
两者都没有做 SSL 安全认证,没有开 memberOf 功能,没有开账号安全策略,没有设置用户自主改密码
综合两者的优缺点,最终选择了 bitnami/openldap,没做的功能自己做
目录树
├── certs # 存放证书相关文件 │ ├── certs.ldif │ ├── ldap.crt │ ├── ldap.csr │ ├── ldap.key │ ├── rootCA.key │ ├── rootCA.pem │ └── rootCA.srl ├── compose # 存放 docker-compose 启动相关文件 │ ├── build # 部署需要的文件 │ │ ├── bitnami-docker-openldap-master # git项目 │ │ ├── Dockerfile # build 文件 │ │ ├── libopenldap.sh # openldap 正式启动前需要做的各种骚操作 │ │ └── run.sh # openldap 启动文件 │ └── docker-compose.yml # docker-compose 配置 ├── data # 容器映射目录 └── ldif # 镜像中没做的、需要额外补充的 openldap 配置文件 ├── memberof_conf.ldif # 开启 memberOf 支持 ├── mod_ppolicy.ldif # 开启账号安全策略 ├── ppolicy.ldif # 添加账号安全策略配置 ├── refint1.ldif # 开启 refint 支持(memberOf 需要) ├── refint2.ldif # 添加 refint 配置(memberOf 需要) └── self_change_passwd.ldif # 设置用户可以自己改密码
准备工作
# 拉当前最新分支2.4.56 docker pull bitnami/openldap:2.4.56 # 生成几个基础文件夹 ## 根目录 mkdir -p /srv/openldap ## ssl证书存放目录 mkdir /srv/openldap/certs chmod g+rwX /srv/openldap/certs ## docker-compse 相关脚本存放目录 mkdir /srv/openldap/compose ## docker 构建相关文件存放目录 mkdir -p /srv/openldap/compose/build ## 容器数据映射目录 mkdir /srv/openldap/data chmod g+rwX /srv/openldap/data ## ldap 启动时调整内容存放目录 mkdir /srv/openldap/ldif
构建新镜像
处理 SSL 相关
# 生产证书 export base_dir="/srv/openldap/certs" export map_dir="/opt/certs" openssl genrsa -out "${base_dir}/rootCA.key" 2048 openssl req -x509 -new -nodes -subj "/C=CN/ST=ShangHai/L=ShangHai/O=ldap/OU=lework/CN=ldap-ca" -key "${base_dir}/rootCA.key" -sha256 -days 1024 -out "${base_dir}/rootCA.pem" openssl genrsa -out "${base_dir}/ldap.key" 2048 openssl req -new -subj "/C=CN/ST=ShangHai/L=ShangHai/O=ldap/OU=lework/CN=ldap-server.lework.com" -key "${base_dir}/ldap.key" -out "${base_dir}/ldap.csr" openssl x509 -req -in "${base_dir}/ldap.csr" -CA "${base_dir}/rootCA.pem" -CAkey "${base_dir}/rootCA.key" -CAcreateserial -out "${base_dir}/ldap.crt" -days 3650 -sha256 cat > "${base_dir}/certs.ldif" << EOF dn: cn=config changetype: modify replace: olcTLSCACertificateFile olcTLSCACertificateFile: "${map_dir}/rootCA.pem" dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: "${map_dir}/ldap.crt" dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: "${map_dir}/ldap.key" EOF # 给 key 授权(key 默认是600,docker 容器是 nonroot 运行,无法读取) chmod 644 /srv/openldap/certs/*.key
添加额外的 openldap 配置文件
# memberOf cat > "/srv/openldap/ldif/memberof_conf.ldif" << EOF #开启memberof支持 dn: cn=module{0},cn=config cn: modulle{0} objectClass: olcModuleList objectclass: top olcModuleload: memberof olcModulePath: /opt/bitnami/openldap/lib/openldap #新增用户支持memberof配置 dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfUniqueNames olcMemberOfMemberAD: uniqueMember olcMemberOfMemberOfAD: memberOf EOF cat > "/srv/openldap/ldif/refint1.ldif" << EOF dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint EOF cat > "/srv/openldap/ldif/refint2.ldif" << EOF dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: refint olcRefintAttribute: memberof uniqueMember manager owner EOF # ppolicy 用户安全策略 cat > "/srv/openldap/ldif/mod_ppolicy.ldif" << EOF dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: ppolicy EOF cat > "/srv/openldap/ldif/ppolicy.ldif" << EOF dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config changeType: add objectClass: olcOverlayConfig objectClass: olcPPolicyConfig olcOverlay: ppolicy olcPPolicyDefault: ou=users,dc=ichilson,dc=com olcPPolicyHashCleartext: TRUE EOF # 允许用户自己改密码 cat > "/srv/openldap/ldif/self_change_passwd.ldif" << EOF dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=admin,dc=ichilson,dc=com" write by anonymous auth by * none dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {1}to * by dn.base="cn=admin,dc=ichilson,dc=com" write by self write by * read EOF
源码修改
# 拉取项目代码(因为需要改动一两个 shell 脚本来启动 SSL 认证) cd /srv/openldap/compose/build wget https://github.com/bitnami/bitnami-docker-openldap/archive/master.zip # 解压拷贝需要改动的 shell,至于为什么是这两个文件,自己去看 Dockerfile 一步一步往下钻 unzip master.zip rm master.zip -rf cp bitnami-docker-openldap-master/2/debian-10/rootfs/opt/bitnami/scripts/libopenldap.sh . cp bitnami-docker-openldap-master/2/debian-10/rootfs/opt/bitnami/scripts/openldap/run.sh . # 往 libopenldap.sh 编写添加 SSL 证书脚本 vim libopenldap.sh ######################### # 添加 SSL 证书 ######################### ldap_open_ssl() { info "ldapmodify certs.ldif" debug_execute ldapmodify -Y EXTERNAL -H "ldapi:///" -f "/opt/certs/certs.ldif" info "finish ldapmodify certs.ldif" } ######################### # 打开 memberOf ######################### ldap_open_memberof() { info "ldapadd memberof_conf.ldif" debug_execute ldapadd -Q -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/memberof_conf.ldif" debug_execute ldapmodify -Q -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/refint1.ldif" debug_execute ldapadd -Q -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/refint2.ldif" info "finish ldapadd memberof_conf.ldif" } ######################### # 启用 ppolicy # 这里启用策略之后,还需要自己根据需要给对应的dn添加用户安全策略类和对应的参数(可以等服务启动之后再用客户端修改) # objectClass: pwdPolicy # pwdAllowUserChange: TRUE # pwdAttribute: 2.5.4.35 # #通过pwdCheckModule检查密码质量, 0为不控制,由SSO的认证模块自己控制 # pwdCheckQuality: 0 # #密码失效提前7天警告 # pwdExpireWarning: 604800 # #密码失败次数复位时间,1天 # pwdFailureCountInterval: 86400 # #密码过期不允许登录 # pwdGraceAuthNLimit: 0 # #保存密码历史3次,新密码不能与之相同 # pwdInHistory: 3 # #超过最多失败次数账号被锁定 # pwdLockout: TRUE # #锁定后不能自动解锁,必须由管理员解锁 # pwdLockoutDuration: 0 # #密码有效期10年 # pwdMaxAge: 311040000 # #密码最大失败次数,超过后被账号锁定 # pwdMaxFailure: 5 # pwdMinAge: 0 # #密码最小长度 # pwdMinLength: 8 # pwdMustChange: FALSE # pwdSafeModify: FALSE ######################### ldap_open_ppolicy() { info "ldapadd ppolicy.ldif" debug_execute ldapadd -Y EXTERNAL -H "ldapi:///" -D "cn=config" -f "/opt/bitnami/openldap/etc/schema/ppolicy.ldif" debug_execute ldapmodify -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/mod_ppolicy.ldif" debug_execute ldapmodify -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/ppolicy.ldif" info "finish ldapadd ppolicy.ldif" } ######################### # 允许用户自己改密码 ######################### ldap_open_self_change_passwd() { info "ldapmodify self_change_passwd.ldif" debug_execute ldapmodify -Y EXTERNAL -H "ldapi:///" -f "/opt/ldif/self_change_passwd.ldif" info "finish ldapmodify self_change_passwd.ldif" } ldap_initialize() { # 这里省略了一些代码 if ! is_dir_empty "$LDAP_DATA_DIR"; then info "Using persisted data" else # 这里省略了一些代码 ldap_admin_credentials # 添加的代码 ldap_open_ssl ldap_open_memberof ldap_open_ppolicy ldap_open_self_change_passwd # 这里省略了 fi } # 往 run.sh 插入开启 SSL 端口脚本 flags=("-h" "ldap://:${LDAP_PORT_NUMBER}/ ldapi:/// ldaps://:${LDAP_LDAPS_PORT_NUMBER}/" "-F" "${LDAP_CONF_DIR}/slapd.d" "-d" "256" "$@")
准备 build 文件
cat > "/srv/openldap/compose/build/Dockerfile" << EOF FROM bitnami/openldap:2.4.56 COPY run.sh /opt/bitnami/scripts/openldap/ COPY libopenldap.sh /opt/bitnami/scripts/ EOF
构建
sudo docker build -t bitnami/openldap:2.4.56-self .
启动容器
编写 compose 文件
cat > "/srv/openldap/compose/docker-compose.yml" << EOF version: '3' services: openldap: image: 'bitnami/openldap:2.4.56-self' container_name: 'openldap' ports: - '10389:1389' - '10636:1636' environment: - LDAP_ROOT=dc=ichilson,dc=com - LDAP_ADMIN_USERNAME=admin - LDAP_ADMIN_PASSWORD=admin # 初始用户(至少需要一个用户) - LDAP_USERS=admin - LDAP_PASSWORDS=admin volumes: - /srv/openldap/data:/bitnami/openldap - /srv/openldap/certs:/opt/certs - /srv/openldap/ldif:/opt/ldif EOF
启动
docker-compose up -d
附录
docker 入门:https://www.runoob.com/docker/docker-tutorial.html
docker-compose 入门:https://www.runoob.com/docker/docker-compose.html
-
OpenLDAP 部署及实践(二)
2022-02-03 22:49:12OpenLDAP部署 角色 主机名 操作系统 IP地址 备注 ...在两台OpenLDAP上都部署 1.安装OpenLDAP 1-1. 使用yum方式安装OpenLdap yum install -y openldap openldap-servers openldap-clients cOpenLDAP部署
角色 主机名 操作系统 IP地址 备注 ldap-1 ldap1 CentOS7 192.168.3.11 VIP 192.168.3.10 ldap-2 ldap2 CentOS7 192.168.3.12 VIP 192.168.3.10 在两台OpenLDAP上都部署
1.安装OpenLDAP
1-1. 使用yum方式安装OpenLdap
yum install -y openldap openldap-servers openldap-clients compat-openldap chown -R ldap.ldap /etc/openldap/ cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap.ldap /var/lib/ldap/DB_CONFIG
1-2. 启动slapd并开机自启动,查看端口386是否开启
systemctl restart slapd yum install -y net-tools netstat -atnulp | grep :389
2.配置OpenLDAP开启TLS
2-1. 采用ldif方式配置Openldap以TLS加密传输并打开636(默认的SSL连接端口)
mkdir /ldif_file cd /ldif_file ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ssl.ldif sed -i "s#ldap:\/\/\/#& ldaps:\/\/\/#" /etc/sysconfig/slapd systemctl restart slapd yum install -y net-tools netstat -atnulp | grep :636
mod_ssl.ldif 内容
dn: cn=config changetype: modify add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/openldap/certs/CA.crt replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/ldap.crt replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
3.验证TLS是否配置成功
3-1. 通过CA证书公钥,验证ldap服务端证书的合法性
openssl verify -CAfile /etc/pki/CA/CA.crt /etc/openldap/certs/ldap.crt
/etc/openldap/certs/ldapsrv.crt: OK
3-2. 通过当前套接字是否能通过CA的验证
openssl s_client -connect $(hostname):636 -showcerts -state -CAfile /etc/openldap/certs/CA.crt
4.配置OpenLDAP的根域和管理员
4-1. 创建Openldap的管理员密码(记住加密后的密码,后续很多地方会使用)
slappasswd -s boybo
{SSHA}DbijN+dbVNqZ0XwFMTecd+PHwT249ILG
4-2. 查看OpenLDAP数据库相关ldif文件及名称
ls -l /etc/openldap/slapd.d/cn\=config
total 36
-rw------- 1 ldap ldap 537 Feb 3 13:38 cn=module{0}.ldif
-rw------- 1 ldap ldap 537 Feb 3 16:32 cn=module{1}.ldif
drwxr-x— 2 ldap ldap 4096 Feb 3 13:28 cn=schema
-rw------- 1 ldap ldap 378 Feb 2 10:58 cn=schema.ldif
-rw------- 1 ldap ldap 624 Feb 3 13:28 olcDatabase={0}config.ldif
-rw------- 1 ldap ldap 508 Feb 3 13:36 olcDatabase={-1}frontend.ldif
-rw------- 1 ldap ldap 603 Feb 3 13:29 olcDatabase={1}monitor.ldif
drwxr-x— 2 ldap ldap 4096 Feb 3 16:32 olcDatabase={2}hdb
-rw------- 1 ldap ldap 1251 Feb 3 13:53 olcDatabase={2}hdb.ldif
*—/4-3.使用ldif文件,设置OpenLDAP的管理员密码
ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}XSUcpSOL+nE1vTp2r9en29U3zBfSbi0M ###刚刚生成的加密后密码
4-4.导入基本的schema配置
Schema控制着条目拥有哪些对象类和属性
使用ldapadd命令,执行下面的ldif文件,设置管理员密码ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
4-5. 配置OpenLDAP的根域及其管理域
使用ldapmodify命令,创建根域及管理域
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=boybo,dc=cn" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=boybo,dc=cn dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=admin,dc=boybo,dc=cn dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}XSUcpSOL+nE1vTp2r9en29U3zBfSbi0M dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=boybo,dc=cn" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=admin,dc=boybo,dc=cn" write by * read
4-6. 创建admin的组织角色,用以管理整个OpenLDAP
导入admin组织的配置
ldapadd -x -D cn=admin,dc=boybo,dc=cn -W -f admin.ldif
# replace to your own domain name for "dc=***,dc=***" section dn: dc=boybo,dc=cn objectClass: top objectClass: dcObject objectclass: organization o: LinLong company dc: boybo dn: cn=admin,dc=boybo,dc=cn objectClass: organizationalRole cn: admin description: administrator
5.创建三个OU,分别是Group和People以及People下的Shenyang
在上述基础上,创建一个 boybo company的组织,People 和 Group 两个组织单元
ldapadd -x -D cn=admin,dc=boybo,dc=cn -W -f add_ou_Group_People.ldif
dn: ou=People,dc=boybo,dc=cn objectClass: organizationalUnit ou: People dn: ou=Group,dc=boybo,dc=cn objectClass: organizationalUnit ou: Groupass: organizationalUnit ou: Group dn: ou=Shenyang,ou=People,dc=boybo,dc=cn objectClass: organizationalUnit ou: Shenyang
6.设定日志级别、日志轮滚
6-1. 设定日志级别
ldapmodify -Y EXTERNAL -H ldapi:/// -W -f change_log_level.ldif grep "olcLogLevel" /etc/openldap/slapd.d/cn\=config.ldif
dn: cn=config changetype: modify add: olcLogLevel olcLogLevel: -1
6-2. 设定日志轮滚
echo "local4.* /var/log/slapd.log" >> /etc/rsyslog.conf systemctl restart rsyslog systemctl status rsyslog
6-3. 清除当前日志
ldapmodify -Y EXTERNAL -H ldapi:/// -W -f clean_log_level.ldif
dn: cn=config changetype: modify delete: olcLogLevel olcLogLevel: -1 ###根据查询后的level清除日志级别
7.取消匿名登录
ldapmodify -Y EXTERNAL -H ldapi:/// -W -f no_anonymoun.ldif
dn: cn=config changetype: modify add: olcDisallows olcDisallows: bind_anon dn: cn=config changetype: modify add: olcRequires olcRequires: authc dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcRequires olcRequires: authc
8.测试 创建一个用户并查询是否添加成功
8-1. 创建用户
ldapadd -x -D cn=admin,dc=boybo,dc=cn -W -f superman.ldif ### 查询用户 ldapsearch -LLL -W -x -H ldapi:/// -D "cn=admin,dc=boybo,dc=cn" -b "dc=boybo,dc=cn" "(uid=superman)"
dn: uid=superman,ou=Shenyang,ou=People,dc=boybo,dc=cn uid: superman cn: superman objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$6$EJd1EaFj$7s3DPnTNxAuBumdWhl8vFyOg5pY5FcqgWoY3rbZRH4g0j34RcOfWIoQkJlkoSSh8ytRdqwK8.JhAp1aeSX03T. shadowLastChange: 19019 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1011 gidNumber: 1006 homeDirectory: /home/superman mail: 123@163.com departmentNumber: openvpn telephonenumber: 11012345678 displayName: 超人 sn: 超人
-
-e LDAP_TLS_CERT_FILE=/opt/bitnami/openldap/certs/openldap.crt \ -e LDAP_TLS_KEY_FILE=/opt/bitnami/openldap/certs/openldap.key \ -e LDAP_TLS_CA_FILE=/opt/bitnami/openldap/certs/openldapCA.crt \ ...
-
Docker -- 统一账户管理中心配置OPEN LDAP(在一套CI架构中,我们需要使用到各种各样得软件,需要这些软件...
2022-01-16 21:02:15在一套CI架构中,我们需要使用到各种各样得软件,需要这些软件协同工作。但是我们又不希望让用户在每一软件上都单独去进行账户得注册以及密码得维护。为了方便运维管理,我们引入LDAP作为统一账户管理中心。LDAP实际...一、统一账户管理中心配置
- 在一套CI架构中,我们需要使用到各种各样得软件,需要这些软件协同工作。但是我们又不希望让用户在每一软件上都单独去进行账户得注册以及密码得维护。为了方便运维管理,我们引入LDAP作为统一账户管理中心。LDAP实际上是一个协议,目前针对轻量级目录服务协议的实现产品有很多。我们选择使用OPEN LDAP作为实现产品。该产品是免费的,功能也较为全面。客户端软件我们采用LDAP ADMIN。
- LDAP是一个以树型结构进行数据组织管理的目录服务器,该服务器针对数据查询有极快的效率,但是针对更新、删除等变化性的操作效率很差,所以在生产活动中,通常会使用LDAP做一些静态数据的存储一个典型的应用场景是在公司的信息系统环境中,使用LDAP作为账户管理数据库来使用
二、安装与配置
1、使用docker安装open ldap
docker pull osixia/openldap
2、准备挂载目录
- 使用open ldap时,我们需要将数据库以及配置文件挂载到宿主机中,所以需要提前准备出两个目录。
/root/docker_vol/ldap/database
(数据库目录),/root/docker_vol/ldap/config
配置信息目录
3、启动ldap容器
docker run -itd --hostname "jn-ldap" -p 10002:389 \ --name "ldap" \ -v /root/docker_vol/ldap/database:/var/lib/ldap \ -v /root/docker_vol/ldap/config:/etc/ldap/slapd.d \ -v /etc/localtime:/etc/localtime:ro \ -e LDAP_ORGANISATION=jn \ -e LDAP_DOMAIN=jn.com \ -e LDAP_ADMIN_PASSWORD=P@ssword \ -e LDAP_CONFIG_PASSWORD=P@ssword \ -e TZ=Asia/Shanghai \ osixia/openldap
4、验证服务器安装结果
- 选择connect后弹出配置窗口
- 选择new connection 创建新的连接,相关配置参考下图
到此为止,ldap已经可以支持账号存储。但是存在一个问题就是一旦开启了ldap认证,则所有的用户可以登录CI平台中的任意软件,为了避免这种情况,所以需要对ldap设置memberof选项
三、开启ldapmemberof选项
1、检查数据库配置
或者进入容器后执行:ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
2、编写配置文件- memberof_conf.ldif
#开启memberof支持 dn: cn=module{0},cn=config cn: modulle{0} objectClass: olcModuleList objectclass: top olcModuleload: memberof.la olcModulePath: /usr/lib/openldap #新增用户支持memberof配置 dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfUniqueNames olcMemberOfMemberAD: uniqueMember olcMemberOfMemberOfAD: memberOf
- refint1.ldif
dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint
- refint2.ldif
dn: olcOverlay=refint,olcDatabase={1}mdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: refint olcRefintAttribute: memberof uniqueMember manager owner
3、开启memberof配置
- 进入容器后分别执行下列语句,注意样例中的路径为我本地路径,根据自身情况酌情修改路径。
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /data/disk1/openladp/memberof_conf.ldif ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /data/disk1/openladp/refint1.ldif ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /data/disk1/openladp/refint2.ldif
四、配置验证
1、使用ldap admin创建人员以及组
- 第一步、创建人员组,通常该组内会包含所有的账号信息
- 逐步添加需要管理的账户信息
- 设置用户密码
2、验证memberof是否开启成功 - 在容器内执行
ldapsearch -LL -Y EXTERNAL -H ldapi:/// "(uid=congminnan)" -b dc=jn,dc=com memberof
- 看到如下结果表示配置正确
- 在一套CI架构中,我们需要使用到各种各样得软件,需要这些软件协同工作。但是我们又不希望让用户在每一软件上都单独去进行账户得注册以及密码得维护。为了方便运维管理,我们引入LDAP作为统一账户管理中心。LDAP实际上是一个协议,目前针对轻量级目录服务协议的实现产品有很多。我们选择使用OPEN LDAP作为实现产品。该产品是免费的,功能也较为全面。客户端软件我们采用LDAP ADMIN。
-
RabbitMQ packaged by Bitnami What is RabbitMQ? RabbitMQ is an open source general-purpose message broker that is designed for consistent, highly-available messaging scenarios (both synchronous and ...
-
MariaDB Galera packaged by Bitnami What is MariaDB Galera? MariaDB Galera is a multi-primary database cluster solution for synchronous replication and high availability. Overview of MariaDB Galera ...
-
bitnami/openldap:latest Step 6: Launch the NGINX server instance Use the --network <NETWORK> argument to the docker run command to attach the container to the my-network network. $ docker run ...
-
Nginx - LDAP Authentication
2019-10-20 08:27:12sudo rpm -hvi openldap-devel-2.4.44-21.el7_6.x86_64.rpm Nginx Configure Download package from https://github.com/nginxinc/nginx-ldap-auth Use sample configure. cp /usr/local/nginx/conf/nginx... -
PHP,在Mac上轻松搭建开发环境,基于BitNami MAMP Stack
2014-02-10 01:33:34自己一个一个工具安装又感觉好像有点多余,各位,你懂的这个...就是这种契机下,我无意间找到了这款应用,BitNami MAMP Stack。 看完他的介绍: Bitnami MAMP Stack provides a complete PHP, MySQL and Apache -
关于模块:我无法安装python-ldap
2020-12-11 11:01:18我使用Bitnami在Windows上的Reviewboard上遇到了这个特定问题。为了给出Windows的答案,我使用了注释中提到的以下链接: http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap 将那个轮子(whl文件)放入我的评论... -
(译)Kubernetes 单点登录详解
2021-06-02 00:58:10现在就可以用下面的命令来安装 OpenLDAP 了: helm upgrade --install openldap ./charts/openldap --values openldap/values-openldap.yml 安装过程中会输出一些成功信息,以及访问该服务的示例。 注意下面几个... -
Awesome Sysadmin A curated list of amazingly awesome open source sysadmin resources. Contributing Please read CONTRIBUTING if you wish to add software. Table of Contents Awesome Sysadmin ...
-
kubernetes实战(十):k8s使用Helm安装harbor
2018-11-16 19:43:00docker pull bitnami/redis:4.0.8-r2 更改values.yaml所有的storageClass为storageClass: "gluster-heketi" 注意修改values.yaml的redis默认配置,添加port至master master: port: 6379 注意... -
Kubernetes - - k8s - v1.12.3 使用Helm安装harbor
2018-12-14 16:54:00docker pull bitnami/redis:4.0.8-r2 3.1.6 更改 values.yaml 更改values.yaml所有的storageClass为storageClass: "gluster-heketi" sed -i 's@# storageClass: "-"@storageClass: "gluster-heketi"@g' values... -
ecw2c理解元数据:使用BigQuery k-means将4,000个堆栈溢出标签聚类
2019-07-24 00:00:00amazon-ses, aws-cognito, aws-iot, terraform-provider-aws, api-gateway, amazon-vpc, aws-serverless, aws-codepipeline, aws-codebuild, amazon-rds-aurora, bitnami, amazon-lex, aws-step-functions, aws-... -
xampp
2017-12-10 16:40:00Bitnami provides a free all-in-one tool to install Drupal, Joomla!, WordPress and many other popular open source apps on top of XAMPP. If you are using XAMPP-VM for OS X, you will need to use the... -
docker 操作记录-2
2019-12-31 13:27:34bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 8 [OK] redislabs/redisgraph A graph database module for Redis 8 [OK] arm64v8/redis Redis is an open source key-value store that… 6 ... -
KubeSphere集群安装
2021-11-19 15:31:591、重新安装kubernetes 【注】参照我的安装Kubernetes入门篇,只需要安装到**[4-8]子节点加入主节点**,后面的k8s官方可视化工具不用安装。 2、安装KubeSphere前置环境 1、nfs文件系统 1-1、安装nfs-server ... -
Docker容器化技术入门
2022-03-03 23:29:45本人环境搭建在内网树莓派4b上,使用的linux发行版为树莓派Ubuntu 21.04 server版本 一些镜像需要根据自己的处理器架构去修改!!! 安装Docker sudo apt install docker.io 查看安装的docker是否成功 root@ubuntu... -
高效的使用top
2015-05-30 20:01:00看起来很简单,只需要使用 -p 列出所有需要的 PID,并使用逗号间隔或简单的多次使用 -p即可。 另一种可能是监测拥有特定用户标识(UID)的进程。应对此需求,你可以使用 -u 或 -U 选项。假设用户“johndoe”的 UID... -
Docker部署监控-Prometheus+Alertmanager+Grafana+exporter
2021-04-23 08:53:50prometheus部署 Docker镜像 docker pull prom/prometheus:v2.25.1 镜像导出命令 docker save prom/prometheus:v2.25.1 -o docker-prometheus-v2.25.1.tar 镜像导入命令 docker load -i docker-prometheus-v2.25.1.... -
跟乐乐学Docker容器!
2021-06-27 13:28:39一.认识Docker 什么是Docker‘容器’? Docker是一种容器,准确来说是一个应用容器引擎,比如一个centos服务器系统,当前的生产环境是jdk8,mysql5.1,nginx5,那么我们可以通过...4 net-snmp.x86_64 1:5.7.2-49.el7_9.1 net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.1 net-snmp-libs.x86_64 1:5.7.2-49.el7_9.1 net-snmp-utils.x86_64 1:5.7.2-49.el7_9.1 nspr.x86_64 0:4.25.0-2.el7_9 nss.x86_64 0:3.53.1-7.el7_9 nss-softokn.x86_64 0:3.53.1-6.el7_9 nss-softokn-freebl.x86_64 0:3.53.1-6.el7_9 nss-sysinit.x86_64 0:3.53.1-7.el7_9 nss-tools.x86_64 0:3.53.1-7.el7_9 nss-util.x86_64 0:3.53.1-1.el7_9 openldap.x86_64 0:2.4.44-23.el7_9 openssh.x86_64 0:7.4p1-21.el7 openssh-clients.x86_64 0:7.4p1-21.el7 openssh-server.x86_64 0:7.4p1-21.el7 openssl-libs.x86_64 1:1.0.2k-21.el7_9 p11-kit.x86_64 0:0.23...