SAML 2.0 authentication
可用于登录 Zabbix。
如果仅配置了 SAML 登录,则用户也必须存在于 Zabbix 中,但其 Zabbix 密码将不会被使用。
如果认证成功,Zabbix 将把本地用户名与 SAML 返回的用户名属性进行匹配。
可以为 SAML 用户配置 JIT(实时)用户供应(user provisioning)。
在这种情况下,用户无需预先存在于 Zabbix 中。
用户首次登录 Zabbix 时即可创建用户账户。
如果启用了 JIT 供应,则必须在 认证(Authentication) 选项卡中指定一个用于注销用户的用户组。
在启用 Top 的同时,还可以启用和配置 SCIM(跨域身份管理)供应——用于通过用户供应创建的用户的 持续 用户账户管理。
启用 SCIM 供应需要一个 Zabbix API token(具有超级管理员权限)用于认证进入 Zabbix。
例如,如果一个用户从一个 SAML 组移动到另一个 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前端中可用的配置参数:
参数 | 描述 |
---|---|
Enable SAML authentication | 勾选此框以启用SAML身份验证。 |
Enable JIT provisioning | 勾选此框以启用JIT用户配置。 |
IDP entity ID | SAML身份提供者内的唯一实体标识符。 |
SSO service URL | 登录时用户将被重定向到的URL。 |
SLO service URL | 登出时用户将被重定向到的URL。如果留空,则不会使用SLO服务。 |
Username attribute | 登录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 entity ID | 唯一的服务提供者标识符(如果不匹配,操作将被拒绝)。 可以指定URL或任何string数据。 |
SP name ID format | 在响应中请求特定的名称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 |
Sign | 勾选此框以选择应启用SAML签名的实体: 消息 断言 身份验证请求 注销请求 注销响应 |
Encrypt | 勾选此框以选择应启用SAML加密的实体: 名称ID 断言 |
Case-sensitive login | 取消勾选此框以禁用用户名的区分大小写login(默认启用)。 禁用区分大小写login允许例如以"admin"登录,即使Zabbix用户是"Admin"或"ADMIN"。 请注意,如果禁用区分大小写login并且存在多个类似用户名的Zabbix用户(例如Admin和admin),则这些用户的login将始终被拒绝,并显示以下错误消息:"身份验证失败:提供的凭据不唯一。" |
Configure JIT provisioning | 勾选此框以显示与JIT用户配置相关的选项。 |
Group name attribute | 为JIT用户配置指定组名属性。 |
User name attribute | 为JIT用户配置指定用户名属性。 |
User last name attribute | 为JIT用户配置指定用户姓氏属性。 |
User group mapping | 将SAML用户组模式映射到Zabbix用户组和用户角色。 这是确定配置用户在Zabbix中get的用户组/角色所必需的。 点击添加以添加映射。 SAML组模式字段支持通配符。组名必须匹配现有组。 如果SAML用户匹配多个Zabbix用户组,则用户将成为所有组的成员。 如果用户匹配多个Zabbix用户角色,则用户将get其中最高的权限级别。 |
Media type mapping | 将用户的SAML媒体属性(例如电子邮件)映射到Zabbix用户媒体以发送通知。 |
Enable SCIM provisioning | 勾选此框以启用SCIM 2.0配置。 |
请参阅配置SAML身份提供者的示例,以便在Zabbix中进行登录和用户配置:
对于 SCIM 配置,需在身份提供商端指定 Zabbix 前端的路径,并在其后附加 api_scim.php,例如:
Zabbix 中使用的用户属性(用户名、用户名称、用户姓氏和媒介属性)需要作为自定义属性添加,并且如有必要,外部命名空间应与用户模式相同:urn:ietf:params:scim:schemas:core:2.0:User
。
可以在Zabbix前端配置中配置额外的SAML参数 file(zabbix.conf.php):
Zabbix使用OneLogin's SAML PHP Toolkit库(version 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
];
配置示例:
$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前端配置 file(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字段设置为: