Grafana 原生支持 LDAP 认证,通过修改配置文件即可对接企业 AD 或 OpenLDAP,适合已有统一身份管理体系的团队。
先说结论:配置 LDAP 能减少账号维护成本,但需确保网络连通、配置键名准确及权限最小化。
- 适合:拥有内部 LDAP/AD 服务且希望统一管控登录权限的企业环境。
- 先准备:确认 Grafana 服务器能连通 LDAP 服务器端口,获取只读绑定账号,注意 AD 环境需使用 sAMAccountName 过滤。
- 验收:使用 LDAP 账号登录成功,角色权限映射符合预期,配置文件权限已加固。
快速处理思路
LDAP 配置主要涉及两个文件修改、权限加固和服务重启,核心步骤如下:
- 编辑
/etc/grafana/grafana.ini,在[auth.ldap]section 中设置enabled = true。 - 编辑
/etc/grafana/ldap.toml,填写 LDAP 服务器地址、绑定用户 DN 及密码,注意键名拼写。 - 配置组映射规则,将 LDAP 组对应到 Grafana 的 Viewer、Editor 或 Admin 角色。
- 设置配置文件权限为 600,防止密码泄露。
- 重启 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 运行用户读取:
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 关键字,确认没有 error 或 failed 字样。成功的日志通常包含 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/