ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-06-18 23:03:08  阅读:353  来源: 互联网

标签:group 登录 dc grafana openLDAP mylitboy ou Grafana com


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

 

 

openLDAP的部署

 

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

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

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

 

# 安装ldap server程序

docker pull osixia/openldap

docker run -p 389:389 --name myopenldap --network bridge --hostname openldap-host --env LDAP_ORGANISATION="mylitboy" --env LDAP_DOMAIN="mylitboy.com" --env LDAP_ADMIN_PASSWORD="ldap123" --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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

然后:

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

最终效果如下:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

我们还可以用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登录

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

lisi登录

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

wangwu登录

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

admin登录

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

 

授权

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

 

标签:group,登录,dc,grafana,openLDAP,mylitboy,ou,Grafana,com
来源: https://blog.51cto.com/lee90/2926888

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有