系统环境
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
启用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).
参考
官网
https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_51_ldap_for_grafana.html