菜单
Grafana Cloud 企业版

配置增强型 LDAP 集成

增强型 LDAP 集成在 Grafana 开源版本中提供的 LDAP 集成基础上增加了额外功能。

注意

Grafana EnterpriseGrafana Cloud 中可用。如果您是 Grafana Cloud 客户,请在 Cloud Portal 中提交支持工单以请求此功能。

要使用基于角色的权限控制用户访问,请参考基于角色的访问控制

团队的 LDAP 组同步

借助增强型 LDAP 集成,您可以设置 LDAP 组与团队之间的同步。这使得某些 LDAP 组的 LDAP 用户能够自动添加或从 Grafana 中的某些团队中移除。

LDAP group synchronization

Grafana 会跟踪团队中所有已同步的用户,您可以在团队成员列表中看到哪些用户已从 LDAP 同步(参见截图中的 LDAP 标签)。当 LDAP 组成员身份发生变化时,此机制允许 Grafana 从团队中移除现有的已同步用户。此机制还允许您手动将用户添加为团队成员,并且在用户登录时不会被移除。这使您能够灵活地结合使用 LDAP 组成员身份和 Grafana 团队成员身份。

了解更多关于团队同步的信息。

主动 LDAP 同步

在 Grafana 的开源版本中,LDAP 中的用户数据仅在使用 LDAP 进行身份验证的登录过程中同步。

通过主动 LDAP 同步,您可以配置 Grafana 在后台主动与 LDAP 服务器同步用户。只有至少登录过 Grafana 一次的用户才会被同步。

角色和团队成员身份已更新的用户需要刷新页面才能访问新功能。

被移除的用户会自动登出,其账户被禁用。这些账户在 Server Admin > Users 页面中显示为 disabled 标签。被禁用的用户保留其在仪表盘、文件夹和数据源上的自定义权限,因此如果您在 LDAP 数据库中将其重新添加回来,他们将拥有与之前相同的自定义权限访问应用程序。

bash
[auth.ldap]
...

# You can use the Cron syntax or several predefined schedulers -
# @yearly (or @annually) | Run once a year, midnight, Jan. 1st        | 0 0 1 1 *
# @monthly               | Run once a month, midnight, first of month | 0 0 1 * *
# @weekly                | Run once a week, midnight between Sat/Sun  | 0 0 * * 0
# @daily (or @midnight)  | Run once a day, midnight                   | 0 0 * * *
# @hourly                | Run once an hour, beginning of hour        | 0 * * * *
sync_cron = "0 1 * * *" # This is default value (At 1 am every day)
# This cron expression format uses 5 space-separated fields, for example
# sync_cron = "*/10 * * * *"
# This will run the LDAP Synchronization every 10th minute, which is also the minimal interval between the Grafana sync times i.e. you cannot set it for every 9th minute

# You can also disable active LDAP synchronization
active_sync_enabled = true # enabled by default

主动 LDAP 同步不支持单绑定配置(如单绑定示例中所示),因为 Grafana 需要用户信息来执行 LDAP 搜索。

为了使同步生效,ldap.toml 配置文件中的 servers.search_filterservers.attributes.username 必须匹配。默认情况下,servers.attributes.usernamecn,因此如果您使用另一个属性作为搜索过滤器,您也必须更新用户名属性。

例如

[[servers]]
search_filter = "(sAMAccountName=%s)"

[servers.attributes]
username  = "sAMAccountName"

如果属性不相同,用户的会话将在每次同步后被终止。这是因为搜索将使用用户名的值进行,而该值对于搜索过滤器中使用的属性不存在。