Grafana 如何配置 LDAP 认证实现企业统一账号登录?

文章导读
Grafana 原生支持 LDAP 认证,通过修改配置文件即可对接企业 AD 或 OpenLDAP,适合已有统一身份管理体系的团队。
📋 目录
  1. 快速处理思路
  2. 核心配置详解
  3. Active Directory 特殊配置注意
  4. 安全加固
  5. 怎么验证是否生效
  6. 常见坑
  7. 参考来源
A A

Grafana 原生支持 LDAP 认证,通过修改配置文件即可对接企业 AD 或 OpenLDAP,适合已有统一身份管理体系的团队。

先说结论:配置 LDAP 能减少账号维护成本,但需确保网络连通、配置键名准确及权限最小化。

  • 适合:拥有内部 LDAP/AD 服务且希望统一管控登录权限的企业环境。
  • 先准备:确认 Grafana 服务器能连通 LDAP 服务器端口,获取只读绑定账号,注意 AD 环境需使用 sAMAccountName 过滤。
  • 验收:使用 LDAP 账号登录成功,角色权限映射符合预期,配置文件权限已加固。

快速处理思路

LDAP 配置主要涉及两个文件修改、权限加固和服务重启,核心步骤如下:

  1. 编辑 /etc/grafana/grafana.ini,在 [auth.ldap] section 中设置 enabled = true
  2. 编辑 /etc/grafana/ldap.toml,填写 LDAP 服务器地址、绑定用户 DN 及密码,注意键名拼写。
  3. 配置组映射规则,将 LDAP 组对应到 Grafana 的 Viewer、Editor 或 Admin 角色。
  4. 设置配置文件权限为 600,防止密码泄露。
  5. 重启 Grafana 服务,并通过日志确认连接状态。

核心配置详解

1. 开启 LDAP 认证开关

找到 Grafana 主配置文件,通常位于 /etc/grafana/grafana.ini。搜索 [auth.ldap] 部分,修改如下:

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

注意 config_file 路径需与实际存放位置一致,allow_sign_up 设为 true 允许首次登录自动创建本地映射账号。

2. 配置 LDAP 连接信息

编辑 /etc/grafana/ldap.toml,填写服务器地址和绑定账号。以下是一个基础示例(已修正键名):

[[servers]]
host = "ldap.example.com"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false
bind_dn = "cn=admin,dc=example,dc=com"
bind_password = 'your_password'
search_filter = "(cn=%s)"
search_base_dn = ["dc=example,dc=com"]

注意官方配置键名为 search_base_dn 而非 search_base_dns,拼写错误会导致配置无法生效。如果使用 LDAPS,请将 port 改为 636 并设置 use_ssl = true。绑定账号建议使用只读权限的服务账号,避免安全风险。

3. 配置组角色映射

在同一个 ldap.toml 文件中,配置 group_mappings 段落,决定哪些 LDAP 组拥有 Grafana 管理员权限:

[[servers.group_mappings]]
group_dn = "cn=grafana_admins,ou=groups,dc=example,dc=com"
org_role = "Admin"
[[servers.group_mappings]]
group_dn = "cn=grafana_editors,ou=groups,dc=example,dc=com"
org_role = "Editor"

未匹配到任何组的用户可能无法登录或默认为 Viewer,具体取决于是否配置了默认角色或允许自动创建用户(allow_sign_up),建议显式定义默认角色。

Active Directory 特殊配置注意

如果对接的是 Windows Active Directory (AD),默认的 search_filter = "(cn=%s)" 通常无法匹配用户,会导致登录失败。AD 环境建议使用以下过滤器:

search_filter = "(sAMAccountName=%s)"

或者使用用户 principal name:

search_filter = "(userPrincipalName=%s)"

请根据实际 AD 架构选择合适的过滤字段,并可先通过 ldapsearch 工具验证过滤器是否能在命令行查找到对应用户。

安全加固

ldap.toml 文件中包含绑定账号的明文密码,必须限制文件权限,仅允许 Grafana 运行用户读取:

Grafana 如何配置 LDAP 认证实现企业统一账号登录?
chmod 600 /etc/grafana/ldap.toml
chown grafana:grafana /etc/grafana/ldap.toml

这一步能有效防止其他系统用户窃取 LDAP 凭证。

怎么验证是否生效

1. 登录测试

打开 Grafana 登录页面,使用 LDAP 账号和密码尝试登录。如果成功进入首页,说明认证通过。

2. 检查日志

查看 Grafana 日志文件,通常位于 /var/log/grafana/grafana.log。搜索 ldap 关键字,确认没有 errorfailed 字样。成功的日志通常包含 Logging in user 相关信息。

3. 验证权限

登录成功后,点击右上角用户头像,确认显示的角色(如 Admin 或 Viewer)是否与 ldap.toml 中的组映射一致。

常见坑

1. 特殊字符密码

bind_password 中如果包含特殊字符(如 #、!、$),在 TOML 文件中可能需要用单引号包裹,否则会导致解析错误,日志会报配置加载失败。

2. TLS/SSL 证书问题

如果启用 LDAPS 且 LDAP 服务器使用自签名证书,Grafana 默认会验证证书合法性。测试环境可临时设置 ssl_skip_verify = true,生产环境建议导入可信 CA 证书。

3. 组 DN 匹配失败

LDAP 组 DN 必须完全匹配,包括大小写和空格。建议先在 LDAP 客户端工具(如 ldapsearch)中查询准确的 DN 字符串再填入配置。

4. 防火墙拦截

确保 Grafana 服务器能够访问 LDAP 服务器的 389 或 636 端口,网络不通会导致登录超时。

参考来源

  • Grafana Labs, LDAP authentication, https://grafana.com/docs/grafana/latest/administration/authentication/ldap/