[转帖]Grafana集成openLDAP实现统一登录功能

grafana,集成,openldap,实现,统一,登录,功能 · 浏览次数 : 0

小编点评

**归纳总结** * 生成内容时需要带简单的排版。 * 使用3个ldap账号登录的效果截图。 * 生成内容时需要带简单的排版。

正文

https://cloud.tencent.com/developer/article/1932191?areaSource=&traceId=

 

Grafana集成openLDAP实现统一登录功能

openLDAP的部署

openLDAP这里简单起见,我们直接用docker方式部署。

生产环境,需要将配置文件之类的挂载到宿主机上,防止数据丢失的情况出现。具体参考https://github.com/osixia/docker-openldap

我这里搭建测试环境用的是ECS地址: 10.10.2.195 (centos7系统)

# 安装ldap server程序

docker pull osixia/openldap

mkdir -p /data/openldap/{config,database}  # 创建外部挂载目录

docker run -p 389:389 -p 689:689 -v /data/openldap/database:/var/lib/ldap -v /data/openldap/config:/etc/ldap/slapd.d --name myopenldap --network bridge --hostname openldap-host --env LDAP_ORGANISATION="mylitboy" --env LDAP_DOMAIN="mylitboy.com" --env LDAP_ADMIN_PASSWORD="ldap123" --env LDAP_TLS=false --detach osixia/openldap

说明:
配置LDAP组织者:--env LDAP_ORGANISATION="mylitboy"
配置LDAP域:--env LDAP_DOMAIN="mylitboy.com"
配置LDAP密码:--env LDAP_ADMIN_PASSWORD="ldap123"
默认登录用户名:admin

# 安装web ui

docker pull osixia/phpldapadmin
docker run -d --privileged -p 10004:80 --name myphpldapadmin --env PHPLDAPADMIN_HTTPS=false --env PHPLDAPADMIN_LDAP_HOSTS=10.10.2.195 --detach osixia/phpldapadmin

说明:
PHPLDAPADMIN_LDAP_HOSTS 需要做修改,适配自己的环境


web界面: http://10.10.2.195:10004
Login DN:   cn=admin,dc=mylitboy,dc=com
Password:   ldap123

LDAP添加用户账号

有了web页面:http://10.10.2.195:10004/

Login DN: cn=admin,dc=mylitboy,dc=com

Password: ldap123

下面的添加账号的操作,可以在web界面操作,也可以通过客户端操作。

这里我使用的是一个win下的客户端工具, 个人认为比较好用: LdapAdmin.exe

然后:

1、去创建名为group的ou,然后进去后再创建一个名为grafana的ou,然后再去创建3个group,分别是 grafana-admins grafana-editors grafana-viewers 。

2、创建一个名为people的ou,进去创建3个user,分别是 lisi wangwu zhangsan (创建好账号后,右击set password,设置下密码,我这里简单点直接账号密码用一样的) 。 示例如下:

3、将lisi zhangsan wangwu 这3个账号,分别加到step1的不同group里面。示例如下:

最终效果如下:

我们还可以用ldap的命令行工具查看下:

yum install openldap-clients 安装下ldap的客户端

ldapsearch  -LLL -w ldap123   -x -H ldap://10.10.2.195:389  -D"cn=admin,dc=mylitboy,dc=com"  -b "ou=grafana,ou=group,dc=mylitboy,dc=com"

结果如下:

dn: ou=grafana,ou=group,dc=mylitboy,dc=com
objectClass: top
objectClass: organizationalUnit
ou: grafana

dn: cn=grafana-admins,ou=grafana,ou=group,dc=mylitboy,dc=com
gidNumber: 501
objectClass: posixGroup
objectClass: top
cn: grafana-admins
memberUid: wangwu

dn: cn=grafana-editors,ou=grafana,ou=group,dc=mylitboy,dc=com
gidNumber: 501
objectClass: posixGroup
objectClass: top
cn: grafana-editors
memberUid: zhangsan

dn: cn=grafana-viewers,ou=grafana,ou=group,dc=mylitboy,dc=com
gidNumber: 501
objectClass: posixGroup
objectClass: top
cn: grafana-viewers
memberUid: lisi

Grafana的修改

# egrep -v '^#|^$|^;' /etc/grafana/grafana.ini   

app_mode = production
[paths]
data = /var/lib/grafana
temp_data_lifetime = 24h
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = conf/provisioning
[server]
protocol = http
http_addr = 10.10.11.111
http_port = 3000
domain = 10.10.11.111
root_url = http://10.10.11.111:3000
enable_gzip = false
[database]
type = mysql
host = 10.10.11.111:3306
name = grafana
user = grafana
password = grafana
ssl_mode = disable
max_idle_conn = 2
max_open_conn = 10
conn_max_lifetime = 14400
[remote_cache]
[dataproxy]
[analytics]
[security]
[snapshots]
[dashboards]

[users]
allow_sign_up = false  # 设置为false后,禁止注册账号 
allow_org_create = true
auto_assign_org = true
password_hint = password
default_theme = dark

[auth]
[auth.anonymous]
[auth.github]
[auth.google]

[auth.generic_oauth]
enabled = false

[auth.saml] # Enterprise only
[auth.grafana_com]
[auth.proxy]

[auth.basic]
enabled = false  # 设置为false后,虽然可以注册grafana账号首次可以进去后,但是退出后就不能登录了,这样是为了让大家都使用ldap登录方式,而不是自行注册

[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true  # 必须打开这个功能,不然新的ldap账号就无法登录了

[smtp]
enabled = true
host = 10.10.13.92:25
skip_verify = true
from_address = server@demo.com

[emails]
[log]
level = info
[log.console]
[log.file]
format = text
log_rotate = true
max_lines = 1000000
max_size_shift = 28
daily_rotate = true
max_days = 7
[log.syslog]

[alerting]
enabled = true
execute_alerts = true
error_or_timeout = alerting
nodata_or_nullvalues = no_data
concurrent_render_limit = 5
evaluation_timeout_seconds = 30
notification_timeout_seconds = 30
max_attempts = 3

[explore]
[metrics]
[metrics.graphite]
[tracing.jaeger]
[grafana_com]
[external_image_storage]
[external_image_storage.s3]
[external_image_storage.webdav]
[external_image_storage.gcs]
[external_image_storage.azure_blob]
[external_image_storage.local]
[rendering]
[enterprise]
[panels]

[plugins]
allow_loading_unsigned_plugins=grafana-image-renderer

# cat /etc/grafana/ldap.toml | egrep -v '^$|^#' 下面内容都是重要部分,因此都加红高提醒

[[servers]]
host = "10.10.2.195"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false
bind_dn = "cn=admin,dc=mylitboy,dc=com"
bind_password = 'ldap123'
search_filter = "(uid=%s)"
search_base_dns = ["ou=people,dc=mylitboy,dc=com"]
group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=grafana,ou=group,dc=mylitboy,dc=com"]

[servers.attributes]
name = "givenName"
surname = "sn"
username = "uid"
member_of = "cn"
email =  "email"

[[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"
org_role = "Viewer"

Grafana的登录和权限管理

默认情况下,grafana有个admin的账号,我们先改个复杂的密码,后期admin一般用作备用账号。

然后,用不同的账号登录进去,看下账号权限是否符合我们ldap里面定义的那样。

下面是使用3个ldap账号登录的效果截图:

zhangsan登录

lisi登录

wangwu登录

admin登录

授权

1、新的运维入职, 我们直接在ldap上,将其加到 grafana-admins组即可具备Admin管理权限。

2、开发入职,我们直接在ldap上,将其加到 grafana-viewers 组即可具备只读权限。

3、开发leader,我们直接在ldap上,将其加到 grafana-editors组即可具备简单的修改权限。

4、部分dashboard需要授权多人编辑,可以单独编辑dashboard,给team或者个人开独立的权限。

参考文档

https://blog.csdn.net/mylitboy/article/details/88865428

https://grafana.com/docs/grafana/v7.5/auth/ldap/

https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_51_ldap_for_grafana.html

与[转帖]Grafana集成openLDAP实现统一登录功能相似的内容:

[转帖]Grafana集成openLDAP实现统一登录功能

https://cloud.tencent.com/developer/article/1932191?areaSource=&traceId= Grafana集成openLDAP实现统一登录功能 openLDAP的部署 openLDAP这里简单起见,我们直接用docker方式部署。 生产环境,需要

[转帖]Prometheus+Grafana+rabbitmq_prometheus 监控 RabbitMQ

https://www.zhangbj.com/p/1065.html 关于 rabbitmq_prometheus rabbitmq_prometheus是RabbitMQ 3.8.0默认集成的监控插件。 相关文档 https://www.rabbitmq.com/monitoring.html

[转帖]grafana 连接 influxdb 1.x 和 2.x

文章目录 一、安装 influxdbⅠ、docker 安装 二、常用操作Ⅰ、influxdb 1.x版本添加用户认证Ⅱ、influxdb 2.x 使用命令行Ⅲ、CLI 配置tokenⅤ、CLI 查询测试 三、grafana 安装使用Ⅱ、docker 安装 grafana 四、grafana 连接 i

[转帖]grafana配置邮件发送

grafana的邮件配置文件是/etc/grafana/grafana.ini,新建grafana.ini文件,内容如下。 chown 472:472 grafana.ini #################################### SMTP / Emailing #########

[转帖]使用 Grafana 监控 TiDB 的最佳实践

https://docs.pingcap.com/zh/tidb/stable/grafana-monitor-best-practices 使用 TiUP 部署 TiDB 集群时,如果在拓扑配置中添加了 Grafana 和 Prometheus,会部署一套 Grafana + Prometheus

[转帖]Kinaba和Grafana的区别

作者:Elastic 中文社区链接:https://www.zhihu.com/question/54388690/answer/411123602来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 说起来,两者颇有渊源,怎么说呢? Grafana 最早其实应该是 Kib

[转帖]k8spacket 和 Grafana 对 kubernetes 的 TCP 数据包流量可视化

https://devpress.csdn.net/k8s/62ff4fe47e66823466193b95.html 你知道你不看的时候你的k8s集群在做什么吗?谁与他建立 TCP 通信?他调用了谁,例如,来自第三方库? 使用k8spacket和Grafana,您可以可视化集群中的 TCP 流量。

[转帖]Promethues + Grafana + AlertManager使用总结

Prometheus是一个开源监控报警系统和时序列数据库,通常会使用Grafana来美化数据展示。 1|01. 监控系统基础架 1|11.1核心组件 Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。 exporters ,数据采

[转帖]使用Prometheus和Grafana监控RabbitMQ集群 (使用RabbitMQ自带插件)

https://www.cnblogs.com/hahaha111122222/p/15683696.html 配置RabbitMQ集群 官方文档:https://www.rabbitmq.com/prometheus.html#quick-start 官方github地址:https://gith

[转帖]容器监控实践-Grafana

容器监控实践-Grafana https://www.jianshu.com/p/cdda94e5b9e2 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警。基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示的