Realm 链
编辑Realm 链
编辑领域存在于realm 链中。它本质上是一个已配置领域(通常是各种类型)的优先级列表。领域按升序(也就是说,首先查询具有最低 order
值的领域)进行查询。您必须确保每个已配置的领域都具有不同的 order
设置。如果两个或多个领域具有相同的 order
,则节点将无法启动。
在身份验证过程中,Elastic Stack 安全功能会一次查询一个领域并尝试验证请求。一旦其中一个领域成功验证请求,则认为身份验证成功。经过身份验证的用户与请求关联,然后进入授权阶段。如果领域无法验证请求,则会查询链中的下一个领域。如果链中的所有领域都无法验证请求,则认为身份验证不成功,并返回身份验证错误(作为 HTTP 状态代码 401
)。
某些系统(例如,Active Directory)在多次连续登录失败尝试后会有临时的锁定时间。如果多个领域中存在相同的用户名,则可能会出现意外的帐户锁定。有关更多信息,请参见用户经常被锁定在 Active Directory 之外。
默认的 realm 链包含 file
和 native
领域。要显式配置 realm 链,请在 elasticsearch.yml
文件中指定该链。如果您的 realm 链不包含 file
或 native
领域,或者没有明确禁用它们,则 file
和 native
领域将按该顺序自动添加到 realm 链的开头。要选择退出自动行为,您可以显式配置具有 order
和 enabled
设置的 file
和 native
领域。
以下代码片段配置了一个 realm 链,该链启用了 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
设置中指定的顺序尝试每个领域。通过主体检索用户 - 用户必须在身份验证和授权领域中具有相同的用户名。如果在任何授权领域中都找不到该用户,则身份验证失败。
有关更多详细信息,请参见配置授权委派。
委派授权要求您拥有包含自定义身份验证和授权领域的订阅。