OpenLdap +PhpLdapAdmin + Grafana docker-compose部署安装

目录

一、OpenLdap介绍

二、PhpLdapAdmin介绍

三、使用docker-compose进行安装

1. docker-compose.yml

2. grafana配置文件

3. provisioning

四、安装openldap、phpldapadmin、grafana

五、配置OpenLDAP

1. 登陆PhpLdapAdmin web管理

2. 需要注意的细节

内容介绍参考:


一、OpenLdap介绍

  OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。它本身是一个小型文件数据库。Ldap是树形结构的,能够通过server + client(服务端+客户端)的方式。进行统一的用户(账号)管理。

举个栗子:如果有100台机器,一个用户需要登录这100台机器。传统的做法就是每台机器中,都需要创建登录账号,操作100次。想想都会疯掉。如果使用ldap来管理,就只需要在ldap服务中创建一次就可以了。账号清理也是类似的道理。我们通过控制一台机器登录账号,即可控制所有机器登录账号。是不是方便很多呢?

ldap架构图

二、PhpLdapAdmin介绍

   phpLDAPadmin(又称PLA)是一个基于Web的LDAP客户端。它提供了方便,随时随地可访问的,多语言管理为LDAP服务器。其层次树状浏览器和先进的搜索功能,使其直观地浏览和管理LDAP目录。既然是一个Web应用程序,此浏览器的LDAP工作在许多平台上,让您的LDAP服务器轻松地从任何位置管理。

   简单来说就是openldap的一个web管理页面,通过点点的方式代替复杂的命令

三、使用docker-compose进行安装

说明:Grafana只是作为对接LDAP的一个应用,可以替换成其它应用例如jenkins、gitlab等等...

说了不少废话了,该上干货了。下面是应用于生产环境中的配置,由于一些隐私不得进行脱敏~

# 安装目录结构如下root@10-50-183-112:/home/sunwenbo# tree /home/sunwenbo/
/home/sunwenbo/
├── docker-compose.yml
└── grafana├── grafana.ini├── ldap.toml└── provisioning├── access-control├── alerting├── dashboards├── datasources├── notifiers└── plugins8 directories, 3 files

1. docker-compose.yml

完整的内容如下,替换到yml中的xxx即可

version: '3'services:openldap:image: osixia/openldap:latestcontainer_name: openldap-serverhostname: ldap.xxx.cnrestart: alwaysenvironment:LDAP_LOG_LEVEL: "256"LDAP_ORGANISATION: "xxx Company"LDAP_DOMAIN: "xxx.cn"LDAP_ADMIN_PASSWORD: 'xxxxxxx'LDAP_BASE_DN: "dc=xxx,dc=cn"LDAP_TLS: "true"LDAP_READONLY_USER: "false"LDAP_BACKEND: "mdb"LDAP_TLS_CRT_FILENAME: "ldap.crt"LDAP_TLS_KEY_FILENAME: "ldap.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"KEEP_EXISTING_CONFIG: "false"LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"LDAP_SSL_HELPER_PREFIX: "ldap"tty: truestdin_open: trueports:- 389:389- 636:636volumes:- /data/slapd/database/:/var/lib/ldap/- /data/slapd/config/:/etc/ldap/slapd.d/networks:- openldap-netphpldapadmin:image: osixia/phpldapadmin:latesthostname: phpldapadmin-servicerestart: alwayscontainer_name: phpldapadminprivileged: trueenvironment:PHPLDAPADMIN_HTTPS: "false"PHPLDAPADMIN_LDAP_HOSTS: "ldap.xxx.cn"ports:- 80:80- 443:443depends_on:- openldapnetworks:- openldap-netgrafana:image: grafana/grafana:latesthostname: grafanarestart: alwayscontainer_name: grafanaprivileged: trueports:- 3000:3000volumes:- /home/sunwenbo/grafana/:/etc/grafanadepends_on:- openldapnetworks:- openldap-net
networks:openldap-net:driver: bridge

2. grafana配置文件

grafana.ini 只修改以下内容即可

#################################### Auth LDAP ##########################
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml                                                                  
allow_sign_up = true             
# prevent synchronizing ldap users organization roles
# skip_org_role_sync = false                                                     # LDAP background sync (Enterprise only)
# At 1 am every day
sync_cron = "0 1 * * *"
active_sync_enabled = true   

ldap.toml 配置如下,xxx替换为实际的dc

[[servers]]
host = "10.50.183.112"
port = 389
ssl_skip_verify = falsebind_dn = "cn=admin,dc=xxx,dc=cn"
bind_password = 'xxxxxxx'search_filter = "(cn=%s)"search_base_dns = ["ou=users,dc=xxx,dc=cn"]group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=GrafanaGroups,ou=Application,dc=xxx,dc=cn"]
group_search_filter_user_attribute = "uid"[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
member_of = "memberOf"
email =  "email"[[servers.group_mappings]]
group_dn = "cn=Grafana-admins,ou=GrafanaGroups,ou=Application,dc=xxx,dc=cn"
org_role = "Admin"[[servers.group_mappings]]
group_dn = "cn=Grafana-editors,ou=GrafanaGroups,ou=Application,dc=xxx,dc=cn"
org_role = "Editor"[[servers.group_mappings]]
# group_dn = "*"  #修改为*,可以认为所有LDAP用户都是viewer角色,根据实际需求进行配置
group_dn = "cn=Grafana-viewers,ou=GrafanaGroups,ou=Application,dc=xxx,dc=cn"
org_role = "Viewer"

3. provisioning

这个目录不做任何修改只是单纯的挂载出来了。

四、安装openldap、phpldapadmin、grafana

一条命令搞定

root@10-50-183-112:/home/sunwenbo# docker-compose  up -d 
[+] Running 4/4✔ Network sunwenbo_openldap-net  Created                                                                                                                                                                                             0.0s ✔ Container openldap-server      Started                                                                                                                                                                                             0.2s ✔ Container phpldapadmin         Started                                                                                                                                                                                             0.6s ✔ Container grafana              Started                                                                                                                                                                                             0.6s 
root@10-50-183-112:/home/sunwenbo# docker-compose ps 
NAME                IMAGE                        COMMAND                 SERVICE             CREATED             STATUS              PORTS
grafana             grafana/grafana:latest       "/run.sh"               grafana             16 seconds ago      Up 14 seconds       0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
openldap-server     osixia/openldap:latest       "/container/tool/run"   openldap            16 seconds ago      Up 15 seconds       0.0.0.0:389->389/tcp, :::389->389/tcp, 0.0.0.0:636->636/tcp, :::636->636/tcp
phpldapadmin        osixia/phpldapadmin:latest   "/container/tool/run"   phpldapadmin        16 seconds ago      Up 14 seconds       0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp

检查端口是否监听

root@10-50-183-112:/home/sunwenbo# netstat  -nlpt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      323033/sshd: /usr/s 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      377291/docker-proxy 
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      377156/docker-proxy 
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      377266/docker-proxy 
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      377137/docker-proxy 
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      377248/docker-proxy 
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      591/systemd-resolve 
tcp6       0      0 :::22                   :::*                    LISTEN      323033/sshd: /usr/s 
tcp6       0      0 :::80                   :::*                    LISTEN      377299/docker-proxy 
tcp6       0      0 :::389                  :::*                    LISTEN      377162/docker-proxy 
tcp6       0      0 :::443                  :::*                    LISTEN      377273/docker-proxy 
tcp6       0      0 :::636                  :::*                    LISTEN      377144/docker-proxy 
tcp6       0      0 :::3000                 :::*                    LISTEN      377253/docker-proxy 

五、配置OpenLDAP

1. 登陆PhpLdapAdmin web管理

目录结构如下

2. 需要注意的细节

OU:创建选择为Generic: Organisational Unit

CN:创建选择为Generic: Posix Group

将名字为test的人员添加到CN

登陆grafana验证

有不明白的地方欢迎随时找我~

内容介绍参考:

小白篇(十九):openLdap介绍(又名:Ldap介绍)_belialxing的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

/etc/ssh/sshd_config 配置文件中的 PasswordAuthentication PermitRootLogin 参数作用

1、PasswordAuthentication PasswordAuthentications是一种身份验证方式,通常用于远程服务器的登录。当用户连接到远程服务器并进行身份验证时,服务器会根据 用户名进行验证,如果验证成功允许用户访问服务器。在SSH中,PasswordAut…

运动耳机什么款式好用、最佳运动耳机推荐

俗话说得好,生命在于运动,而运动是促进身体健康最有效的方式之一。在进行运动时,运动装备的辅助十分必要。其中,运动蓝牙耳机已成为运动爱好者不可或缺的一部分,通过在运动中加入音乐元素,可以增加动力和激…

springboot自动装配原理,手写一个starter。

文章目录 springboot自动装配原理手写starter手写starter总结: springboot自动装配原理 口述: springboot自动装配的话它其实就是只需要我们添加一个starter起步依赖,它就能完成这个依赖组件相关Bean的自动注入,其实就是自动的将…

Java设计模式:四、行为型模式-04:中介者模式

文章目录 一、定义:中介者模式二、模拟场景:中介者模式三、违背方案:中介者模式3.1 工程结构3.2 创建数据库3.3 JDBC工具类3.4 单元测试 四、改善代码:中介者模式4.1 工程结构4.2 中介者工程结构图4.3 资源和配置类4.3.1 XML配置对…

设计模式行为型-模板模式

文章目录 一:模板方法设计模式概述1.1 简介1.2 定义和目的1.3 关键特点1.4 适用场景 二:模板方法设计模式基本原理2.1 抽象类2.1.1 定义和作用2.1.2 模板方法2.1.3 具体方法 2.2 具体类2.2.1 定义和作用2.2.2 实现抽象类中的抽象方法2.2.3 覆盖钩子方法 …

css之层叠上下文

之前调元素的显示优先级时,只会默默的调z-index以达到效果,但有时不生效,又不知道根因。刚好详细了解到层叠上下文,可以解释此类问题。 什么是层叠上下文? 在CSS2.1规范中,每个盒模型的位置是三维的&…

macOS通过钥匙串访问找回WiFi密码的详细教程

如果您忘记了Mac电脑上的WiFi密码,可以通过钥匙串访问来找回它。具体步骤如下: 1.打开Mac电脑的“启动台”,然后在其他文件中找到“钥匙串访问”。 2.运行“钥匙串访问”应用程序,点击左侧的“系统”,然后在右侧找到…

中级深入--day19

鼠标动作链 有些时候,我们需要再页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不动等,我们可以通过导入 ActionChains 类来做到: 示例: #导入 ActionChains 类 from selenium.webdriver import ActionChains…

虚拟机(三)VMware Workstation 桥接模式下无法上网

目录 一、背景二、解决方式方式一:关闭防火墙方式二:查看桥接模式下的物理网卡是否对应正确方式三:查看物理主机的网络属性 一、背景 今天在使用 VMware Workstation 里面安装的 Windows 虚拟机的时候,发现虽然在 NAT 模式下可以…

【Sentinel】核心API-Entry与Context

文章目录 一、Entry1、Entry的声明2、使用API自定义资源3、基于SentinelResource注解标记资源 二、Context1、Context介绍2、Context的初始化3、AbstractSentinelInterceptor4、ContextUtil 一、Entry 1、Entry的声明 默认情况下,Sentinel会将controller中的方法作…

Flink实时计算中台Kubernates功能改造点

背景 平台为数据开发人员提供基本的实时作业的管理功能,其中包括jar、sql等作业的在线开发;因此中台需要提供一个统一的SDK支持平台能够实现flink jar作业的发布;绝大多数情况下企业可能会考虑Flink On Yarn的这个发布模式,但是伴随云原生的呼声越来越大,一些企业不希望部…

Java之文件操作与IO

目录 一.认识文件 1.1文件是什么? 1.2文件的组织 1.3文件路径 1.4文件的分类 二.文件操作 2.1File概述 三.文件内容操作--IO 3.1JavaIO的认识 3.2Reader和Writer ⭐Reader类 ⭐Writer类 3.2FileInputStream和FileOutputStream ⭐FileInputStream类 …