更新时间:2024-11-29 GMT+08:00

访问索引数据鉴权失败

问题背景与现象

ACL鉴权模式下,客户端访问索引数据时报错如下:

{
    "status": 403,
    "error": {
        "reason": "permission information for user [aaa] is exception, index [bbb] ,this index owner in ZK is [NA], your group is [xxx]"
    }
}

原因分析

  • 索引的鉴权信息写入ZooKeeper过程中出现异常,导致鉴权信息没有正常写入到ZooKeeper。
  • Elasticsearch实例启动过程中,从ZooKeeper读取鉴权信息失败,导致进程缓存中未加载到该索引的鉴权信息。

解决方法

  1. 登录客户端所在节点,执行如下命令进行认证:

    kinit elasticsearch

    • 需要使用elasticsearch用户进行认证,其他用户没有权限访问鉴权信息。
    • elasticsearch用户的密码, 请联系集群管理员获取。

  2. 参考使用ZooKeeper客户端章节连接ZooKeeper。
  3. 执行如下命令查看ZooKeeper上是否存在异常索引的鉴权信息。

    get /elasticsearch/indexes/index_name

    • 是,执行4
    • 否,执行5

    index_name:异常索引的名称。

  4. 参考基于用户和角色的鉴权章节对该用户所属角色授予异常索引的读写访问权限,操作结束。
  5. 使用同步索引属组信息工具补全异常索引缺失的鉴权信息,操作结束。