在没有身份验证的情况下查找用户编辑

Elasticsearch 领域 的存在主要是为了支持 用户身份验证。一些领域使用密码对用户进行身份验证(例如 nativeldap 领域),而其他领域则使用更复杂的验证协议(例如 samloidc 领域)。在每种情况下,领域的主要目的都是确定向 Elasticsearch API 发出请求的用户的身份。

但是,一些 Elasticsearch 功能需要在不使用用户凭据的情况下 *查找* 用户。

  • run_as 功能代表另一个用户执行请求。具有 run_as 权限的已验证用户可以代表另一个未验证用户执行请求。
  • 委托授权 功能将两个领域链接在一起,以便针对一个领域进行身份验证的用户可以拥有与来自不同领域的用户的角色和元数据相关联。

在每种情况下,用户必须首先向一个领域进行身份验证,然后 Elasticsearch 将查询第二个领域以查找另一个用户。已验证用户的凭据仅用于在第一个领域中进行身份验证,第二个领域中的用户是通过用户名检索的,无需凭据。

当 Elasticsearch 使用用户的凭据解析用户时(如在第一个领域中执行的那样),这称为 *用户身份验证*。

当 Elasticsearch 仅使用用户名解析用户时(如在第二个领域中执行的那样),这称为 *用户查找*。

有关这些功能的更多信息,包括哪些领域和身份验证方法支持 run_as 或委托授权,请参阅 run_as委托授权 文档。在这两种情况下,只有以下领域可用于用户查找

  • 保留的 nativefile 领域始终支持用户查找。
  • 当在 *用户搜索* 模式 下配置领域时,ldap 领域支持用户查找。使用 user_dn_templates 配置领域时,不支持用户查找。
  • active_directory 领域中的用户查找支持要求使用 bind_dn 和绑定密码配置该领域。

pkisamloidckerberosjwt 领域不支持用户查找。

如果您只想将某个领域用于用户查找并阻止用户针对该领域进行身份验证,则可以 配置该领域 并将 authentication.enabled 设置为 false

用户查找功能是用于实现 run_as 和委托授权功能的内部功能 - 没有用于用户查找的 API。如果您想测试您的用户查找配置,则可以使用 run_as 进行测试。使用 身份验证 API,以 superuser(例如内置的 elastic 用户)身份进行身份验证,并指定 es-security-runas-user 请求标头

获取用户 API 和 用户配置文件 功能是检索有关 Elastic Stack 用户信息的替代方法。这些 API 与用户查找功能无关。