Grafana 集成 OpenLDAP统一账户认证

一、LDAP 账户配置

1.1 创建ldap普通用户

创建普通用户、用户组并关联对应的用户,便于测试grafana权限

图片1

1.2 创建只读用户

创建grafana只读用户,用于grafana查询ldap登录账户信息

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# cd openldap-2.4.44/etc/openldap

#创建grafana普通账户
[root@localhost ~]# cat readOnly.ldif
dn: cn=grafana,dc=sys,dc=com
cn: grafana
objectClass: simpleSecurityObject
objectClass: organizationalRole
description: LDAP read only user
userPassword: abc.abc

[root@localhost ~]# ../../bin/ldapadd -x -D cn=admin,dc=sys,dc=com -w Abc.123456 -f readOnly.ldif
adding new entry "cn=grafana,dc=sys,dc=com"
1
2
3
4
5
6
7
8
9
10
11
12
13
#绑定grafana账户权限
[root@localhost ~]# cat readonly-user-acl.ldif
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=sys,dc=com" write
by anonymous auth
by self write
by dn="cn=grafana,dc=sys,dc=com" read
by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=sys,dc=com" write by * read

[root@localhost ~]# ../../bin/ldapmodify -h 127.0.0.1 -x -D cn=admin,dc=sys,dc=com -w Abc.123456 -f readonly-user-acl.ldif

图片2

二、Grafana 集成LDAP

2.1 设置ldap配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@localhost ~]# cd grafana-7.1.0/conf/
[root@localhost ~]# cp ldap.toml ldap.toml.bak
[root@localhost ~]# cp defaults.ini defaults.ini.bak
[root@localhost ~]# vim ldap.toml

host = "192.168.48.132"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false

# Search user bind dn
bind_dn = "cn=grafana,dc=sys,dc=cn"
# Search user bind password
bind_password = "abc.abc"

search_filter = "(uid=%s)" #uid登录
#search_filter = "(mail=%s)" #邮箱登录
search_base_dns = ["ou=ops,dc=sys,dc=cn"]

group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=grafana,ou=management_system,dc=sys,dc=com"]

[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
member_of = "cn"
email = "email"
#username = "mail"
#member_of = "memberOf"

#grafana-admins组的用户分配到Admin权限组
[[servers.group_mappings]]
group_dn = "grafana-admins"
org_role = "Admin"

#grafana-editors组的用户分配到Editor权限组
[[servers.group_mappings]]
group_dn = "grafana-editors"
org_role = "Editor"

#grafana-viewers组的用户分配到viewer权限组
[[servers.group_mappings]]
group_dn = "grafana-viewers"
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的组名,这里要和三个条件获取的一致。

2.2 启用ldap认证

1
2
3
4
5
6
[root@localhost ~]# vim grafana-7.1.0/conf/defaults.ini

[auth.ldap]
enabled = true
config_file = /work/admin/grafana-7.1.0/conf/ldap.toml
allow_sign_up = true

完了之后重启grafana

三、测试ldap账户登录

分别使用前面创建的test账户登录,查看配置的权限是否正确

图片3

-------------本文结束感谢您的阅读-------------