授权异常编辑

症状

  • 我配置了适当的角色和用户,但我仍然收到授权异常。
  • 我可以通过 LDAP 进行身份验证,但我仍然收到授权异常。

解决方案

  1. 验证与用户关联的角色名称是否与 roles.yml 文件中定义的角色相匹配。您可以使用 elasticsearch-users 工具列出所有用户。任何未知角色都标有 *

    bin/elasticsearch-users list
    rdeniro        : admin
    alpacino       : power_user
    jacknich       : monitoring,unknown_role* 

    roles.yml 中找不到 unknown_role

    有关此命令的更多信息,请参阅 elasticsearch-users 命令

  2. 如果您正在通过 LDAP 进行身份验证,则许多配置选项都可能导致此错误。

    组标识

    通过 LDAP 搜索或用户上的“memberOf”属性来定位组。此外,如果关闭了子树搜索,它将只搜索一层深度。有关所有选项,请参阅 LDAP 领域设置。这里有很多选项,坚持使用默认值并不适用于所有情况。

    组到角色映射

    role_mapping.yml 文件或此文件的位置可能配置错误。有关更多信息,请参阅 安全文件

    角色定义

    角色定义可能丢失或无效。

    为了帮助追踪这些可能性,请启用其他日志记录以进一步排除故障。您可以通过配置以下持久性设置来启用调试日志记录

    response = client.cluster.put_settings(
      body: {
        persistent: {
          'logger.org.elasticsearch.xpack.security.authc' => 'debug'
        }
      }
    )
    puts response
    PUT /_cluster/settings
    {
      "persistent": {
        "logger.org.elasticsearch.xpack.security.authc": "debug"
      }
    }

    或者,您可以将以下行添加到 ES_PATH_CONF 中的 log4j2.properties 配置文件的末尾

    logger.authc.name = org.elasticsearch.xpack.security.authc
    logger.authc.level = DEBUG

    有关更多信息,请参阅 配置日志记录级别

    成功的身份验证应生成列出组和角色映射的调试语句。