Apache Ranger 是一个在hadoop平台上使用的组件,可以全面监控和管理数据的安全。有关Ranger的安装见我另一篇博客ranger的安装及问题解决。
Ranger-usersync用于同步linux的用户和用户组,在ranger上可以进行用户和用户组的权限控制。
针对HDFS文件系统,ranger提供: 三种权限:read,write,execute。 四种方式:白名单,白名单排除名单,黑名单,黑名单排除名单。 进行实验: 策略设置:
策略生效前:
策略生效: 如图,我们针对test这个文件夹设置了hadoop用户无法读写,执行文件。 可以看到,我们所有的操作都被拒绝了,访问策略生效。
通过实验:ranger可以对HDFS文件系统进行权限控制,验证先于HDFS文件系统,通过了ranger验证后还需通过HDFS文件权限验证才能访问文件。更加灵活。
相比于Apache Hive提供的SQL standard authorization。Ranger提供了更细粒度的访问控制,而不是停留在database和table层面的grant/revoke。在Ranger中用户可以在列层面上进行管理,也可以在策略的资源名称中使用通配符。 进行实验: 原表结构:
设置一个粒度到列的策略 不要忘记通过hiveserver2连接,直接用命令行登录策略无法生效
策略生效:
我们可以看到当我们的查询你涉及到没有权限的列时,我们的操作被拒绝,而对有权限的列操作时,我们可以正常查询。
列屏蔽提供的模式: 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中用户,用户组和角色的管理