领域链
编辑领域链编辑
领域 存在于一个_领域链_中。它本质上是一个已配置领域(通常是各种类型)的优先级列表。领域按升序进行查询(也就是说,首先查询 order
值最低的领域)。您必须确保每个已配置的领域都有一个不同的 order
设置。如果两个或多个领域的 order
相同,则节点将无法启动。
在身份验证过程中,Elastic Stack 安全功能会依次查询并尝试对请求进行身份验证。一旦其中一个领域成功验证了请求,则身份验证就被视为成功。经过身份验证的用户将与请求相关联,然后进入授权阶段。如果一个领域无法验证请求,则会查询链中的下一个领域。如果链中的所有领域都无法验证请求,则身份验证被视为失败,并返回身份验证错误(作为 HTTP 状态代码 401
)。
某些系统(例如 Active Directory)在连续几次登录尝试失败后会有一个临时锁定时间。如果多个领域中存在相同的用户名,则可能会发生意外的帐户锁定。有关更多信息,请参阅 用户经常被 Active Directory 锁定。
默认领域链包含 file
和 native
领域。要显式配置领域链,请在 elasticsearch.yml
文件中指定该链。如果您的领域链不包含 file
或 native
领域,或者没有显式禁用它们,则 file
和 native
领域将按此顺序自动添加到领域链的开头。要退出自动行为,您可以使用 order
和 enabled
设置显式配置 file
和 native
领域。
以下代码段配置了一个领域链,该链启用了 file
领域以及两个 LDAP 领域和一个 Active Directory 领域,但禁用了 native
领域。
xpack.security.authc.realms: file.file1: order: 0 ldap.ldap1: order: 1 enabled: false url: 'url_to_ldap1' ... ldap.ldap2: order: 2 url: 'url_to_ldap2' ... active_directory.ad1: order: 3 url: 'url_to_ad' native.native1: enabled: false
如上所示,每个领域都有一个唯一的名称来标识它。每种类型的领域都规定了自己的必需和可选设置集。也就是说,有一些 对所有领域都通用的设置。
将授权委托给另一个领域编辑
某些领域能够在内部执行_身份验证_,但将角色的查找和分配(即_授权_)委托给另一个领域。
例如,您可能希望使用 PKI 领域通过 TLS 客户端证书对用户进行身份验证,然后在 LDAP 领域中查找该用户,并使用其 LDAP 组分配来确定其在 Elasticsearch 中的角色。
任何支持检索用户(无需其凭据)的领域都可以用作_授权领域_(也就是说,其名称可以作为 authorization_realms
列表中的值之一出现)。有关哪些领域支持此功能的进一步说明,请参阅 在没有身份验证的情况下查找用户。
对于支持此功能的领域,可以通过在身份验证领域上配置 authorization_realms
设置来启用它。检查每个领域的 支持的设置 列表,以查看它们是否支持 authorization_realms
设置。
如果为领域启用了委托授权,它将以其标准方式(包括相关的缓存)对用户进行身份验证,然后在已配置的授权领域列表中查找该用户。它会按照它们在 authorization_realms
设置中指定的顺序尝试每个领域。用户通过主体进行检索 - 用户在_身份验证_和_授权领域_中必须具有相同的用户名。如果在任何授权领域中都找不到该用户,则身份验证失败。
有关更多详细信息,请参阅 配置授权委托。
委托授权要求您拥有包含自定义身份验证和授权领域的 订阅。