You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSearch使用通配符删除别名时出现权限错误求助

问题

需要执行操作:移除别名my_index关联的所有索引,再将其关联到单个指定索引。使用的请求如下:

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "*",          // or "index": "_all"
        "alias": "my_index"
      }
    },
    {
      "add": {
        "index": "my_index_2023_01_05_17_18_29",
        "alias": "my_index"
      }
    }
  ]
}

使用admin用户执行该请求时,出现403权限错误:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "no permissions for [] and User [name=admin, backend_roles=[], requestedTenant=]"
      }
    ],
    "type" : "security_exception",
    "reason" : "no permissions for [] and User [name=admin, backend_roles=[], requestedTenant=]"
  },
  "status" : 403
}

错误信息未明确缺失的权限,将index参数改为my_index*时请求可执行,但无法满足移除所有关联索引的需求(使用OpenSearch 2.3版本)。

原因分析

在OpenSearch的权限控制逻辑中,使用通配符*或_all指定索引时,要求用户拥有所有索引的别名管理权限,但当前admin用户的权限范围仅覆盖了匹配my_index*的索引,而非全局所有索引。另外,OpenSearch处理全局通配符时,权限校验逻辑无法精准定位具体缺失的权限项,导致错误信息未明确列出权限内容。

解决方法

方法一:调整权限配置

给admin用户添加针对所有索引的别名管理权限:

  • 进入OpenSearch Dashboards的Security插件界面
  • 找到Roles管理页面,创建或编辑admin用户关联的角色
  • 添加权限项:
    • 权限类型选择Indices
    • 索引模式填写*
    • 勾选manage_aliases权限
  • 保存角色配置后重新执行请求

方法二:先查询关联索引再针对性移除

如果不想赋予全局权限,可先查询别名当前关联的所有索引,再精准移除:

  1. 执行查询获取关联索引列表:
GET _alias/my_index
  1. 将返回的所有关联索引填入remove操作的index参数,示例:
POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": ["my_index_old_1", "my_index_old_2"],
        "alias": "my_index"
      }
    },
    {
      "add": {
        "index": "my_index_2023_01_05_17_18_29",
        "alias": "my_index"
      }
    }
  ]
}

该方式仅需对实际关联的索引拥有manage_aliases权限即可。

内容的提问来源于stack exchange,提问作者André Machado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:45:43