授权异常

编辑

症状

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

解决方法

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

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

    unknown_role 未在 roles.yml 中找到

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

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

    组识别

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

    组到角色的映射

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

    角色定义

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

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

    resp = client.cluster.put_settings(
        persistent={
            "logger.org.elasticsearch.xpack.security.authc": "debug"
        },
    )
    print(resp)
    response = client.cluster.put_settings(
      body: {
        persistent: {
          'logger.org.elasticsearch.xpack.security.authc' => 'debug'
        }
      }
    )
    puts response
    const response = await client.cluster.putSettings({
      persistent: {
        "logger.org.elasticsearch.xpack.security.authc": "debug",
      },
    });
    console.log(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

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

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