solr集成kerberos认证

1. 软件版本

  Solr 8.8

2. kerberos

2.1. 添加solr用户

  在kdc中为solr添加主体并生成用于验证HTTP请求的keytab文件,为每个要运行solr的主机创建一个keytab文件,并将主体名称与主机一起使用:

root@kdc:/# kadmin.local
kadmin.local: addprinc -randkey HTTP/<hostname>@EXAMPLE.COM
kadmin.local: ktadd -k /tmp/solr.keytab HTTP/<hostname>@EXAMPLE.COM
kadmin.local: quit

  注:

    addprinc -randkey HTTP/\${HOST1}@EXAMPLE.COM,将${HOST1}替换为实际的主机名。

    上述操作需要每个solr节点都重复一遍,为每台solr节点创建kerberos HTTP用户主体,并生成/tmp/solr.keytab文件,最后复制到solr节点的/keytabs/solr.keytab路径。

2.2. zookeeper配置(如果已配置kerberos则跳过)

  zookeeper管理solrcloud集群中的节点通信,它必须要与集群各节点中认证。配置要求为zookeeper设置服务principal,定义JAAS配置文件。

  第一步是在zookeeper的conf目录创建java.env文件,并且添加如下内容:

export JVMFLAGS="-Djava.security.auth.login.config=/etc/zookeeper/conf/jaas-client.conf"

  JAAS配置文件应该包含下面的参数,确保改变principal和keytab的路径。jaas-client.conf配置内容如下:

Server {
 com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/keytabs/zkhost1.keytab"
  storeKey=true
  doNotPrompt=true
  useTicketCache=false
  debug=true
  principal="zookeeper/host1@EXAMPLE.COM";
};

  最后,在zookeeper配置文件zoo.cfg添加如下内容:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000

  启动zookeeper的时候,需要指定JAAS配置文件,如下:

bin/zkServer.sh start -Djava.security.auth.login.config=/etc/zookeeper/conf/jaas-client.conf

2.3. 创建security.json

  在solrcloud模式中,设置solr通过上传security.json到zookeeper来使用kerberos插件

server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json '{"authentication":{"class":"org.apache.solr.security.KerberosPlugin"}}'

  如果你使用solr的standalone模式,需要创建security.json文件,然后放置在$SOLR_HOME目录下方。

2.4. 创建jaas文件

  JAAS配置文件定义认证属性使用,例如服务principal和keytab路径。在下面的例子中,我们创建JAAS配置文件/home/foo/jaas-client.conf。当我们启动solr的时候,我们将会使用该名字和路径。确保使用正确principal和keytab文件路径。

Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab="/keytabs/solr.keytab"
    storeKey=true
    useTicketCache=true
    debug=true
    principal="HTTP/192.168.0.107@EXAMPLE.COM";
};

2.5. 在solr.in.sh中添加以下内容

  当启动solr的时候,需要配置solr的start命令中属性参数,示例如下:

SOLR_AUTH_TYPE="kerberos"
SOLR_AUTHENTICATION_OPTS="-Djava.security.auth.login.config=/home/foo/jaas-client.co
nf -Dsolr.kerberos.cookie.domain=192.168.0.107 -Dsolr.kerberos.cookie.portaware=true -Dsolr.kerberos.principal=HTTP/192.168.0.107@EXAMPLE.COM -Dsolr.kerberos.keytab=/keytabs/solr.keytab"

2.6. 启动solr

bin/solr -c -z server1:2181,server2:2181,server3:2181/solr

2.7. 测试配置

  第一步执行如下命令:

kinit user@EXAMPLE.COM

  第二步执行如下命令,curl,会得到成功的反应:

curl --negotiate -u : "http://192.168.0.107:8983/solr/"

3. solrJ的认证

   在solrJ应用中使用kerberos认证,需要在创建solr客户端之前执行下面两步:

System.setProperty("java.security.auth.login.config", "/home/foo/jaas-client.conf");
HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());

  你需要为JAAS客户端配置jaas-client.conf指定kerberos服务principal和keytab,如下:

SolrJClient {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab="/keytabs/foo.keytab"
    storeKey=true
    useTicketCache=true
    debug=true
    principal="foo@EXAMPLE.COM";
};

4. 参考资料

https://solr.apache.org/guide/8_8/kerberos-authentication-plugin.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Solr 的身份认证配置,您可以按照以下步骤进行设置: 1. 启用 Solr 的身份认证:在 Solr 的安装目录中,打开 `solr.in.sh`(Linux/MacOS)或 `solr.in.cmd`(Windows)文件,并找到以下行: ``` # SOLR_AUTHENTICATION_OPTS= ``` 取消注释并设置该行为: ``` SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:password123" ``` 其中 "solr" 是用户名,"password123" 是密码。 2. 创建授权用户:在 Solr 的安装目录中执行以下命令以创建授权用户: ``` bin/solr create_user -c <core_name> -p <password> ``` `<core_name>` 是您的 Solr 核心名称,`<password>` 是用户的密码。 3. 配置授权规则:打开 Solr 的 `solr.xml` 配置文件,并在 `<security>` 标签内添加以下内容: ```xml <authentication class="solr.BasicAuthPlugin"> <str name="credentials">solr:password123</str> <str name="realm">Solr Basic Authentication</str> </authentication> <authorization class="solr.RuleBasedAuthorizationPlugin"> <params> <!-- 添加授权规则 --> </params> </authorization> ``` 4. 配置访问控制规则:在 `<authorization>` 标签下添加适当的规则以控制用户的访问权限。例如,可以使用如下规则允许用户具有完全访问权限: ```xml <rule name="allow_all" role="solr-admin"> <user username="solr"/> </rule> ``` 您可以根据需要添加其他规则。 5. 重启 Solr:完成上述配置后,重新启动 Solr 服务以使身份认证生效。 请注意,在配置身份认证之前,建议先进行备份并确保对 Solr 实例有适当的访问权限。此外,也可以使用其他可用的身份认证插件,如 LDAP 或 Kerberos。详细信息可以参考 Solr 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值