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验证
有不明白的地方欢迎随时找我~
查询用户信息
ldapsearch -x -H ldap://10.50.183.112:389 -D "cn=admin,dc=bigmodel,dc=cn" -w "StrongAdminPassw0rd" -b "dc=bigmodel,dc=cn" "(cn=sunwenbo)"查询组信息
ldapsearch -x -H ldap://10.50.183.112:389 -D "cn=admin,dc=bigmodel,dc=cn" -w "StrongAdminPassw0rd" -b "dc=bigmodel,dc=cn" "(&(objectClass=organizationalUnit)(ou=groups)"
内容介绍参考:
小白篇(十九):openLdap介绍(又名:Ldap介绍)_belialxing的博客-CSDN博客
相关文章:

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. 需要注意的细节 内容介绍参考…...
Java | 排序内容大总结
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴算法整理🌴两个结论🌴总结 🌴前言 本文内容是关于选择排序、冒泡排序、插入排序…...

Go 语言入门指南:基础语法和常用特性解析
什么是Go语言? Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。 Go语言语法与C相近,但功能上有&a…...

20.添加HTTP模块
添加一个简单的静态HTTP。 这里默认读者是熟悉http协议的。 来看看http请求Request的例子 客户端发送一个HTTP请求到服务器的请求消息,其包括:请求行、请求头部、空行、请求数据。 HTTP之响应消息Response 服务器接收并处理客户端发过来的请求后会返…...

Qemu 架构 硬件模拟器
Qemu 架构 硬件模拟器 Qemu 是纯软件实现的虚拟化模拟器, 几乎可以模拟任何硬件设备, 我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机, 虚拟机认为自己和硬件打交道, 但其实是和 Qemu 模拟出来的硬件打交道ÿ…...

通过starrocks jdbc外表查询sqlserver
1.sqlserver环境准备,使用docker环境,可以参考使用flink sqlserver cdc 同步数据到StarRocks_gongxiucheng的博客-CSDN博客 部署获得sqlserver环境; 2.获取starrocks环境,也可以通过docker部署,参考:使用…...

ArcGIS 10.5安装教程!
软件介绍: ArcGIS Desktop 10.5中文特别版是一款功能强大的GSI专业电子地图信息编辑和开发软件,ArcGIS Desktop 包括两种可实现制图和可视化的主要应用程序,即 ArcMap 和 ArcGIS Pro。ArcMap 是用于在 ArcGIS Desktop 中进行制图、编辑、分析…...
ConstraintLayout约束布局
1.进行复杂页面布局时,最外层的根布局不要用ConstraintLayout. 示例布局: <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.co…...
通过pyinstaller将python项目打包成exe执行文件
目录 第一步:安装pyinstaller 第二步:获取一个ico图标(也即是自己这个exe文件最后的图标) 第三步:打包 第一步:安装pyinstaller pip install pyinstaller 第二步:获取一个ico图标ÿ…...
P1068 [NOIP2009 普及组] 分数线划定
题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150 % 150\% 150% 划定,即如果计划录取 m m …...

应用在汽车新风系统中消毒杀菌的UVC灯珠
在病毒、细菌的传播可以说是一个让人敏感而恐惧的事情。而对于车内较小的空间,乘坐人员流动性大,更容易残留细菌病毒。车内缺少通风,残留的污垢垃圾也会滋生细菌,加快细菌的繁殖。所以对于车内消毒就自然不容忽视。 那么问题又来…...
TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000+ REAL-WORLD APIS
本文是LLM系列的文章之一,针对《TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000 REAL-WORLD APIS》的翻译。 TOOLLLMs:让大模型掌握16000的真实世界APIs 摘要1 引言2 数据集构建3 实验4 相关工作5 结论 摘要 尽管开源大型语言模型&…...

【JavaSpring】spring接口-beanfactory和applicationcontext与事件解耦
beanfactory 1.applicationcontext的父接口 2.是Spring的核心容器 功能 表面只有getBean,但实现类默默发挥了巨大作用 1.管理所有bean 2.控制反转 3.基本的依赖注入 applicationcontext 功能 1.继承了MessageSource,有了处理国际化资源的能力 …...

《深入理解Java虚拟机》——Java内存区域与内存溢出异常
Java内存区域与内存溢出异常 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 实例堆溢出栈溢出 运行时数据区域 根据《Java虚拟机规范的规定》,Java虚拟机所管理的内存将会包含已下架几个运行时数据区域。 程序计数器 在Java虚…...

公众号hanniman往期精选
目录 一、AI产品分析(10篇) 二、AI产品经理(10篇) 三、AI技术(10篇) 四、AI行业及个人成长(10篇) 一、AI产品分析 1、【重点】深度 | 关于AIGC商业化的13个非共识认知(80…...

谷粒商城----缓存与分布式锁
1、缓存使用 为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而 db 承担数据落盘工作。 哪些数据适合放入缓存? 即时性、数据一致性要求不高的 访问量大且更新频率不高的数据(读多,写少&…...

【JavaEE进阶】Spring事务和事务传播机制
文章目录 一. 什么是Spring事务二. Spring中事务的实现1. Spring编程式事务2. 声明式事务2.1 trycatch下事务不会自动回滚的解决方案2.2 Transactional 作用范围2.3 Transactional 参数说明2.4 Transactional 工作原理 三. 事务的隔离级别1. 事务的四大特性2. Spring中设置事务…...
【Hive】drop table需注意外部表
什么是内部表,外部表? 比较专业的定义: 外部表需要转为内部表,执行删除操作才能真的删表结构删表数据。否则drop table仅是删除了表数据,表结构还是存在的。 alter table tb_name set TBLPROPERTIES(EXTERNALfalse);…...

【2023数学建模国赛】A题定日镜场的优化设计模型建立
2023年全国大学生数学建模竞赛A题定日镜场的优化设计,目前已写出第四版国赛A题思路和模型详细公式,目录如下: 一、 问题重述... 1 二、 问题分析... 1 三、 模型假设... 6 四、 问题一模型的建立和求解... 6 4.1 定日镜场坐标系的建立...…...
QT 事件与信号区别
事件(Event)和信号(Signal)是两个在编程中具有不同概念和用途的术语。 事件(Event): 事件是程序运行过程中发生的特定动作或状态改变。可以是用户输入、硬件触发、系统通知等。 事件通常由操作…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...