Solr学习笔记(3)-Solr Admin UI 授权插件配置
http://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#enable-basic-authentication
Solr具有支持用户身份验证和授权的安全框架。这允许验证用户的身份并限制对solr集群中资源的访问。
Solr包含一些现成的插件,并且可以使用下面描述的身份验证和授权框架开发其他插件。
所有身份验证和授权插件都可以与SOLR一起工作,无论它们是在solrcloud模式下运行还是在独立模式下运行。所有身份验证和授权配置(包括用户和权限规则)都存储在名为security.json的文件中。在独立模式下使用solr时,此文件必须位于$solr_主目录中(通常为server/solr)。使用solrcloud时,此文件必须位于ZooKeeper中。
下面的部分介绍如何启用security.json插件,并将它们放置在适合您操作模式的位置。
使用security.json启用插件
初始化任何类型的安全插件所需的所有信息都存储在security.json文件中。此文件包含两个部分,每个部分用于身份验证和授权。
-
Sample security.json
-
{
-
"authentication" : {
-
"class": "class.that.implements.authentication"
-
},
-
"authorization": {
-
"class": "class.that.implements.authorization"
-
}
-
}
/security.json文件在SOLR实例出现之前需要位于正确的位置,因此SOLR启动时启用了安全插件。有关如何使用security.json和solr的信息,请参阅下面的部分。
根据所使用的插件,其他信息将存储在security.json中,例如用户信息或创建角色和权限的规则。这些信息是通过Solr提供的每个插件的API添加的,或者在定制插件的情况下,通过您设计的方法添加的。
下面是一个更详细的security.json示例。在此,启用了基本身份验证和基于规则的授权插件,并添加了一些数据:
-
{
-
"authentication":{
-
"class":"solr.BasicAuthPlugin",
-
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}
-
},
-
"authorization":{
-
"class":"solr.RuleBasedAuthorizationPlugin",
-
"permissions":[{"name":"security-edit",
-
"role":"admin"}],
-
"user-role":{"solr":"admin"}
-
}}
在solr中使用security.json
在Solrcloud模式下
在配置solr使用身份验证或授权插件时,需要将security.json文件上载到zookeeper。以下命令在文件上载时写入文件-您也可以上载已在本地创建的文件。
>server/scripts/cloud scripts/zkcli.sh-zkhost localhost:2181-cmd put/security.json
'“authentication”:“class”:“org.apache.solr.security.kerberosplugin”'
请注意,此示例定义了用于身份验证的kerberosplugin。您将要根据您使用的插件修改此部分。
这个例子在命令行中也定义了security.json,但是您也可以在本地定义一个文件并将其上载到zookeeper。
根据您使用的身份验证和授权插件,您可能将用户信息存储在security.json中。如果是这样,我们强烈建议您在ZooKeeper节点中实现访问控制。有关如何启用此功能的信息,请参见ZooKeeper访问控制部分。
一旦security.json被上传到zookeeper,您应该使用适当的API来更新它。您可以手动编辑它,但必须注意删除任何版本数据,以便在所有ZooKeeper节点上对其进行正确更新。版本数据位于security.json文件的末尾,并将以字母“v”后跟数字的形式显示,如“v”:138。
在独立模式下
在独立模式下运行solr时,需要创建security.json文件,并将其放在$solr_主目录中进行安装(这与您找到solr.xml的位置相同,通常是server/solr)。
如果您使用的是遗留的扩展和分发,那么您将需要在集群的每个节点上放置security.json。
您可以使用身份验证和授权API,但是如果您使用的是旧的伸缩模型,则需要在每个节点上分别发出相同的API请求。如果愿意,还可以手动编辑security.json。
身份验证插件
身份验证插件通过对传入请求进行身份验证,有助于保护solr的端点。自定义插件可以通过扩展authenticationPlugin类来实现。
身份验证插件由两部分组成:
服务器端组件,它使用插件中定义的机制(如kerberos、basic auth或其他)截取并验证传入到solr的请求。
客户端组件,即httpclientconfigurer的扩展,它允许solrj客户端使用服务器理解的身份验证机制向安全的solr实例发出请求。
启用插件
在/security.json中指定身份验证插件,如下例所示:
-
{
-
"authentication": {
-
"class": "class.that.implements.authentication",
-
"other_data" : "..."}
-
}
在初始化期间,security.json的身份验证块中的所有内容都将作为插件的映射进行传递。
身份验证插件也可以通过在启动期间传入-dauthenticationplugin=<plugin class name>与独立的solr实例一起使用。
可用的身份验证插件
Solr具有以下身份验证插件的实现:
文章来源: blog.csdn.net,作者:隔壁老瓦,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/wxb880114/article/details/90410000
- 点赞
- 收藏
- 关注作者
评论(0)