community.zabbix.zabbix_user_directory 模块 – 创建/更新/删除 Zabbix 用户目录

注意

此模块是 community.zabbix 集合 (版本 3.2.0) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.zabbix。您需要其他要求才能使用此模块,有关详细信息,请参见 要求

要在剧本中使用它,请指定:community.zabbix.zabbix_user_directory

概要

  • 此模块允许您创建、修改和删除 Zabbix 用户目录。

要求

执行此模块的主机需要以下要求。

  • python >= 3.9

参数

参数

注释

base_dn

字符串

LDAP 基本区分名称字符串。

如果 idp_type 设置为 ldap,则需要此参数。

bind_dn

字符串

LDAP 绑定区分名称字符串。对于匿名绑定可以为空。

默认值: ""

bind_password

字符串

LDAP 绑定密码。对于匿名绑定可以为空。

description

字符串

用户目录描述。

默认值: ""

encrypt_assertions

布尔值

SAML 加密断言。如果为 true,则加密。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

encrypt_nameid

布尔值

SAML 加密名称 ID。如果为 true,则加密。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

group_basedn

字符串

LDAP 树中搜索组数据的 LDAP 组路径。

用于在 openLDAP 中配置用户成员资格检查。

如果未设置 group_membership,则需要此参数。

此参数自 Zabbix 6.4 起可用。

group_filter

字符串

LDAP 搜索过滤器,用于在搜索特定用户组时选择组。

用于在 openLDAP 中配置用户成员资格检查。

如果设置了 group_membership,则在预配用户时忽略。

此参数自 Zabbix 6.4 起可用。

group_member

字符串

LDAP 树属性名称,其中包含使用 group_filter 查询接收到的组名称。

用于在 openLDAP 中配置用户成员资格检查。

如果设置了 group_membership,则在预配用户时忽略。

此参数自 Zabbix 6.4 起可用。

group_membership

字符串

包含用户组的 LDAP 属性。例如 memberOf

此参数自 Zabbix 6.4 起可用。

group_name

字符串

LDAP/SAML 属性名称,用于获取 Zabbix 和 IdP 之间的组映射的组名称。

用于在 LDAP 中配置用户成员资格检查。

如果设置了 group_membership,则在预配用户时忽略。

此参数自 Zabbix 6.4 起可用。

host

字符串

LDAP 服务器主机名、IP 或 URI。URI 应包含模式、主机和端口(可选)。

如果 idp_type 设置为 ldap,则需要此参数。

http_login_password

字符串

基本身份验证密码

http_login_user

字符串

基本身份验证登录名

idp_entityid

字符串

SAML URI,用于在 SAML 消息中标识 IdP。

如果 idp_type 设置为 saml,则需要此参数。

此参数自 Zabbix 6.4 起可用。

idp_type

字符串

IdP 类型。只能存在一个 SAML 类型的用户目录。

此参数自 Zabbix 6.4 起可用。

选项

  • "ldap"

  • "saml"

name

字符串 / 必需

用户目录的唯一名称。

nameid_format

字符串

SAML SP 名称 ID 格式。

此参数自 Zabbix 6.4 起可用。

port

整数

LDAP 服务器端口。

如果 idp_type 设置为 ldap,则需要此参数。

provision_groups

列表 / 元素=字典

IdP 媒体类型映射对象的数组。

此参数自 Zabbix 6.4 起可用。

name

字符串 / 必需

IdP 组全名。

支持通配符“*”。在所有预配组映射中唯一。

role

字符串 / 必需

要分配给用户的用户角色名称。

请注意,如果匹配多个预配组映射,则将分配最高用户类型的角色给用户。如果有多个具有相同用户类型的角色,则将第一个角色(按字母顺序排序)分配给用户。

user_groups

列表 / 元素=字符串 / 必需

Zabbix 用户组名称数组。

请注意,如果匹配多个预配组映射,则将所有匹配映射的 Zabbix 用户组分配给用户。

provision_media

列表 / 元素=字典

IdP 媒体类型映射对象的数组。

此参数自 Zabbix 6.4 起可用。

属性

字符串 / 必需

属性名称。用作 sendto 字段的值。

如果存在于从 IdP 接收的数据中且值不为空,则将触发为预配用户创建媒体。

mediatype

字符串 / 必需

要创建的媒体类型的名称。

name

字符串 / 必需

媒体类型映射列表中的可见名称。

provision_status

布尔值

用户目录预配状态。

如果为 false,则禁用此用户目录创建的用户预配。

如果为true,则启用由该用户目录创建的用户配置。此外,还应启用ldap_jit_statussaml_jit_status 的身份验证状态。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

scim_status

布尔值

是否启用或禁用 SAML 的 SCIM 配置。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

search_attribute

字符串

用于在 Zabbix 数据库中按用户名标识用户的 LDAP 属性名称。

如果 idp_type 设置为 ldap,则需要此参数。

search_filter

字符串

在 LDAP 中验证用户时的 LDAP 自定义过滤器字符串。

支持的 search_filter 占位符

%{attr} 搜索属性名称 (uid, sAMAccountName);

%{user} 用户名值。

默认值: "(%{attr}=%{user})"

sign_assertions

布尔值

SAML 签名断言。如果为true,则签名。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

sign_authn_requests

布尔值

SAML 签名 AuthN 请求。如果为true,则签名。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

sign_logout_requests

布尔值

SAML 签名注销请求。如果为true,则签名。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

sign_logout_responses

布尔值

SAML 签名注销响应。如果为true,则签名。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

sign_messages

布尔值

SAML 签名消息。如果为true,则签名。

此参数自 Zabbix 6.4 起可用。

选项

  • false ← (默认)

  • true

slo_url

字符串

Zabbix 将发送 SAML 注销请求的 SAML IdP 服务端点 URL。

此参数自 Zabbix 6.4 起可用。

sp_entityid

字符串

SAML SP 实体 ID。

如果 idp_type 设置为 saml,则需要此参数。

此参数自 Zabbix 6.4 起可用。

sso_url

字符串

IdP 的 SAML SSO 服务的 SAML URL,Zabbix 将向其发送 SAML 身份验证请求。

如果 idp_type 设置为 saml,则需要此参数。

此参数自 Zabbix 6.4 起可用。

start_tls

整数

LDAP startTLS 选项。不能与 ldaps:// 协议主机一起使用。

选项

  • 0 ← (默认)

  • 1

state

字符串

用户目录的状态。

对于 present,如果用户目录不存在,则会创建它;如果关联数据不同,则会更新它。

对于 absent,如果用户目录存在,则会将其删除。

选项

  • "present" ← (默认)

  • "absent"

user_lastname

字符串

配置用户时用于 users.surname 字段的 LDAP/SAML 属性名称。

此参数自 Zabbix 6.4 起可用。

user_ref_attr

字符串

LDAP 用户对象属性名称。将在 c(group_filter) 字符串中替换占位符 %{ref}

此参数自 Zabbix 6.4 起可用。

user_username

字符串

配置用户时用于 users.name 字段的 LDAP/SAML 属性名称。

此参数自 Zabbix 6.4 起可用。

username_attribute

字符串

在身份验证时用于与 Zabbix user.username 值进行比较的 SAML 用户名属性。

如果 idp_type 设置为 saml,则需要此参数。

此参数自 Zabbix 6.4 起可用。

示例

---
# If you want to use Username and Password to be authenticated by Zabbix Server
- name: Set credentials to access Zabbix Server API
  ansible.builtin.set_fact:
    ansible_user: Admin
    ansible_httpapi_pass: zabbix

# If you want to use API token to be authenticated by Zabbix Server
# https://www.zabbix.com/documentation/current/en/manual/web_interface/frontend_sections/administration/general#api-tokens
- name: Set API token
  ansible.builtin.set_fact:
    ansible_zabbix_auth_key: 8ec0d52432c15c91fcafe9888500cf9a607f44091ab554dbee860f6b44fac895

- name: Create new user directory or update existing info (Zabbix <= 6.2)
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_user_directory:
    state: present
    name: TestUserDirectory
    host: "test.com"
    port: 389
    base_dn: "ou=Users,dc=example,dc=org"
    search_attribute: "uid"
    bind_dn: "cn=ldap_search,dc=example,dc=org"
    description: "Test user directory"
    search_filter: "(%{attr}=test_user)"
    start_tls: 0

- name: Create new user directory with LDAP IDP or update existing info (Zabbix >= 6.4)
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_user_directory:
    state: present
    name: TestUserDirectory
    idp_type: ldap
    host: "test.ca"
    port: 389
    base_dn: "ou=Users,dc=example,dc=org"
    search_attribute: "uid"
    provision_status: true
    group_name: cn
    group_basedn: ou=Group,dc=example,dc=org
    group_member: member
    user_ref_attr: uid
    group_filter: "(member=uid=%{ref},ou=Users,dc=example,dc=com)"
    user_username: first_name
    user_lastname: last_name
    provision_media:
      - name: Media1
        mediatype: Email
        attribute: email1
    provision_groups:
      - name: idpname1
        role: Guest role
        user_groups:
          - Guests

- name: Create new user directory with SAML IDP or update existing info (Zabbix >= 6.4)
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_user_directory:
    state: present
    name: TestUserDirectory
    idp_type: saml
    idp_entityid: http://okta.com/xxxxx
    sp_entityid: zabbix
    sso_url: http://xxxx.okta.com/app/xxxxxx_123dhu8o3
    username_attribute: usrEmail
    provision_status: true
    group_name: cn
    user_username: first_name
    user_lastname: last_name
    provision_media:
      - name: Media1
        mediatype: Email
        attribute: email1
    provision_groups:
      - name: idpname1
        role: Guest role
        user_groups:
          - Guests

作者

  • Evgeny Yurchenko (@BGmot)