2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 LDAP

概述

外部 LDAP 认证 可用于检查用户的用户名和密码。

Zabbix LDAP 认证至少与 Microsoft Active Directory 和 OpenLDAP 兼容。

如果只配置了 LDAP 登录,则用户必须同时存在于 Zabbix 中,但其 Zabbix 密码不会被使用。认证成功后,Zabbix 将使用 LDAP 返回的用户名属性与本地用户名进行匹配。

用户自动配置

可以为LDAP用户配置 JIT(即时)用户自动配置。在这种情况下,不需要用户已经存在于 Zabbix 中。当用户第一次登录 Zabbix 时,可以创建用户账户。

当LDAP用户输入其LDAP登录名和密码时,Zabbix 会检查默认 LDAP 服务器是否存在此用户。如果用户存在但在 Zabbix 中尚无账户,则会在 Zabbix 中创建新用户,并允许用户登录。

如果启用了 JIT 自动配置,必须在 认证 标签中指定一个用于取消配置用户的用户组。

JIT 自动配置还允许根据LDAP中的更改更新已配置的用户账户。例如,如果用户从一个LDAP组移动到另一个组,该用户在 Zabbix 中的组也会相应移动; 如果用户从LDAP组中移除,则该用户也会从 Zabbix 中的组中移除,并且如果不属于任何其他组,则会添加到取消配置用户的用户组中。 请注意,已配置的用户账户基于配置的配置周期或用户登录到 Zabbix 时进行更新。

只有当LDAP配置为使用“匿名”或“特殊用户”进行绑定时,才能使用LDAP JIT自动配置。对于直接用户绑定,仅在用户登录操作时才会进行自动配置,因为此类绑定使用用户登录密码。

多个服务器

如果需要,可以定义多个LDAP服务器。例如,可以使用不同的服务器来认证不同的用户组。一旦配置了LDAP服务器,在user group配置中,就可以为相应的用户组选择所需的LDAP服务器。

如果用户属于多个用户组和多个LDAP服务器,则将使用按名称升序排列的LDAP服务器列表中的第一个服务器进行认证。

配置

配置参数:

参数 描述
启用LDAP认证 勾选复选框以启用LDAP认证。
启用JIT provisioning 勾选复选框以启用JIT(即时) provisioning。
服务器 点击 Add 来配置一个LDAP服务器(详见下面的LDAP服务器配置)。
区分大小写登录 取消勾选复选框以禁用用户名的区分大小写登录(默认启用)。例如,即使Zabbix用户是 'Admin',也可以使用 'ADMIN' 用户登录。
注意,如果禁用了区分大小写登录,并且Zabbix数据库中存在多个用户名相似的用户(例如 Admin、admin),则登录将被拒绝。
Provisioning周期 设置 provisioning 周期,即执行用户 provisioning 的频率。

LDAP服务器配置

LDAP服务器配置参数:

参数 描述
名称 Zabbix配置中LDAP服务器的名称。
主机 LDAP服务器的主机名、IP或URI。例如:ldap.example.com, 127.0.0.1, ldap://ldap.example.com
对于安全的LDAP服务器,请使用 ldaps 协议和主机名。例如:ldaps://ldap.example.com
对于OpenLDAP 2.x.x及更高版本,可以使用形如 ldap://hostname:port 或 ldaps://hostname:port 的完整LDAP URI。
端口 LDAP服务器的端口。默认为 389。
对于安全的LDAP连接,端口号通常为 636。
当使用完整的LDAP URI时,此参数不适用。
基础DN LDAP服务器中用户账户的基础路径:
ou=Users,ou=system (对于OpenLDAP),
DC=company,DC=com (对于Microsoft Active Directory)
uid=%{user},dc=example,dc=com (用于直接用户绑定,请参见下面的注释)
搜索属性 用于搜索的LDAP账户属性:
uid (对于OpenLDAP),
sAMAccountName (对于Microsoft Active Directory)
绑定DN 用于绑定和在LDAP服务器上搜索的LDAP账户,例如:
uid=ldap_search,ou=system (对于OpenLDAP),
CN=ldap_search,OU=user_group,DC=company,DC=com (对于Microsoft Active Directory)
也支持匿名绑定。请注意,匿名绑定可能会使未经授权的用户打开域配置(关于用户、计算机、服务器、组、服务等信息)。出于安全考虑,在LDAP主机上禁用匿名绑定,并改用经过身份验证的访问。
绑定密码 用于在LDAP服务器上进行绑定和搜索的账户的LDAP密码。
描述 LDAP服务器的描述。
配置即时配送 选中此复选框以显示与即时配送相关的选项。
组配置 选择组配置方法:
memberOf - 通过搜索用户及其组成员属性
groupOfNames - 通过搜索组的成员属性
注意,memberOf 方法更快;如果LDAP服务器不支持 memberOf 或需要组过滤,则使用 groupOfNames。
组名称属性 指定从 memberOf 属性中的所有对象获取组名称的属性(参见 用户组成员属性 字段)
用户组映射需要组名。
用户组成员属性 指定包含用户所属组信息的属性(例如 memberOf)。
例如,memberOf 属性可能包含类似这样的信息:memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
此字段仅适用于 memberOf 方法。
用户名称属性 指定包含用户名的属性。
用户姓氏属性 指定包含用户姓氏的属性。
用户组映射 将LDAP用户组模式映射到Zabbix用户组和用户角色。
这是确定在Zabbix中配送用户将获得哪个用户组/角色的必要步骤。
点击 添加 来添加映射。
LDAP组模式 字段支持通配符。组名必须与现有组匹配。
如果LDAP用户匹配多个Zabbix用户组,则用户将成为所有这些组的成员。
如果用户匹配多个Zabbix用户角色,则用户将获得其中权限级别最高的角色。
媒体类型映射 将用户的LDAP媒体属性(例如电子邮件)映射到Zabbix用户媒体,用于发送通知。
高级配置 点击 高级配置 标签以显示高级配置选项(见下文)。
StartTLS 选中复选框以在连接到LDAP服务器时使用StartTLS操作。如果服务器不支持StartTLS,则连接将失败。
不能与使用 ldaps 协议的服务器一起使用StartTLS。
搜索过滤器 在LDAP中认证用户时定义自定义字符串。支持以下占位符:
%{attr} - 搜索属性名称(uid、sAMAccountName)
%{user} - 要认证的用户用户名值
例如,在不区分大小写的LDAP或Microsoft Active Directory环境中执行区分大小写搜索时,可以定义如下字符串:
(%{attr}:caseExactMatch:=%{user})
如果未自定义过滤器,LDAP将使用默认值:(%{attr}=%{user})

要为直接用户绑定配置LDAP服务器,请在 基础DN 参数中添加属性 uid=%{user}(例如,uid=%{user},dc=example,dc=com),并将 绑定DN绑定密码 参数留空。在认证过程中,占位符 %{user} 将被用户在登录时输入的用户名替换。

以下字段专门用于 "groupOfNames" 作为 组配置 方法:

参数 描述
组基础DN LDAP服务器中组的基础路径。
组名称属性 指定在组基础路径中获取组名称的属性。
用户组映射需要组名。
组成员属性 指定包含LDAP组成员信息的属性(例如 member)。
引用属性 指定用于组过滤器的引用属性(参见 组过滤器 字段)。
然后在组过滤器中使用 %{ref} 来获取指定属性的值。
组过滤器 指定检索用户成员的组的过滤器。
例如,(member=uid=%{ref},ou=Users,dc=example,dc=com) 将匹配 "User1",如果组的成员属性是 uid=User1,ou=Users,dc=example,dc=com,并返回 "User1" 所属的组。

如果证书出现问题,为了使安全的LDAP连接(ldaps)正常工作,您可能需要在 /etc/openldap/ldap.conf 配置文件中添加 TLS_REQCERT allow 行。这可能会降低与LDAP目录的连接安全性。

建议创建一个单独的LDAP账户(绑定DN)来执行LDAP服务器上的绑定和搜索操作,该账户权限最小,而不是使用实际用户账户(用于登录Zabbix前端)。
这种方法提供了更多的安全性,并且在LDAP服务器中用户更改密码时不需要更改 绑定密码
在上述表格中,这是 ldap_search 账户名。

测试访问

点击 测试 按钮可以测试用户访问:

参数 描述
登录名 要测试的LDAP用户名(从Zabbix前端当前用户名预填)。该用户名必须存在于LDAP服务器中。
如果无法对测试用户进行身份验证,Zabbix将不会启用LDAP身份验证。
用户密码 要测试的LDAP用户密码。