如何使用Ranger给HDFS授权

多级授权验证,首先创建两个本地测试用户,testuser1 、testuser2,并且在Ranger 页面创建Ranger 登录用户关联组(ldap 用户无需进行该操作即可使用用户密码登录)

如何使用Ranger给HDFS授权 第1张

登录Ranger,可以看到User Source 时External。由于本地Linux 用户默认无法同步密码,需在Settings Users 中将默认同步的Linux 删除,然后手动关联组重建。

如何使用Ranger给HDFS授权 第2张

点击右上角的红色删除按钮删除后,然后点击Add New User 。进行如下操作,密码至少为包含英文和字母的8个字母,选择角色为User,并且选择关联组分别为testuser1、和testuser2。testuser2 步骤基本一致,省略。

如何使用Ranger给HDFS授权 第3张

手动创建好后用户显示如下,User Source 显示为Internal在当前登录时可以看到组件的权限策略,但是不能添加任何策略,如果尝试添加策略时保存会提示如下错误

如何使用Ranger给HDFS授权 第4张

如何使用Ranger给HDFS授权 第5张

当前testuser1和testuser2 均无hdfs 中 /test 目录的写权限

如何使用Ranger给HDFS授权 第6张

然后通过Ranger admin 用户给testuser1 /test 目录all 权限,并委派admin权限,也就是勾选Delegate Admin,再由testuser1 给testuser2 授权进行验证。

如何使用Ranger给HDFS授权 第7张

验证testuser1 权限,并创建接下来要验证的权限的目录,为了避免HDFS 本身的权限干扰,这里将所有的目录权限设置为700

如何使用Ranger给HDFS授权 第8张

如何使用Ranger给HDFS授权 第9张

Allow Conditions策略设置以及验证

如何使用Ranger给HDFS授权 第10张

具体策略设置如下:

如何使用Ranger给HDFS授权 第11张

验证如下:

如何使用Ranger给HDFS授权 第12张

Exclude from Allow Conditions 策略验证,这里由于/test/Exclude 目录本身testuser2 是没有读写权限的,所以在Allow Conditions中给了所有权限,但是在Exclude from Allow Conditions 排除了读权限,在这种情况下,testuser2 权限是有写的权限但是没有读的权限,也证实了Exclude from Allow Conditions策略已生效以及拒绝策略优先的设计逻辑:

如何使用Ranger给HDFS授权 第13张

Deny 策略验证,这里与Exclude from Allow 策略有些类似,/test/Deny 目录本身testuser2没有任何权限,在Allow Conditions 中给了所有权限用于验证,在Deny Conditions中设置拒绝读权限。同样证实Deny 策略已生效以及拒绝策略优先的设计逻辑

如何使用Ranger给HDFS授权 第14张

设置验证testuser2 Deny Conditions策略生效,并切换testuser1 用户验证非Deny Conditions 的策略

如何使用Ranger给HDFS授权 第15张

Exclude from  Deny Conditions策略验证,同样/test/ExcludeDeny 由于testuser2用户没有任何权限,在Allow Conditions 中给了该目录的所有权限,然后在Deny Conditions和

Exclude from Deny Conditions 设置如下。其结果与Deny Conditions策略一致

如何使用Ranger给HDFS授权 第16张

设置验证testuser2 Exclude from  Deny Conditions策略生效,由于排除了Deny Conditions 的设置,所以可以正常读。

如何使用Ranger给HDFS授权 第17张

如果在Exclude from  Deny Conditions取消排除Read 的权限,则可写而不可读,如下设置

如何使用Ranger给HDFS授权 第18张

如何使用Ranger给HDFS授权 第19张

关于如何使用Ranger给HDFS授权就分享到这里了,希望