其他分享
首页 > 其他分享> > Grafana集成openLDAP实现统一登录功能

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

作者:互联网

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