ldap配置系列三:grafana集成ldap
ldap配置系列三:grafana集成ldap
grafana的简介
grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观。给一个官方的demo体验地址: https://play.grafana.org/d/000000012/grafana-play-home?orgId=1
这里提供一个demo截图。

grafana的安装
grfana安装的官方参考:http://docs.grafana.org/installation/rpm/
[root@VM_0_15_centos ~]# sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.4-1.x86_64.rpm
[root@VM_0_15_centos ~]# rpm -ql grafana |grep /etc
/etc/grafana
/etc/init.d/grafana-server
/etc/sysconfig/grafana-server [root@VM_0_15_centos ~]# systemctl start grafana-server
[root@VM_0_15_centos ~]# systemctl status grafana-server [root@VM_0_15_centos ~]# firewall-cmd --permanent --add-port=/tcp
success
[root@VM_0_15_centos ~]# firewall-cmd --reload
success # 添加域名grafana.linuxpanda.tech
# web访问下grafana.linuxpanda.tech:3000
主界面如下:

默认的用户名和密码都是admin。
ldap用户组和用户创建
如果没有ldap服务,可以参考:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_52_ldap.html

这里我们使用 ldapadmin.exe 这个小软件连接到ldap服务, 在group这个ou里面添加一个grafana的ou,然后在grafana这个ou里面添加3个组, 对应管理,编辑和预览。
创建三个用户test01,test02,test03 ,设置密码为oracle, 让其分别属于三个不同的组,方便后续的测试。
ldap配置文件
grafana的ldap配置官方参考:http://docs.grafana.org/installation/ldap/
grafana.ini配置
[root@VM_0_15_centos ~]# cd /etc/grafana/
[root@VM_0_15_centos grafana]# ll
total
-rw-r----- root grafana Sep : grafana.ini
-rw-r----- root grafana Sep : ldap.toml
drwxr-xr-x root grafana Sep : provisioning
[root@VM_0_15_centos grafana]# cp ldap.toml ldap.toml.default
[root@VM_0_15_centos grafana]# cp grafana.ini grafana.ini.default
[root@VM_0_15_centos grafana]# chown grafana.grafana grafana.ini ldap.toml [root@VM_0_15_centos grafana]# vim grafana.ini
# 这个文件修改2项,log的其实没有必要,但是ldap调试比较麻烦,建议先开启debug,等配置好ldap后,在修改回去info级别。
[auth.ldap]
enabled = true [log]
level = debug
配置前需要先做几个查询
查询所有用户
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech"
dn: ou=people,dc=linuxpanda,dc=tech
objectClass: organizationalUnit
ou: user
ou: people dn: uid=test01,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber:
givenName: test01
sn: test01
displayName:: 5rWL6K+VMQ==
uid: test01
homeDirectory: /home/test01
loginShell: /bin/bash
mail: test01@linuxpanda.tech
cn:: 5rWL6K+VMQ==
uidNumber:
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9 dn: uid=test02,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber:
givenName: test02
sn: test02
displayName:: 5rWL6K+VMg==
uid: test02
homeDirectory: /home/test02
loginShell: /bin/bash
mail: test02@linuxpanda.tech
cn:: 5rWL6K+VMg==
uidNumber:
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9 dn: uid=test03,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber:
givenName: test03
sn: test03
displayName:: 5rWL6K+VMw==
uid: test03
homeDirectory: /home/test03
loginShell: /bin/bash
mail: test03@linuxpanda.tech
cn:: 5rWL6K+VMw==
uidNumber:
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9
查询特定用户
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech" "(uid=test01)"
dn: uid=test01,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber:
givenName: test01
sn: test01
displayName:: 5rWL6K+VMQ==
uid: test01
homeDirectory: /home/test01
loginShell: /bin/bash
mail: test01@linuxpanda.tech
cn:: 5rWL6K+VMQ==
uidNumber:
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9
查询所有组
[root@VM_0_15_centos grafana]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=grafana,ou=group,dc=linuxpanda,dc=tech"
dn: ou=grafana,ou=group,dc=linuxpanda,dc=tech
objectClass: top
objectClass: organizationalUnit
ou: grafana dn: cn=grafana-admins,ou=grafana,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
cn: grafana-admins
gidNumber:
memberUid: test01 dn: cn=grafana-editors,ou=grafana,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
gidNumber:
cn: grafana-editors
memberUid: test02 dn: cn=grafana-viewers,ou=grafana,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
cn: grafana-viewers
gidNumber:
memberUid: test03
查询用户所在的组
[root@VM_0_15_centos grafana]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=grafana,ou=group,dc=linuxpanda,dc=tech" "(&(objectClass=posixGroup)(memberUid=test03))"
dn: cn=grafana-viewers,ou=grafana,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
cn: grafana-viewers
gidNumber:
memberUid: test03
修改ldap.toml文件
[root@VM_0_15_centos grafana]# vim ldap.toml
[root@VM_0_15_centos grafana]# cat ldap.toml [[servers]]
host = "ldap.linuxpanda.tech"
port =
use_ssl = false
start_tls = false
ssl_skip_verify = false bind_dn = "cn=admin,dc=linuxpanda,dc=tech"
bind_password = 'oracle' search_filter = "(uid=%s)" search_base_dns = ["ou=people,dc=linuxpanda,dc=tech"] group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=grafana,ou=group,dc=linuxpanda,dc=tech"]
[servers.attributes]
name = "givenName"
surname = "sn"
username = "uid"
#member_of = "memberOf"
member_of="cn"
email = "mail" [[servers.group_mappings]]
group_dn = "grafana-admins"
org_role = "Admin" [[servers.group_mappings]]
group_dn = "grafana-editors"
org_role = "Editor" [[servers.group_mappings]]
group_dn = "grafana-viewers"
#group_dn = "*"
org_role = "Viewer"
主要配置说明
host:就是指定你的ldap服务器,可以指定多个,需要分隔符。
port:你的ldap服务器的监听的端口。
bind_dn: 你需要特定ou的管理员账号,我这里使用了域管理者。
bind_password: 上面账号的密码。
search_filter: 用户搜索的过滤表达式,配合search_base_dns。
search_base_dns: 用户搜索的范围,这里在people这个ou里面搜索所有的用户,需要配合search_filter来完成用户的过滤。
group_search_filter: 组搜索的过滤表达式,配合group_search_base_dns。
group_search_base_dns: 指定组搜索的范围,我们的grafana这个ou里面设置了3个组。
servers.attributes: 这个主要是用户获取特定提取到的用户条目有特定字段的提取, username从查询的用户信息取特定字段值作为grafana的用户名,
member_of 代表,根据group_search_base_dns和group_search_filter 得到特定的一个组后,取那个字段作为组名字。 这个取到的结果需要和下面的映射保持一致。
email代表取特定用户的mail字段作为grafana用户的email信息。
servers_group_mappings: 这个是用于定义ldap用户组和grafana角色组的映射关系的, 上面member_of ,group_search_base_dns和group_search_filter 这三个条件可以获取到ldap的组名,这里要和三个条件获取的一致。
一张图说清楚

修改完毕重启服务进行测试。
最终结果图
修改grafana的日志级别为info。

调试
判定ldap服务是否可通
[root@VM_0_15_centos grafana]# telnet ldap.linuxpanda.tech
Trying 58.87.98.84...
Connected to ldap.linuxpanda.tech.
Escape character is '^]'.
确定开启了ldap配置
检查grafana.ini文件确认有ldap=true启用的,默认去掉注释还是false,注意啦。
关注日志信息
主要的日志有2个,一个是grafana的日志, 一个是ldap的日志。
[root@VM_0_15_centos grafana]# journalctl -f
Sep :: VM_0_15_centos grafana-server[]: t=--05T22::+ lvl=dbug msg="Ldap User found" logger=ldap info="(*login.LdapUserInfo)(0xc420030fc0)({\n DN: (string) (len=42) \"uid=test01,ou=people,dc=linuxpanda,dc=tech\",\n FirstName: (string) (len=6) \"test01\",\n LastName: (string) (len=6) \"test01\",\n Username: (string) (len=22) \"test01@linuxpanda.tech\",\n Email: (string) (len=22) \"test01@linuxpanda.tech\",\n MemberOf: ([]string) <nil>\n})\n"
Sep :: VM_0_15_centos grafana-server[]: t=--05T22::+ lvl=dbug msg="Updating last user_seen_at" logger=context userId= orgId= uname=test01@linuxpanda.tech user_id=
[root@VM_0_15_centos grafana]# tail -f /var/log/slapd/slapd.log
参考
grafana官方帮助文档:http://docs.grafana.org/
ldap配置系列三:grafana集成ldap的更多相关文章
- ldap配置系列二:jenkins集成ldap
ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...
- ldap配置系列一:ldap的安装
ldap的安装 ldap的简介 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简 ...
- MongoDB副本集配置系列三:副本集的认证方式
1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...
- 机器学习环境配置系列三之Anaconda
1.下载Anaconda文件 进入anaconda的官网 选择对应的系统 选择希望下载的版本(本人下载的是Anaconda 5.3 For Linux Installer Python 3.7 ver ...
- Linux下ipv6配置系列
Linux下ipv6配置系列一:如何配置Linux系统ipv6环境 Linux下ipv6配置系列二:如何为Nginx添加ipv6模块 Linux下ipv6配置系列三:如何为Nginx配置IPv6端口监 ...
- Mongodb集成LDAP授权
一.环境简介 Mongodb enterprise v4.0.16 OpenLDAP v2.4.44 二.Mongodb集成LDAP的授权过程 客户端指定某种外部验证方式链接Mongodb: Mong ...
- GJM :用JIRA管理你的项目(三)基于LDAP用户管理 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- hive、impala集成ldap
1.概要 1.1 环境信息 hadoop:cdh5.10 os:centos6.7 user:root hive.impala已集成sentry 1.2 访问控制权限 这里通过使用openldap来控 ...
- SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
随机推荐
- 在 Vim 中优雅地查找和替换(转)
总有人问我 Vim 中能不能查找,当然能!而且是超级强的查找! 这篇文章来详细介绍 Vim 中查找相关的设置和使用方法. 包括查找与替换.查找光标所在词.高亮前景/背景色.切换高亮状态.大小写敏感查找 ...
- mac上安装iterm2的一些步骤记录
1.首先到item官网上下载item 下载地址 http://iterm2.com/ 2.把iitem2设置为默认终端: 3.设置快速打开关闭的hotkey 我们这里设置为command + T键 ...
- 转 c#性能优化秘密
原文:http://www.dotnetperls.com/optimization Generally, using the simplest features of the language pr ...
- SVM支持向量机 详解(含公式推导)
关于SVM的内容,这三位老哥写的都挺好的,内容是互补的,结合他们三位的一起看,就可以依次推导出SVM得公式了. https://www.cnblogs.com/steven-yang/p/565836 ...
- spring-cloud-Zuul学习(四)【中级】--自定义zuul Filter详解【重新定义spring cloud实践】
实现自定义zuul Filter 方法很简单,只要继承ZuulFilter跟加入到spring IOC容器即可,zuulFilter是一个抽象类,里面包含以下方法需要我们实现: String fi ...
- Luogu P1894 [USACO4.2]The Perfect Stall
传送门 是道绿题???二分图(网络流)不应该是蓝打底??? 这题浏览一遍就知道是二分图(网络流)算法喽,二分图代码太短,不想写(←这人???),所以就拿网络流练练手. 设源点S=0,汇点T=n+m+1 ...
- [lua][openresty]代码覆盖率检测的解决方式
废话在前 什么是代码覆盖率 来自百度百科 代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率. 开发人员为何关注? 在我们的开发过 ...
- OSGi解决的问题
osgi最明显的缺陷 bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务 ...
- Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
在屏幕上绘制图形只是OpenGL的相当基础的特点,你也可以用其他的Android图形框架类来实现这些,包括Canvas和Drawable对象.OpenGL ES为在三维空间中移动和变换提供了额外的功能 ...
- [Swift]LeetCode330. 按要求补齐数组 | Patching Array
Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...