12 使用 Okta 的 SAML 设置

本节提供配置指南,用于为 Zabbix 启用 SAML 2.0 身份验证和用户供应的 Okta

Okta 配置

1。转到 https://developer.okta.com/signup/ 并注册/登录您的账户。

2。在 Okta 网络界面中,导航至 Applications → Applications

3。点击 Create App Integration

选择 "SAML 2.0" 作为登录方法,然后点击 Next

4。在常规设置中,填写应用程序名称,然后点击 Next

5。在 SAML 配置中,输入以下提供的值,然后点击 Next

  • General 中添加:
    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      注意使用 "http" 而不是 "https",以便请求中不会截断 acs 参数。还应勾选 Use this for Recipient URL and Destination URL 复选框。
    • Audience URI (SP Entity ID): zabbix
      注意,此值将在 SAML 断言中用作唯一的服务提供商标识符(如果不匹配,操作将被拒绝)。此字段中可以指定 URL 或任意 string 数据。
    • Default RelayState:
      留空此字段;如果需要自定义重定向,可以在 Zabbix 的 Users → Users 设置中添加。
    • 根据您的偏好填写其他字段。
  • Attribute Statements/Group Attribute Statements 中添加:

这些属性声明将插入到与 Zabbix 共享的 SAML 断言中。

此处使用的属性名称是任意示例。您可以使用不同的属性名称,但必须确保它们与 Zabbix SAML 设置中的相应字段值匹配。

如果您希望在不使用 JIT 用户配置的情况下配置通过 SAML 登录 Zabbix,则只需要电子邮件属性。

如果计划使用加密连接,请 generate 私有和公共加密证书,然后将公共证书上传到 Okta。当 Assertion Encryption 设置为 "Encrypted" 时,会出现证书上传表单(点击 Show Advanced Settings 以找到此参数)。

6。在下一个标签页中,选择 "I'm a software vendor. I'd like to integrate my app with Okta",然后点击 "Finish"。

7。导航到新创建应用程序的 "Assignments" 标签页,点击 Assign 按钮,然后从下拉菜单中选择 "Assign to People"。

8。在弹出窗口中,将应用程序分配给将使用 SAML 2.0 认证访问 Zabbix 的用户,然后点击 Save and go back

9。导航到 "Sign On" 标签页,点击 View Setup Instructions 按钮。

配置说明 将在新标签页中打开;在配置 Zabbix 时请保持此标签页打开。

Zabbix配置

1。在 Zabbix 中,转到 设置zabbix
并根据 Okta 上的设置说明填写配置选项:

Zabbix 字段 Okta 中的设置字段 示例值
IdP entity ID Identity Provider Issuer
SSO service URL Identity Provider Single Sign-On URL
Username attribute Attribute name usrEmail
SP entity ID Audience URI zabbix
Group name attribute Attribute name groups
User name attribute Attribute name user_name
User last name attribute Attribute name user_lastname

还需要配置用户组和媒介类型映射。

2。将 Okta SAML 设置说明中提供的证书下载到 ui/conf/certs 文件夹,并命名为 idp.crt。

运行以下命令设置权限为 644:

chmod 644 idp.crt

3。如果在 Okta 中将 Assertion Encryption 设置为“Encrypted”,则在 Zabbix 中也应勾选 Encrypt 参数的“Assertions”复选框。

4。点击“Update”按钮以保存这些设置。

SCIM配置

1。要在 Okta 中启用 SCIM 配置,请进入应用程序的 "General" -> "App Settings" 页面。

勾选 Enable SCIM provisioning 复选框。结果是一个新的 Provisioning 标签页会出现。

2。转到 "Provisioning" 标签页以设置 SCIM 连接:

  • SCIM connector base URL 中指定 Zabbix 前端的路径,并附加 api_scim.php,例如:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users(用户的唯一标识字段):email
  • Authentication mode(认证模式):HTTP header
  • Authorization(授权)中输入一个具有超级管理员权限的有效 API 令牌

如果遇到认证问题 问题,请参见 授权头转发

3。点击 Test Connector Configuration 以测试连接。如果一切正常,将显示一条成功消息。

4。在 "Provisioning" -> "To App" 中,确保勾选以下复选框:

  • 创建用户
  • 更新用户属性
  • 停用用户

这将确保这些请求类型会被发送到 Zabbix。

5。确保在 SAML 中定义的所有属性也在 SCIM 中定义。您可以通过点击 Go to Profile Editor 访问应用程序的 profile 编辑器,路径为 "Provisioning" -> "To App"。

点击 Add Attribute。填写 Display nameVariable nameExternal name 的值,使用 SAML 属性名称,例如:user_name

External namespace(外部命名空间)应与用户模式相同:urn:ietf:params:scim:schemas:core:2.0:User

6。转到应用程序的 "Provisioning" -> "To App" -> "Attribute Mappings"。点击底部的 Show Unmapped Attributes。新添加的属性将出现。

7。映射每个添加的属性。

8。在 "Assignments" 标签页中添加用户。这些用户之前需要在 Directory -> People 中添加。所有这些分配将作为请求发送到 Zabbix。

9。在 "Push Groups" 标签页中添加组。Zabbix SAML 设置中的用户组映射模式必须与此处指定的组匹配。如果没有匹配项,则无法在 Zabbix 中创建用户。

每次发生更改时都会发送有关组成员的信息。