手把手教你利用Ranger对SolrCloud鉴权
Posted 中兴大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你利用Ranger对SolrCloud鉴权相关的知识,希望对你有一定的参考价值。
这是 中兴大数据 第206篇原创文章
Solr在5.0之后的版本增加了安全框架,能够对用户进行鉴权与授权,以便对用户进行资源访问的控制。Solr支持基础身份验证、Kerberos(网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务,麻省理工研发)身份验证以及基于角色的用户授权。用户还能够自己扩展身份验证的方式以及授权的方式。
所有认证、鉴权机制是基于保存在Zookeeper上的/security.json来描述。
以上这个文件描述了Solr的认证机制、授权机制。
认证机制采用solr.BasicAuthPlugin插件,授权采用solr.RuleBasedAuthorizationPlugin插件。
认证部分配置了一个用户名为solr,密码为SolrRocks的用户。
Ranger跟Solr的结合,就是Ranger里面实现了Solr的authorization插件部分,这样就可以进行鉴权了,下文会详细叙述。
下图为本指南中构建的组网图:
RangerAdmin:RangerAdmin服务器。运行在端口6080。
MySQL:mysql服务器,用来保存RangerAdmin的基本数据。运行在缺省端口。
Solr Audit Server:用来保存RangerAdmin 审计日志(Audit)的服务器,运行在6083端口。
Solr Server:需要认证和鉴权的Solr服务器,也就是我们目标管理服务器。运行在缺省的8983端口。
ZooKeeper:用来与Solr Server配合,构建SolrCloud环境,运行在2181端口。
安装git、maven、gcc、Mysql,这部分不详细描述。另外对Solr的安装、配置,本文也不做描述。
gitclone https://github.com/apache/incubator-ranger.git
mvn-DskipTests=true clean compile package install assembly:assembly
编译成功后,进入target目录,可以看到生成的各个模块包:
我们需要用到的是:ranger-0.5.0-admin.tar.gz、ranger-0.5.0-solr-plugin.tar.gz。
Ranger里面的所有模块的安装基本都是修改install.properties,然后运行这个模块的setup.sh(或者enable-**-plugin.sh)完成。
对于Ranger主模块install.properties里面的信息,主要是数据库的用户名密码、已经审计(Audit)方式:
cd incubator-ranger/security-admin/contrib/solr_for_audit_setup
编辑 install.properties:
配置完了运行./setup.sh :
在install_notes.txt里面可以看到,如何在哪边启动审计专用的Solr。实际启动的命令为:
/opt/solr/ranger_audit_server/scripts/start_solr.sh
在终端中输入命令启动RangerAdmin:
Ranger-adminstart
在浏览器中输入:http://localhost:6080可以看到如下界面:
输入用户名/密码:admin/admin 就可以登录进入。
在RangerAdmin的界面中,点几Solr后面的+,增加服务。
名称设置为solrdev,注意:这个地方的名称需要和下面设置的solrplugin中install.properties中配置的一致
用户名密码为ranger/ranger
Solr URL设置为:http://localhost:8983/solr/
(注:这个时候如果点几Test Connection是失败的,忽略这个错误。)
要支持Solr,需要使solr插件可用:
解压ranger-0.5.0-solr-plugin.tar.gz
进入解压目录,配置install.properties.
运行:enable-solr-plugin.sh
根据Solr的安全机制部分的介绍,我们可以实现不同的授权插件,来完成Solr的授权功能。Ranger就是通过实现Solr的授权插件来完成注入,以能够提供授权、审计能力。
需要配置security.json,将授权部分修改为Ranger的实现。Ranger的授权是通过类org.apache.ranger.authorization.solr.authorizer.RangerSolrAuthorizer来实现的。
以上配置说明了用户认证用的是Solr的BasicAuthPlugin来进行,常用的还有Kerberos认证。
运行如下命令将此文件上传到zk中:
./zkcli.sh-zkhost zk:2181 -cmd putfile /security.json ./security.json
注意Service名称,需要和此插件的REPOSITORY_NAME一致,如此出为hadoopdev
Username/Password设置Hadoop机器上的用户名
Authentication Type有两种:Simple和Kerberos。此出我们设置的为Simple,也就是采用Hadoop所在的主机的用户名来认证、授权
策略部分配置用户的权限。由于采用的是Simple方式,则用户是Hadoop主机上的用户。可以配置用户的读、写、运行等权限。
需要运行如下命令:
ln-s /usr/local/hadoop/etc/hadoop/
/usr/local/hadoop/conf
要支持HDFS,需要使HDFS插件可用:
解压ranger-0.5.0-hdfs-plugin.tar.gz 到 /usr/local/ranger-hdfs下
进入解压目录,配置install.properties:
运行:enable-hdfs-plugin.sh
由于脚本里面没有自动copy库,需要手动copy(这个地方不能根据Ranger的安装指导来,0.5版本的指导这个地方描述错误):
cp /usr/local/ranger-hdfs/lib/ranger-hdfs-plugin-impl/*.jar/usr/local/hadoop/share/hadoop/hdfs/lib/
/opt/solr/ranger_audit_server/scripts/start_solr.sh
Ranger-admin start
/opt/solr/bin/solr start -f -z [zkhost]:[zkport]
start-dfs.sh
start-yarn.sh
首先我们不提供用户名密码来进行查询:
下面我们提供上面配置的用户名密码(solr/SolrRocks)再请求:
浏览器中打开http://localhost:6080/index.html#!/reports/audit/bigData,可以看到审计日志信息:
参考文献
https://cwiki.apache.org/confluence/display/solr/Authentication+and+Authorization+Plugins
https://cwiki.apache.org/confluence/display/RANGER/Install+and+Configure+Solr+for+Ranger+Audits+-+Apache+Ranger+0.5?src=contextnavpagetreemode、
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html
以上是关于手把手教你利用Ranger对SolrCloud鉴权的主要内容,如果未能解决你的问题,请参考以下文章
手把手教你用Java实现一套简单的鉴权服务(SpringBoot,SSM)(未完待续...)