配置授权委托

编辑

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

例如,通过 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

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