You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana LDAP认证配置失效,寻求合适搜索过滤器方案

解决Grafana LDAP嵌套AD组认证问题

我来帮你搞定这个嵌套AD组的Grafana LDAP认证问题,你的配置里有几个关键错误和未启用的核心配置,这就是导致认证失败的根源。下面一步步帮你修正:

1. 先修正基础语法错误

你的配置里有三处低级错误,先改掉:

  • search_filter缺少闭合括号:原配置里的"(&(objectCategory=Person)(sAMAccountName=%s)"漏掉了最后一个),正确写法是:
    search_filter = "(&(objectCategory=Person)(sAMAccountName=%s))"
    
  • member_of拼写错误:把distinguisedName修正为正确的distinguishedName:
    member_of = "distinguishedName"
    
  • group_dn里的多余空格:CN=Grafana- Admin里的空格要去掉,改成CN=Grafana-Admin,避免匹配不到目标组。

2. 启用嵌套组搜索配置

因为你的用户属于嵌套子组(比如sys22在Graylog组,而Graylog组是Grafana组的成员),必须用AD的LDAP_MATCHING_RULE_IN_CHAIN规则来递归查找嵌套关系。你之前注释掉的group搜索配置正是关键,现在要启用并正确配置:

# 取消注释并保留以下配置
group_search_filter = "(member:1.2.840.113556.1.4.1941:=%s)"
group_search_filter_user_attribute = "distinguishedName"
group_search_base_dns = ["OU=Group,OU=SE,OU=Unit,DC=corp,DC=domain,DC=com"]

这个过滤器的作用是:基于用户的distinguishedName,递归查找所有包含该用户(直接或间接通过子组)的AD组,完美适配你的嵌套组场景。

3. 完整修正后的配置

把所有修改整合后,你的LDAP配置应该是这样的:

verbose_logging = true

[[servers]]
host = "dc-01.corp.domain.com"
port = 389
use_ssl = false
ssl_skip_verify = true
bind_dn = "CN=Grafana-Auth,OU=ApplicationAccount,OU=SE,OU=Admin,DC=corp,DC=domain,DC=com"
bind_password = 'pass1'
search_filter = "(&(objectCategory=Person)(sAMAccountName=%s))"
search_base_dns = ["dc=corp,dc=domain,dc=com"]

# 启用嵌套组搜索
group_search_filter = "(member:1.2.840.113556.1.4.1941:=%s)"
group_search_filter_user_attribute = "distinguishedName"
group_search_base_dns = ["OU=Group,OU=SE,OU=Unit,DC=corp,DC=domain,DC=com"]

[servers.attributes]
name = "givenName"
surname = "sn"
username = "sAMAccountName"
member_of = "distinguishedName"
email = "mail"

[[servers.group_mappings]]
group_dn = "CN=Grafana-Admin,OU=Access,OU=Group,OU=SE,OU=Unit,DC=corp,DC=domain,DC=com"
org_role = "Admin"

[[servers.group_mappings]]
group_dn = "CN=Grafana-User,OU=Access,OU=Group,OU=SE,OU=Unit,DC=corp,DC=domain,DC=com"
org_role = "Editor"

[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"

4. 调试建议

你已经开启了verbose_logging = true,可以查看Grafana的LDAP日志(通常在/var/log/grafana/grafana.log),确认:

  • Grafana是否成功绑定到AD服务器
  • 用户的distinguishedName是否被正确检索到
  • 嵌套组搜索是否返回了Grafana-Admin/Grafana-User组

如果还是有问题,可以用ldapsearch命令手动测试过滤器,比如先检索用户的DN:

ldapsearch -x -H ldap://dc-01.corp.domain.com:389 -D "CN=Grafana-Auth,OU=ApplicationAccount,OU=SE,OU=Admin,DC=corp,DC=domain,DC=com" -w 'pass1' -b "dc=corp,dc=domain,dc=com" "(&(objectCategory=Person)(sAMAccountName=sys22))" distinguishedName

再用返回的用户DN测试组搜索:

ldapsearch -x -H ldap://dc-01.corp.domain.com:389 -D "CN=Grafana-Auth,OU=ApplicationAccount,OU=SE,OU=Admin,DC=corp,DC=domain,DC=com" -w 'pass1' -b "OU=Group,OU=SE,OU=Unit,DC=corp,DC=domain,DC=com" "(member:1.2.840.113556.1.4.1941:=CN=sys22,OU=Users,DC=corp,DC=domain,DC=com)"

如果这个命令能返回Grafana-Admin/Grafana-User组,说明过滤器是正确的,问题就出在Grafana的配置应用上。

内容的提问来源于stack exchange,提问作者Branko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:27:43