数据治理(十六):Ranger管理HDFS安全

2022-09-11 02:17:27 浏览数 (1)

​Ranger管理HDFS安全

我们还可以使用Ranger对HDFS进行目录权限访问控制。这里需要添加“HDFS-Plugin”插件。

一、安装“HDFS-Plugin”插件

安装“HDFS-Plugin”插件步骤如下:

1)将编译好的“ranger-2.1.0-hdfs-plugin.tar.gz”发送到node1节点,并解压

代码语言:javascript复制
#将node3上编译好的HDFS插件发送到node1上
[root@node3 ~]# cd /software/apache-ranger-2.1.0/target
[root@node3 target]# scp ./ranger-2.1.0-hdfs-plugin.tar.gz node1:/software/

#登录node1,解压
[root@node1 ~]# cd /software/
[root@node1 software]# tar -zxvf ./ranger-2.1.0-hdfs-plugin.tar.gz 

2)配置“install.properties”文件

代码语言:javascript复制
#配置Ranger-Admin访问地址
POLICY_MGR_URL=http://node1:6080

#配置HDFS仓库,用于Ranger页面配置
REPOSITORY_NAME=hdfs_repo

#配置HDFS安装目录
COMPONENT_INSTALL_DIR_NAME=/software/hadoop-3.1.4/

#配置操作HDFS插件的用户和所属组
CUSTOM_USER=root
CUSTOM_GROUP=root

3)执行“enable-hdfs-plugin.sh”开启“HDFS Plugin”

代码语言:javascript复制
[root@node1 ~]# cd /software/ranger-2.1.0-hdfs-plugin
[root@node1 ranger-2.1.0-hdfs-plugin]# enable-hdfs-plugin.sh

4)开启HDFS权限验证

配置HDFS的“/software/hadoop-3.1.4/etc/hadoop/hdfs-site.xml”文件,在每台HDFS节点上配置:

代码语言:javascript复制
<property>
    <!-- 启用权限 -->
    <name>dfs.permissions.enabled</name>
    <value>true</value>
</property>
<property>
    <!-- 开启ACL -->
    <name>dfs.namenode.acls.enabled</name>
    <value>true</value>
</property>
<property>
   <!-- 文件操作时,检查权限 -->
	<name>dfs.permissions</name>
	<value>true</value>
</property>
<!-- 以下两项是关于Ranger安全检查配置 -->
<property>
	<name>dfs.namenode.inode.attributes.provider.class</name>
	<value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value>
</property>
<property>
	<name>dfs.permissions.ContentSummary.subAccess</name>
	<value>true</value>
</property>

5)重启HDFS

代码语言:javascript复制
[root@node1 ~]# stop-all.sh
[root@node1 ~]# start-all.sh

二、验证HDFS权限控制

1)在Ranger中添加“HDFS Service”服务

配置好之后:

2)在HDFS中创建测试目录

代码语言:javascript复制
#在node1节点上创建HDFS目录
[root@node1 ~]# hdfs dfs -mkdir /rangertest

代码语言:javascript复制
#向HDFS此目录下上传一个有内容的txt文件:
[root@node1 ~]# hdfs dfs -put ./data.txt /rangertest

3)测试用户“user1”读取“rangertest”数据和上传文件

在node1中切换用户user1,读取HDFS中的数据,有只读权限

代码语言:javascript复制
[root@node1 ~]# su user1
[user1@node1 root]$ hdfs dfs -cat /rangertest/data.txt

代码语言:javascript复制
#使用user1用户上传数据文件到HDFS“/rangertest/”下,没有操作权限
[user1@node1 ~]$ hdfs dfs -put ./user2data.txt /rangertest
put: Permission denied: user=user1, access=WRITE, inode="/rangertest":root:supergroup:drwxr-xr-x

4)使用Ranger 控制user1可以操作HDFS“/rangertest”目录

5)再次使用“user1”向HDFS目录“/rangertest”中上传数据

再次执行,权限通过,通过Ranger已经可以对HDFS进行权限管理。

代码语言:javascript复制
[user1@node1 ~]$ hdfs dfs -put ./user2data.txt /rangertest
[user1@node1 ~]$ hdfs dfs -cat /rangertest/user2data.txt
hello a
hello b
hello c

0 人点赞