Grafana LDAP 集成

系统环境

os: CentOS Linux release 7.6.1810 (Core)

安装grafana

grafana 版本:7.1.0

wget https://dl.grafana.com/oss/release/grafana-7.1.0-1.x86_64.rpm
sudo yum install grafana-7.1.0-1.x86_64.rpm

启动服务

$ sudo systemctl daemon-reload
$ sudo systemctl start grafana-server
$ sudo systemctl status grafana-server

LDAP 配置

已经提前安装了openLDAP,创建了用户和组,过程略。

创建的组和用户如下图。其中组和用户的关系:

ldapgroup1 <- ldapuser1

ldapgroup2 <- ldapuser2

image-20201209170930894.png

启用LDAP

修改 /etc/grafana/grafana.ini

[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true

LDAP配置

修改 /etc/grafana/ldap.toml

[[servers]]
# Ldap server host (specify multiple hosts space separated)
host = "127.0.0.1"
# Default port is 389 or 636 if use_ssl = true
port = 389

# Search user bind dn
bind_dn = "cn=Manager, dc=roywork, dc=com"
# Search user bind password
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
bind_password = '123456'

# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
search_filter = "(cn=%s)"

# An array of base dns to search through
search_base_dns = ["ou=People,dc=roywork,dc=com"]

# openLdap objectClass 使用 posixGroup,下面这几行一定要配置,(默认这部分被注释掉)
group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
group_search_base_dns = ["ou=Group,dc=roywork,dc=com"]
group_search_filter_user_attribute = "uid"

# Specify names of the ldap attributes your ldap uses
# 这部分不改,用默认值
[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
member_of = "memberOf"
email =  "email"

# 定义 ldap 中的group 与 grafana 中 role 的对应关系
[[servers.group_mappings]]
group_dn = "cn=ldapgroup1,ou=Group,dc=roywork,dc=com"
org_role = "Admin"
[[servers.group_mappings]]
group_dn = "cn=ldapgroup2,ou=Group,dc=roywork,dc=com"
org_role = "Editor"
[[servers.group_mappings]]
group_dn = "*"
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: 指定组搜索的范围,Group这个ou里面设置了2个组。

servers.attributes: 这个主要是用户获取特定提取到的用户条目有特定字段的提取, username从查询的用户信息取特定字段值作为grafana的用户名,

​ member_of 代表,根据group_search_base_dns和group_search_filter 得到特定的一个组后,取那个字段作为组名字。 这个取到的结果需要和下面的映射保持一致。(配置位 dn 也能用,改位cn 失败)

​ email代表取特定用户的mail字段作为grafana用户的email信息。

servers_group_mappings: 这个是用于定义ldap用户组和grafana角色组的映射关系的, 上面member_of ,group_search_base_dns和group_search_filter 这三个条件可以获取到ldap的组名,这里要和三个条件获取的一致。

验证

Restart grafana service

sudo systemctl restart grafana-server

Login grafana web page to verify ldap user(with admin).

image-20201209164615564.png
image-20201209164828016.png

参考

官网

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

你可能感兴趣的:(Grafana LDAP 集成)