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

SOLR权限配置:如何实现仅指定用户可删除目标Collection?

问题根因

你之前配置的权限规则仅作用在目标Collection的自有路径范围(/solr/<目标Collection>/*),只能管控这些路径下的查询、索引写入等操作。但Collection删除请求实际发送到集群级的/solr/admin/collections通用端点,通过action=DELETE参数指定待删除的集合名称,这类集群级请求完全不在你之前配置的权限规则覆盖范围内,因此UserB不受查询权限规则限制,依然可以执行删除操作。

配置步骤

1. 为Collection删除操作配置专属允许规则

这条规则精准匹配删除目标集合的实际请求,仅允许绑定了my-rule角色的UserA执行操作:

curl -u <<admin_user>>:<<admin_user_password>> -H 'Content-type:application/json' -d '{
  "set-permission": {
    "name": "allow-authorized-user-delete-collection",
    "role": "my-rule",
    "path": "/admin/collections",
    "params": {
      "action": "DELETE",
      "name": ["collection", "collection2"]
    },
    "method": "GET,POST"
  }
}' http://<<solr-host>>:<<solr-port>>/solr/admin/authorization

参数说明:

  • 权限作用路径对准Collection删除的实际请求端点/admin/collections,不再局限于单个Collection的自有路径
  • 通过params限定规则触发条件:仅当请求的操作类型为DELETE、且待删除的集合是你要管控的两个目标集合时,规则才会生效
  • 直接关联已经分配给UserA的my-rule角色,仅持有该角色的用户可以匹配到这条允许权限

2. 配置兜底拒绝规则避免权限漏配

Solr默认逻辑为“未匹配到明确允许规则的请求,若无显式拒绝规则可能被默认放行”,因此需要补充一条高优先级的兜底规则,明确禁止所有无my-rule角色的用户执行上述删除操作:

curl -u <<admin_user>>:<<admin_user_password>> -H 'Content-type:application/json' -d '{
  "set-permission": {
    "name": "deny-non-authorized-user-delete-collection",
    "role": null,
    "path": "/admin/collections",
    "params": {
      "action": "DELETE",
      "name": ["collection", "collection2"]
    },
    "policy": "deny",
    "priority": 100
  }
}' http://<<solr-host>>:<<solr-port>>/solr/admin/authorization

参数说明:

  • role: null代表规则不关联任何可访问的角色组
  • policy: deny代表未匹配到更高优先级允许规则的请求,直接返回403权限错误
  • priority:100代表规则优先级高于普通允许规则,确保兜底逻辑优先生效
验证方式
  • 用UserA账号发送目标Collection的删除请求,可正常通过权限校验完成操作
  • 用UserB账号发送相同的删除请求,会返回403权限不足错误,满足“仅UserA可访问、可删除目标Collection”的权限要求

注意:你之前给UserA绑定的build角色如果无实际业务需要,可后续通过remove-user-role接口移除,避免超出业务需求的权限范围


内容的提问来源于stack exchange,提问作者Varun Chadha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 22:45:05