Apache Ranger控制功能#
Apache Ranger 是一个在hadoop平台上使用的组件,可以全面监控和管理数据的安全。有关Ranger的安装见我另一篇博客ranger的安装及问题解决。
Apache Ranger目前支持的组件如下
Ranger-usersync用于同步linux的用户和用户组,在ranger上可以进行用户和用户组的权限控制。
Ranger-HDFS:
针对HDFS文件系统,ranger提供:
三种权限:read,write,execute。
四种方式:白名单,白名单排除名单,黑名单,黑名单排除名单。
进行实验:
策略设置:
策略生效前:
策略生效:
如图,我们针对test这个文件夹设置了hadoop用户无法读写,执行文件。
可以看到,我们所有的操作都被拒绝了,访问策略生效。
通过实验:ranger可以对HDFS文件系统进行权限控制,验证先于HDFS文件系统,通过了ranger验证后还需通过HDFS文件权限验证才能访问文件。更加灵活。
hive_27">Ranger-hive
相比于Apache Hive提供的SQL standard authorization。Ranger提供了更细粒度的访问控制,而不是停留在database和table层面的grant/revoke。在Ranger中用户可以在列层面上进行管理,也可以在策略的资源名称中使用通配符。
进行实验:
原表结构:
设置一个粒度到列的策略
不要忘记通过hiveserver2连接,直接用命令行登录策略无法生效
策略生效:
我们可以看到当我们的查询你涉及到没有权限的列时,我们的操作被拒绝,而对有权限的列操作时,我们可以正常查询。
同时ranger提供了两种脱敏查询:列屏蔽和行过滤:
列屏蔽:
列屏蔽提供的模式:
Redact策略:用x屏蔽所有字母字符,用n屏蔽所有数字字符。
Partial mask: show last 4 策略 - 仅显示最后四个字符,其他用x代替。
Partial mask: show first 4 策略- 仅显示前四个字符,其他用x代替。
Hash策略:用值的哈希值替换原值。
Nullify策略:用NULL值替换原值。
Unmasked (retain original value)策略 - 原样显示。
Date: show only year策略 – 仅显示日期字符串的年份部分,并将月份和日期默认为01/01。
Custom策略 – 可使用任何有效Hive UDF(返回与被屏蔽的列中的数据类型相同的数据类型)来自定义策略。
进行实验:
如图。我们屏蔽了age列和class列,屏蔽方案用null表示。
结果
可以看到我们可以正常查询所有,不过被屏蔽的列都用null来表示了。
行过滤模式:
进行实验:
如图。我们将过滤条件设置为class<3,那么最后的结果只会显示class为1和2的记录。这样就能把敏感数据进行过滤。
结果
注意:不能以被屏蔽的列或者没有权限查看的列作为过滤条件,这样是无法正确过滤的。
最新的ranger能很方便地管理用户,用户组,同时新版本的ranger还引入了RBAC模型,具备了角色的概念,具体的管理方式见这篇博客。
Ranger中用户,用户组和角色的管理