前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grafana集成openLDAP实现统一登录功能

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

作者头像
保持热爱奔赴山海
发布2022-01-11 13:32:37
1.6K0
发布2022-01-11 13:32:37
举报
文章被收录于专栏:饮水机管理员饮水机管理员

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

openLDAP的部署

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

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

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

# 安装ldap server程序

代码语言:javascript
复制
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

代码语言:javascript
复制
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

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

然后:

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里面。示例如下:

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

最终效果如下:

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

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

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

代码语言:javascript
复制
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"

结果如下:

代码语言:javascript
复制
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的修改

代码语言:javascript
复制
# 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 '^$|^#' 下面内容都是重要部分,因此都加红高提醒

代码语言:javascript
复制
[[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登录

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

lisi登录

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

wangwu登录

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

admin登录

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

授权

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • openLDAP的部署
  • LDAP添加用户账号
  • Grafana的修改
  • Grafana的登录和权限管理
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档