Ranger中的权限管理(用户,用户组,角色管理)
Ranger中的权限管理
所使用ranger版本为2.0.0
Ranger可以将权限提供给用户,用户组,角色。设置界面如下:
用户管理界面同上:
如图,用户分为内部用户(Internal)和外部用户(External)
- 内部用户:在ranger中创建,可以登录ranger的管理界面,协助管理员设置策略。
- 外部用户:从其他系统同步过来的用户(通过Ranger-userSync组件),来源包括但不限于linux系统。外部用户的信息无法修改,和linux系统中的信息同步。
用户组界面:
同用户一样,用户组也分为外部用户组和内部用户组,外部用户组通过同步linux系统的用户组得到,内部用户组在ranger管理系统中创建。
角色界面:
角色创建界面:
如图:创建角色时有三个可选项:
- Users:获得该角色的用户
- Groups:获得该角色的用户
- Roles:获得该角色的角色(在上图中就是把角色 role_for_inherit赋予给了test_role)。
基于角色的控制实验:
默认情况下,hive用户对student表没有访问权限。
将权限赋予角色role_for_inherit,再将角色赋给用户hive:
实验结果:
可以正常查询,说明角色生效。
接下来将角色role_for_inherit从hive用户上移除,将role_for_inherit赋给角色test_role,再将角色test_role赋给用户hive,看角色继承是否有效。
实验结果:
依旧可以正常查询,说明角色继承生效。
接下来让用户默认拥有查询权限,但是对角色role_for_inherit禁止查询,将角色role_for_inherit赋给用户hive。再进行上面两组实现。
结果显示角色和角色继承功能都生效了。
补充实验: 将角色test_role赋给用户hive。给hive用户查询权限,但是在test_role上禁止查询权限
结果:
查询被禁止。
给角色test_role查询的权限,但是在hive用户上显示禁止查询:
实验结果:
查询被禁止。
总结:
- ranger支持在用户,用户组,角色层面上进行访问控制。
- 角色在ranger管理系统中创建,可以赋给用户,用户组和其他角色。
- 角色与角色之间支持继承。
- 针对每个客体只能存在一条策略,该策略中可以包含多个访问条件,这么做的方法是为了防止策略冲突。
- 控制方法提供白名单,白名单排除名单,黑名单,黑名单排除名单,优先级依次增加。也就是说无论角色,用户,用户组中出现了显式禁止(即加入黑名单同时不在黑名单排除名单)的权限,那么用户就无法拥有这个权限(即禁止优先)。