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

SolrCloud模式下Solr集成PostgreSQL的认证配置及security.json部署疑问

SolrCloud模式下Solr集成PostgreSQL的认证配置及security.json部署疑问

嗨,我来帮你梳理下SolrCloud模式下security.json的正确部署方式,以及你当前遇到的问题:

核心结论:把security.json放进配置集上传是错误的

首先得明确:SolrCloud的security.json是全局集群级别的安全配置,用来管控整个SolrCloud的认证、授权规则,它不属于任何一个集合的配置集(configset)。配置集是给单个/多个集合用的业务配置(比如solrconfig、schema、data-config这些),两者完全是不同层级的东西,不能混在一起。

正确部署security.json到ZK的步骤

既然你用的是SolrCloud模式,所有集群级配置都存在ZK里,直接用Solr自带的ZK客户端工具操作就行,步骤如下:

  1. 准备好正确的security.json文件
    先写好你的认证授权规则,比如启用Basic认证、给操作DataImport的用户分配权限。举个简单的示例片段:

    {
      "authentication": {
        "class": "org.apache.solr.security.BasicAuthPlugin",
        "credentials": {
          "admin": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
        }
      },
      "authorization": {
        "class": "org.apache.solr.security.RuleBasedAuthorizationPlugin",
        "permissions": [
          {
            "name": "dataimport",
            "role": "data-importer"
          },
          {
            "name": "collection-admin-read",
            "role": "admin"
          }
        ],
        "user-role": {
          "admin": ["admin"],
          "pg-importer": ["data-importer"]
        }
      }
    }
    

    (注:上面的密码是用Solr的bin/solr create-user命令生成的加密值,不要直接写明文)

  2. 用Solr的ZK命令上传到指定节点
    Solr自带了操作ZK的工具,直接在Solr服务器上执行以下命令(替换成你的ZK地址和本地security.json路径):

    # 上传security.json到ZK的/solr/security.json节点(默认Solr在ZK的根节点是/solr)
    bin/solr zk putfile -z zk-host:2181 /solr/security.json /path/to/your/local/security.json
    
  3. 触发Solr集群重载安全配置
    如果集群已经在运行,上传完后需要让Solr重新加载安全配置,用API请求即可:

    curl -X POST http://solr-host:8983/api/cluster/security/reload
    

    (如果已经启用认证,记得加-u username:password参数)

关于你之前的配置集的补充说明

你的自定义配置集只需要包含集合级的业务配置,也就是:

  • solrconfig.xml:引入DataImport Handler的依赖jar,配置/dataimport请求处理器
  • data-config.xml:配置PostgreSQL的数据源、实体映射规则
  • managed-schema(或schema.xml):定义索引字段
  • 相关依赖jar:比如PostgreSQL驱动jar、Solr DataImport Handler的jar(可以放到配置集的lib目录一起上传)

举个solrconfig.xml里引入DataImport Handler的示例:

<!-- 引入DataImport Handler依赖 -->
<lib dir="${solr.config.dir}/lib" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="${solr.config.dir}/lib" regex="postgresql-42.6.0.jar" />

<!-- 配置DataImport请求处理器 -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">data-config.xml</str>
  </lst>
</requestHandler>

额外注意事项

  • 确保你有ZK的操作权限:SolrCloud模式下,通常只有集群管理员能操作ZK的核心节点
  • 如果是全新的SolrCloud集群,第一次上传security.json会直接启用认证,之后所有Solr请求都需要带认证信息
  • 配置security.json时,一定要给执行DataImport的用户分配dataimport权限,否则会出现权限报错

备注:内容来源于stack exchange,提问作者Kit Neoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:02:57