Ranger目标
Ranger官网描述如下:
- 通过集中的安全管控使用UI/REST API去管理所有的相关任务。
- 对Hadoop组件访问/操作进行细粒度授权
- 使所有Hadoop授权标准化
- 增强不同的授权方法,基于角色的访问控制,基于属性的访问控制。
- 对Hadoop的所有组件集中审计用户的访问和管理操作。
Ranger常见问题
- Ranger是向Hadoop相关组件提供了什么服务?
集中式的安全框架管理Hadoop和相关的组件,用户可以很方便的管理用户/用户组访问资源的策略。
可以启动审计策略和策略的分析。
可以委托数据管理权。 - Ranger目前支持了什么?
Hadoop
Hive
Yarn
HBase 等等 - Ranger是如何工作的?
1.核心是一个集中的Web应用服务器
策略模块
审计模块
报告模块
2.在服务器上插件化运行 - Ranger有单点问题吗?
不存在单点问题
1.策略服务器用来提供策略,即便策略服务器关闭,插件也可以正常运行
2.可以构建Web应用程序HA模式,使用数据库复制设置。
Ranger-Hadoop
- Ranger如何为Hadoop提供授权?
Ranger提供了一个插件,作为Hadoop授权方法的一部分。Ranger插件在用户请求时决定是否用户请求可以被授权,插件同时会收集请求细节用来审计。
Ranger强制执行策略数据库的安全策略(用户资源权限)。安全策略存在策略管理器上,独立于本机的权限。 - Ranger是不是模拟了Hadoop的unix权限
不是,Ranger是基于策略的管理。如果权限不能覆盖,Ranger提供了一个默认特性,可以使用Hadoop本机文件权限来进行访问验证。
可以通过配置强制使用Ranger的策略进行权限管理。
- Ranger插件需要在Datanode上执行吗?
Ranger插件只在服务端执行。
Ranger-Hive
- Ranger是如何进行HiveServer2授权的?
HiveServer2的授权策略里面可以选择Ranger插件。 - Ranger和HiveServer2的Sql Standard authorization比较如何?
Hive具有两种授权方式,基于存储的,和基于标准SQL的。基于标准SQL授权提供库,表级别的授权。
Ranger可以做的更好
1.更细粒度(列级别)
2.资源支持通配符
3.集中管理
Ranger-Yarn
- Ranger如何提供Yarn的授权?
yarn提供了两种权限,admin权限,和submit权限。admin权限用来设置队列容量,提交任务,kill任务等。submit权限不能进行队列管理,其他的差不多。Yarn授权插件也可以选择Ranger。
还有一些其他的组件,比如HBase,Kafka等等,大同小异。
Ranger接口
Ranger文档是在太少,只能找到这一部分。
Ranger插件安装
这部分不翻译了,直接在github地址最下面就可以找到。
安装主机信息
- Ranger-Admin
运行Policy Admin Tool web,暴露6080
- User Synchronization
同步该主机的用户和组信息到Ranger的Database
- Ranger Component信息
Ranger Hive授权
以Hive授权为切入点,了解一下Ranger授权的实现。
Hive授权设计
Hive授权的目的是构造一个和RDBMS一致的权限模型。
那么Hive和RDBMS系统的区别是啥呢?
Hive和RDBMS共用了一些SQL关键字,用法也类似。但是也有许多区别
- 松散性
RDBMS不可以绕过权限去访问元数据,但是Hive可以。
- 操作步骤
hive的元数据和数据是分开的,SQL权限不能一一对应到元数据的操作上。
授权需要考虑的是
- SQL如何转换成对对象的操作
- 对元数据的直接访问如何进行授权管理
Hive Ranger 授权实现
- 配置项
hive.security.authorization.manager 配置使用Ranger的Hive插件
<property>
<name>hive.security.authorization.manager</name>
<value>org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory</value>
</property>
- 权限转化
把SQL权限转化为权限访问策略
# hive检查权限接口
ss.getAuthorizerV2().checkPrivileges(hiveOpType, inputsHObjs, outputHObjs, authzContextBuilder.build());
# ranger 请求,HiveOperationType 转化为对象的具体权限,对象,读权限,写权限
enum HiveOperationType {EXPLAIN,LOAD等}
enum HiveObjectType { NONE, DATABASE, TABLE, VIEW, PARTITION, INDEX, COLUMN, FUNCTION, URI, SERVICE_NAME, GLOBAL };
enum HiveAccessType { NONE, CREATE, ALTER, DROP, INDEX, LOCK, SELECT, UPDATE, USE, READ, WRITE, ALL, REPLADMIN, SERVICEADMIN, TEMPUDFADMIN };
- 权限检查
evaluatePolicies,最终是通过evaluatePoliciesNoAudit循环校验所有的allAccessDefs
Ranger审计模块
这一块暂时不想涉及了,在各个插件中都有审计的配置。构架应该是随插件启动收集审计日志吧。