Ranger的愿景是给apache hadoop生态系统提供全面的安全管理,目前支持的模块已经比较全面,特别对hdp版本各个模块支持的比较全,比如hdfs、yarn、hive、hbase、storm、kafka、solr、knox、atlas等,对这些模块进行细粒度的数据访问授权和审计来对数据进行有效保护;
目前ranger已经发行了1.0.0-SNAPSHOT版本,希望今年会出稳定版本,这里记录一下去年应用的0.6.1版本安装使用过程,需要注意的是ranger对各个模块的版本支持兼容特别不好,具体要看ranger源码的构建文件中的版本号,比如0.6.1支持的hadoop是2.7.1版本的,2.6的就不行了,hive的是2.1,1.X就不支持;
在解压的源码下执行:
mvn -DskipTests=false clean compile package install assembly:assembly即可,由于ranger包含的模块插件比较多,整个编译过程比较漫长,建议只选需要的模块编译,这样能加速编译;
整个编译下来生成的插件如下:
解压ranger-0.6.1-admin.tar.gz ,进入主目录,vim install.properties
修改以下配置项
db_root_user=ranger
db_root_password=ranger123
db_host=mysqlserverhostname
#
# DB UserId used for the Ranger schema
#
db_name=ranger_test
db_user=ranger
db_password=ranger123
#Source for Audit Store
#audit_store=solr|db
# * audit_store is solr
audit_store=db
# * audit_solr_url URL to Solr. E.g. http://
audit_solr_urls=
audit_solr_user=
audit_solr_password=
audit_solr_zookeepers=
audit_db_name=ranger_audit_test
audit_db_user=ranger
audit_db_password=ranger123
上面数据库的配置按需要设置即可;
初始化启动前先将mysql驱动包放到/usr/share/java/mysql-connector-java.jar
接着执行./setup.sh 进行初始化;
执行ranger-admin start 即可启动ranger-admin;
浏览器http://hostname:6080如下登录界面,admin/admin 即可登录;
相应客户端解压ranger-0.6.1-usersync.tar.gz到目录ranger-usersync目录;
vim install.properties
修改:
##配置ranger-admin的地址
POLICY_MGR_URL = http://ranger-adminhost:6080
##5分钟同步一次更新
SYNC_INTERVAL = 5
#user sync log path
logdir=/data1/app/ranger/ranger-usersync/log
初始化:
./setup.sh
启动./ranger-usersync-services.sh start
解压该插件为/data1/app/ranger/ranger--hdfs-plugin
vim install.properties
修改:
# POLICY_MGR_URL=http://policymanager.xasecure.net:6080
#
POLICY_MGR_URL=http://ranger-adminhost:6080
#
# This is the repository name created within policy manager
#
# Example:
# REPOSITORY_NAME=hadoopdev
#
REPOSITORY_NAME=hadoopdev
XAAUDIT.DB.IS_ENABLED=true
XAAUDIT.DB.FLAVOUR=MYSQL
XAAUDIT.DB.HOSTNAME=mysqlserverhostname
XAAUDIT.DB.DATABASE_NAME=ranger_audit
XAAUDIT.DB.USER_NAME=ranger
XAAUDIT.DB.PASSWORD=ranger123
接着:
软连接hadoop配置包和hdfs lib目录到/data1/app/ranger/hadoop目录下,如下:
ln -s $HADOOP_HOME/etc/hadoop /data1/app/ranger/hadoop/conf
ln -s $HADOOP_HOME/share/hadoop/hdfs/lib /data1/app/ranger/hadoop/lib
最后启动hdfs 插件:./enable-hdfs-plugin.sh
登录ranger-admin进入页面,点击如下添加hdfs配置
进入以下配置项:
Namenode URL*配置为nameservices
上面的参数配置hdfs的ha信息
点击Test Connection
可以看到已经成功
进入hadoopenv的hdfs插件,新建策略
目前只有Allow Condition:通过以下设置配置Deny Condition:
curl -u admin:admin -X GET -H "Accept: application/json" -H "Content-Type: application/json"http://rangeradmin.host:6080/service/public/v2/api/servicedef/name/hdfs > ~/downloaded_definition.json
vim downloaded_definition.json
搜索
“option”:{}
改为
"options":{"enableDenyAndExceptionsInPolicies":"true"}
保存
curl -u admin:admin -X PUT -v -H "Content-Type: application/json"http://rangeradmin.host:6080/service/public/v2/api/servicedef/name/hdfs -d @downloaded_definition.json
执行上面上传即可添加了deny条件
再次打开hadoopenv新建策略即可看到以下Deny condition
3.4plugins
由于环境作业调度系统都是用hive客户端,并没有用hiveserver2,而且该版本支持的版本较高,暂不安装该插件,其他插件需要后面可进一步安装