目前已有的流行的统一授权管理的开源框架为Ranger和Sentry。
前者由hortonworks主推(可以支持hive的列级授权,支持审计Audit)
后者由Cloudera开发,可能更有后劲。另外Cloudera在酝酿一个安全平台, 目前只能通过视图来控制列权限。
user: Ranger自己管理的用户,分为internal和external,前者为Ranger自己的用户,例如admin;后者为linux的用户,在操作系统里新增用户后会同步到Ranger。
group: Ranger自己管理的用户组,没有内外之分,我们看到用户的组应该是Ranger自动生成的,跟linux的用户组无关。
Service: 即授权管理服务,每个组件可以设置多个Service。(例如hive hdfs hbase 等, 可以对多个hive 进行)
Policy: 每个Service中可以有多条Policy,组件不同,Policy授权模型不同 (创建策略的时候需要指定用户或组)
HDFS/HBASE/HIVE/YARN/KNOX/STORM/SOLR/KAFKA 等
hdfs 先走ranger 认证, 如果失败, 在走hdfs 认证。
hive 直接走ranger认证, 如果成功, 还需走hdfs 的认证, 所以会有当授权给一个用户 INSERT 权限,但是此用户对此表对应的location 目录没有权限。
ranger-admin:提供web server以及Ranger管理
ranger-usersync:与linux或LDAT同步用户。
ranger-xxx-plugin为针对各组件的插件。
ranger 目前大版本 主要是 0.4, 0.5 , 0.6
0.4 版本 主要支持的hadoop 生态版本(Hadoop 2.6.0 — Hive 0.14.0 – Hbase 0.99.2) (2015年2月 最后更新)
0.5 版本 主要支持的hadoop 生态版本(Hadoop 2.7.0 — Hive 1.2.0 – Hbase 1.1.0) 注意: 不支持hadoop2.6.0 因为INodeAttributeProvider 不存在。(2016年9月)
0.6 版本 主要支持的hadoop 生态版本(Hadoop 2.7.1 — Hive 2.1.0 – Hbase 1.1.3) 最新
针对目前数仓情况,0.4 更新时间很久, 选取0.5 中ranger-0.5.3-rc3 版本。
tar -zxvf ranger-0.5.3-admin.tar.gz; cd ranger-0.5.3-admin; vim install.properties;
更改配置文件:
SQL_CONNECTOR_JAR=/home/hadoop/hive/lib/mysql-connector-java-5.1.35.jar # mysql 库路径
# mysql root 用户
db_root_user=root
db_root_password=xxx
db_host=hlg-5p149-wangwenting
# ranger 的db
db_name=ranger
db_user=root
db_password=xxx
# ranger 审计db
audit_db_name=ranger_audit
audit_db_user=root
audit_db_password=xxx
# ------- UNIX User CONFIG ---------------- 安装的时候会更改ranger-0.5.3-admin 所属用户
unix_user=hadoop
unix_group=hadoop
# ranger web 服务地址
POLICY_MGR_URL=http://localhost:6080
# mysql jar 包
SQL_CONNECTOR_JAR=/home/hadoop/hive/lib/mysql-connector-java-5.1.35.jar
# 服务名
REPOSITORY_NAME=hadoopdev
# 统计日志db 信息
XAAUDIT.DB.IS_ENABLED=true
XAAUDIT.DB.FLAVOUR=MYSQL
XAAUDIT.DB.HOSTNAME=hlg-5p149-wangwenting
XAAUDIT.DB.DATABASE_NAME=ranger_audit
XAAUDIT.DB.USER_NAME=root
XAAUDIT.DB.PASSWORD=xxx
root 安装 ./enable-hdfs-plugin.sh
安装的时候要生成一些配置文件和jar包,执行前需要进行对应
实例:. hadoop 配置目录 /home/hadoop/hadoop/etc/hadoop/ hdfs 目录/home/hadoop/hadoop/share/hadoop/hdfs/lib/
ranger 目录 /home/hadoop/ranger-0.5.3
/home/haoop/ranger-0.5-3/ranger-0.5.3-admin
/home/hadoop/ranger-0.5-3/ranger-0.5.3-hdfs-plugin
此时要做的就是在/home/hadoop/ranger-0.5.3 下创建一个目录hadoop,cd hadoop;
然后 ln -s /home/hadoop/hadoop/etc/hadoop/ conf ; ln -s /home/hadoop/hadoop/share/hadoop/hdfs/lib/ lib
并将 /home/hadoop/ranger-0.5-3/ranger-0.5.3-hdfs-plugin/lib/ranger-hdfs-plugin-impl 中的jar 包 拷贝到/home/hadoop/hadoop/share/hadoop/hdfs/lib/
安装结束后:
会看见多了几个配置文件。
修改了hdfs-site.xml 如下
dfs.permissions.enabled
true
dfs.permissions
true
dfs.namenode.inode.attributes.provider.class
org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer
验证是否成功:
登录web ; 点击HDFS plugin 添加按钮,添加服务 ; 输入定义的服务名:hadoopdev(在配置参数时设置的,要保持一致;点击 Test Connection 执行成功
tar -zxvf ranger-0.5.3-hive-plugin.tar.gz; cd ranger-0.5.3-hive-plugin;vim install.properties
安装配置同hdfs-plugin REPOSITORY_NAME=hivedev
root 安装 ./enable-hive-plugin.sh 具体设置目录同hdfs ,在/home/hadoop/ranger-0.5.3 下mkdir hive, 设置软连接
安装结束后:会生成对应的ranger 配置文件, 修改hiveserver2-site.xml 文件
如下:
hive.security.authorization.enabled
true
hive.security.authorization.manager
org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
hive.security.authenticator.manager
org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator
hive.conf.restricted.list
hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager
如果让客户端也生效, 此时hive.security.authenticator.manager 用默认值。 不然会获取不到用户信息
创建hivedev service
hdfs 策略配置(首先需要在ranger 里面创建用户组和用户 ---- 此处要和linux 对应,配置后,linux 用户就会对应这些策略)
hive 策略配置