使用Solr Basic auth插件如何配置core级访问权限
Solr Basic Auth 按Core维度配置访问权限方法
之前配置不生效的核心原因是混淆了Solr单机模式core和SolrCloud模式collection的权限匹配规则:collection 作为权限匹配键仅在SolrCloud集群模式下生效,单机部署的core需要通过路径匹配做权限绑定,具体配置步骤如下:
- 提前规划账号、角色和core的对应关系
比如要求prod_user仅能访问product_core,order_user仅能访问order_core,管理员账号拥有所有权限。 - 编写符合规则的security.json配置
核心是在permissions配置项中,通过path字段匹配对应core的请求路径,不要使用collection字段做匹配,参考配置如下:
{ "authentication": { "class": "solr.BasicAuthPlugin", "credentials": { "prod_user": "通过solr auth工具生成的sha256密码哈希", "order_user": "通过solr auth工具生成的sha256密码哈希", "solr_admin": "管理员账号密码哈希" }, "blockUnknown": true }, "authorization": { "class": "solr.RuleBasedAuthorizationPlugin", "permissions": [ { "name": "allow-product-core-access", "role": "prod_role", "path": "/solr/product_core/*" }, { "name": "allow-order-core-access", "role": "order_role", "path": "/solr/order_core/*" }, { "name": "allow-all-admin-access", "role": "admin_role", "path": "/*" } ], "user-role": { "prod_user": "prod_role", "order_user": "order_role", "solr_admin": "admin_role" } } }
- 配置生效与验证
写完配置后通过Solr认证接口上传security.json即可,无需重启服务。验证时直接用对应账号跨core发起请求即可,比如用prod_user访问order_core的查询接口会返回403状态码,访问自身绑定的product_core接口可正常返回结果即为配置成功。
注意事项
- 路径匹配必须带
/*后缀,否则只会匹配core的根路径,core下的查询、写入、管理等子接口不会命中权限规则- 如果之前留存了带
collection匹配键的规则,建议调整优先级或者直接删除,避免规则覆盖导致权限异常- 不要给普通业务账号绑定全局路径
/*的权限,否则会突破core的访问限制
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

