我正在参加「掘金·启航计划」。
背景
需要使用ranger管理hdfs权限,毕竟ranger管理yarn队列写了,这个也写一下吧。
目的
Hadoop集群的数据大部分保存在分布式文件存储系统HDFS中,要保证多租户的数据访问安全就需要对HDFS文件夹、文件的访问权限进行控制。例如,HDFS文件夹/user1下的内容需要对用户1并且只能对用户1开放,这种情况下一般可以使用HDFS自身的权限管理“hdfs dfs -chmod”进行权限即可。在OCDP中,由于引入了Ranger作为集中式安全管理,可以通过配置Ranger对HDFS的访问权限进行管理。
配置
Ranger对于HDFS权限管理有两个层次:
· 首先由Ranger对文件夹、文件的访问权限进行权限验证,如果验证通过,如果则可以访问
· 如果Ranger验证失败,则继续验证HDFS本身的文件访问权限(rwx)。
如果HDFS配置xasecure.add-hadoop-authorization为false,则只由Ranger进行鉴权,不会由HDFS本身的鉴权机制进行rwx的权限验证。
多租户数据访问控制的配置方法为:
a. 在Ambari中打开Ranger配置界面(Ranger->Configs->Advanced->HDFS Ranger Plugin),打开HDSF Ranger Plugin。保存配置并重启受影响的组件。
图1 配置HDFS Ranger Plugin
b. 打开Ranger界面,在Access Manager->Resource Based Policies下,选择HDFS->OCDP_hadoop,创建新策略(Add New Policy)。配置策略名,输入需要设定访问控制的文件或文件夹,在用户和用户组权限中选择用户,或者组,并赋予相应的权限,如下图所示。
图2 Ranger新增HDFS访问权限策略
c. 设置HDFS文件夹权限,建议将由Ranger管理的文件访问权限在HDFS中配为000,即由Ranger负责访问权限鉴权,如果鉴权失败,HDFS本身的鉴权由于权限是000,也会失败。这样就集中的管理了HDFS的访问权限。例如本例的HDFS文件夹/apps/hive,设置该文件夹访问权限为000,如下图所示。
图3 配置HDFS访问权限为000
d. 本步骤为可选。如果需要只由Ranger负责访问权限控制,即如果Ranger鉴权失败即返回没有权限,还可以配置xasecure.add-hadoop-authorization为false。配置方法为:在Ambari中打开HDFS配置界面(HDFS->Configs->Advanced->Advanced ranger-hdfs-security),配置属性xasecure.add-hadoop-authorization为false。如下图所示:
图4 禁用HDFS自身文件访问控制
按照上述配置完成后,即由Ranger实现了多租户对HDFS的访问控制。