配置授权委托编辑

在某些情况下,在用户通过领域进行身份验证后,我们可能希望将用户查找和角色分配委托给另一个领域。任何支持用户查找(无需用户凭据)的领域都可以用作授权领域。

例如,可以通过 Kerberos 领域进行身份验证的用户可以在 LDAP 领域中查找。LDAP 领域负责在 LDAP 中搜索用户并确定角色。在这种情况下,LDAP 领域充当_授权领域_。

LDAP 领域作为授权领域编辑

以下是可以用作_授权领域_的 LDAP 领域的示例配置。此 LDAP 领域在用户搜索模式下配置,并带有指定的过滤器。

有关配置 LDAP 领域的更多信息,请参阅LDAP 用户身份验证

xpack:
  security:
    authc:
      realms:
        ldap:
          ldap1:
            order: 0
            authentication.enabled: true 
            user_search:
              base_dn: "dc=example,dc=org"
              filter: "(cn={0})"
            group_search:
              base_dn: "dc=example,dc=org"
            files:
              role_mapping: "ES_PATH_CONF/role_mapping.yml"
            unmapped_groups_as_roles: false

在这里,我们明确允许将 LDAP 领域用于身份验证(即,用户可以使用其 LDAP 用户名和密码进行身份验证)。如果我们希望此 LDAP 领域仅用于授权,则应将其设置为 false

配置为委托授权的 Kerberos 领域编辑

以下是 Kerberos 领域对用户进行身份验证,然后将授权委托给 LDAP 领域的示例配置。Kerberos 领域对用户进行身份验证并提取用户主体名称(通常格式为 user@REALM)。在此示例中,我们启用 remove_realm_name 设置以从用户主体名称中删除 @REALM 部分以获取用户名。此用户名用于由已配置的授权领域(在本例中为 LDAP 领域)执行用户查找。

有关 Kerberos 领域的更多信息,请参阅Kerberos 身份验证

xpack:
  security:
    authc:
      realms:
        kerberos:
          kerb1:
            order: 1
            keytab.path: "ES_PATH_CONF/es.keytab"
            remove_realm_name: true
            authorization_realms: ldap1

配置为委托授权的 PKI 领域编辑

我们可以类似地配置 PKI 领域以将授权委托给 LDAP 领域。用户由 PKI 领域进行身份验证,授权委托给 LDAP 领域。在此示例中,用户名是从客户端证书的 DN 中提取的公用名 (CN)。LDAP 领域使用此用户名查找用户并分配角色。

有关 PKI 领域的更多信息,请参阅PKI 用户身份验证

xpack:
  security:
    authc:
      realms:
        pki:
          pki1:
            order: 2
            authorization_realms: ldap1

与上述示例类似,我们可以将领域配置为将授权委托给授权领域(这些领域能够按用户名查找用户并分配角色)。