可以使用SAML 2.0 身份验证 登录Zabbix。
如果仅配置了SAML登录,则用户也必须存在于Zabbix中,但不会使用其Zabbix密码。如果身份验证成功,则Zabbix将会将本地用户名与SAML返回的用户名属性进行匹配。
可以为SAML用户配置 JIT(即时)用户供应。在这种情况下,不需要用户已经存在于Zabbix中。用户账户可以在用户首次登录Zabbix时创建。
如果启用了JIT供应,必须在认证选项卡中指定一个用于未激活用户的用户组。
除了JIT供应外,还可以启用和配置SCIM(跨域身份管理系统)配备 - 用于对用户供应创建的用户进行持续的用户账户管理。SCIM供应需要一个Zabbix API令牌(具有超级管理员权限)用于Zabbix的身份验证。
例如,如果用户从一个SAML组移到另一个组,用户在Zabbix中也将从一个组移到另一个组; 如果用户从SAML组中移除,用户在Zabbix中也将从该组中移除,并且如果不属于任何其他组,则添加到未激活用户组中。
如果启用并配置了SCIM,SAML用户将在用户首次登录Zabbix时进行配备,并根据SAML中的更改持续更新。 已存在的SAML用户不会被配备,只有配备过的用户才会被更新。 请注意,只有在用户配备或更新时才会添加有效的媒体。
如果未启用SCIM,SAML用户将在用户首次登录Zabbix时进行配备(并稍后进行更新)。
如果启用了SAML身份验证,用户将能够选择本地登录或通过SAML单点登录。如果使用了JIT供应,则只能使用单点登录。
为了与Zabbix配合使用,需要按照以下方式配置SAML身份提供者(如 onelogin.com, auth0.com, okta.com 等):
<path_to_zabbix_ui>/index_sso.php?acs
<path_to_zabbix_ui>/index_sso.php?sls
<path_to_zabbix_ui>
示例:https://example.com/zabbix/ui
, http://another.example.com/zabbix
, http://<any_public_ip_address>/zabbix
如果要使用前端的SAML认证,必须安装php-openssl。
要使用SAML认证,Zabbix应按以下方式配置:
1. 私钥和证书应存储在ui/conf/certs目录中,除非在 zabbix.conf.php中提供了自定义路径。
默认情况下,Zabbix将在以下位置查找:
2. 所有最重要的设置都可以在Zabbix前端进行配置。然而,可以在 配置文件中指定额外的设置。
Zabbix前端中可用的配置参数:
参数 | 描述 |
---|---|
启用SAML认证 | 勾选此复选框以启用SAML认证。 |
启用JIT配置 | 勾选此复选框以启用JIT用户配置。 |
IDP实体ID | SAML身份提供商内的唯一实体标识符。 |
SSO服务URL | 用户登录时将被重定向到的URL。 |
SLO服务URL | 用户登出时将被重定向到的URL。如果留空,将不使用SLO服务。 |
用户名属性 | 登录Zabbix时用作用户名的SAML属性。 支持值的列表由身份提供商确定。 示例: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
SP实体ID | 唯一的服务提供商标识符(如果不匹配,操作将被拒绝)。 可以指定URL或任何数据字符串。 |
SP名称ID格式 | 在响应中请求特定的名称ID格式。 示例: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
签名 | 勾选复选框以选择应启用SAML签名的实体: 消息 断言 AuthN请求 登出请求 登出响应 |
加密 | 勾选复选框以选择应启用SAML加密的实体: 名称ID 断言 |
区分大小写的登录 | 取消勾选此复选框以禁用用户名的区分大小写的登录(默认启用)。 禁用区分大小写的登录允许,例如,以"admin"登录,即使Zabbix用户是"Admin"或"ADMIN"。 请注意,如果禁用了区分大小写的登录,并且有多个Zabbix用户具有相似的用户名(例如,Admin和admin),则这些用户的登录将始终被拒绝,错误信息为:"认证失败:提供的凭据不唯一。" |
配置JIT配置 | 勾选此复选框以显示与JIT用户配置相关的选项。 |
组名属性 | 为JIT用户配置指定组名属性。 |
用户名属性 | 为JIT用户配置指定用户名属性。 |
用户姓氏属性 | 为JIT用户配置指定用户姓氏属性。 |
用户组映射 | 将SAML用户组模式映射到Zabbix用户组和用户角色。 这是确定配置的用户将获得的Zabbix用户组/角色所必需的。 点击添加以添加映射。 SAML组模式字段支持通配符。组名必须与现有组匹配。 如果SAML用户匹配多个Zabbix用户组,用户将成为所有这些组的成员。 如果用户匹配多个Zabbix用户角色,用户将获得其中最高的权限级别。 |
媒体类型映射 | 将用户的SAML媒体属性(例如,电子邮件)映射到Zabbix用户媒体以发送通知。 |
启用SCIM配置 | 勾选此复选框以启用SCIM 2.0配置。 |
参见使用以下SAML身份提供商进行Zabbix登录和用户配置的示例:
对于SCIM配置,需要指定Zabbix前端的路径,并在其后附加api_scim.php,即在身份提供商一侧:
Zabbix中使用的用户属性(用户名,用户名称,用户姓氏和媒体属性)需要作为自定义属性添加,如果需要,外部命名空间应与用户模式相同:urn:ietf:params:scim:schemas:core:2.0:User
。
可以在Zabbix前端配置文件(zabbix.conf.php)中配置额外的SAML参数:
Zabbix使用OneLogin's SAML PHP Toolkit库 (版本3.4.1)。$SSO['SETTINGS']部分的结构应与库中使用的结构相似。有关配置选项的描述,请参阅官方库 documentation。
仅以下选项可以作为$SSO['SETTINGS']的一部分设置:
所有其他选项将从数据库中获取,无法覆盖。debug选项将被忽略。
此外,如果Zabbix UI位于proxy或负载均衡器之后,可以使用自定义use_proxy_headers选项:
如果使用负载均衡器连接到Zabbix实例,其中负载均衡器使用TLS/SSL而Zabbix不使用,您必须指示'baseurl','strict'和'use_proxy_headers'参数如下:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
```**配置示例:**
```php
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Zabbix 前端配置文件 (zabbix.conf.php) 可用于配置带有 Kerberos 身份验证和 ADFS 的单点登录 (SSO):
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
在这种情况下,在 SAML 配置的 SP name ID 字段中设置: