Apache Ranger作为集中式权限管理框架,允许对Hadoop生态系统中的多个组件实施细粒度访问控制。本文介绍如何配置阿里云OSS或OSS-HDFS开启Ranger权限控制。
前提条件
已创建EMR-5.15.0及之后版本,或者EMR-3.49.0及之后版本的DataLake或Custom集群,开启了Kerberos身份认证,并且选择了Ranger和Ranger-plugin服务,创建集群详情请参见创建集群。
开启Kerberos认证后,无法关闭此功能,因此请谨慎选择。在启用Kerberos后,集群内所有大数据组件的服务均需经过Kerberos认证,提交至集群的大数据作业也将首先进行身份认证。有关Kerberos的详细信息,请参见Kerberos概述。
使用限制
该功能支持的集群版本如下:
EMR-5.15.0及后续版本
EMR-3.49.0及后续版本
OSS/OSS-HDFS集成Ranger
进入集群服务页面。
在EMR on ECS页面,单击目标集群操作列的集群服务。
Ranger启用OSS/OSS-HDFS。
在集群服务页面,单击Ranger-plugin服务区域的状态。
在服务概述区域,打开enableOSS开关。
在弹出的对话框中,单击确定。
部署客户端配置。
在集群服务页面,选择
。单击配置页签。
单击部署客户端配置。
在弹出的对话框中,输入执行原因,单击确定。
在确认对话框中,单击确定。
重启HiveServer2。
在集群服务页面,选择
。单击状态页签。
在组件列表区域,单击HiveServer操作列的重启。
在弹出的对话框中,输入执行原因,单击确定。
在确认对话框中,单击确定。
创建Principal。
通过SSH方式以root用户身份连接到集群的Master节点,详情请参见登录集群。
执行如下命令,进入Kerberos admin工具。
kadmin.local
执行如下命令,创建名为test的Principal。
本示例密码设置为123456。
addprinc -pw 123456 test
说明需要记录名称和密码,在创建TGT时会用到。如果希望避免手动输入名称和密码,则可以执行以下命令,将Principal的认证信息导出至keytab文件中。
ktadd -k /root/test.keytab test
执行
quit
命令,退出Kerberos admin工具。
创建TGT。
使用root用户执行以下命令,创建test用户。
useradd test
执行以下命令,切换为test用户。
su - test
生成TGT。
方式一:使用用户名和密码方式。
执行
kinit
命令,回车后输入test的密码123456。方式二:使用keytab文件。
test.keytab文件已经保存在Master节点的/root/目录下,需要先使用
cp /root/test.keytab /home/test/
命令拷贝到当前机器的/home/test/
目录下,再执行以下命令创建TGT。kinit -kt /home/test/test.keytab test
(可选)查看TGT。
使用
klist
命令,返回如下信息。Ticket cache: FILE:/tmp/krb5cc_1025 Default principal: test@EMR.C-24DF259BB32****.COM Valid starting Expires Service principal 08/29/2024 18:19:14 08/30/2024 18:19:14 krbtgt/EMR.C-24DF259BB32****.COM@EMR.C-24DF259BB32****.COM renew until 09/05/2024 18:19:14
权限配置示例
本文以EMR-5.17.1版本操作为例,授予test用户指定路径的访问权限,其余版本请以实际界面为准。
进入Ranger UI页面,详情请参见访问Ranger UI。
在Ranger UI页面,单击配置好的emr-oss。
创建新策略。
单击右上角的Add New Policy。
在Create Policy页面,根据您的实际需求配置相关参数。
参数
描述
Policy Name
策略名称,可以自定义。
Resource Path
OSS或OSS-HDFS的路径。路径无需oss://前缀,格式为
<bucketname>/<path>
。例如,本示例为bucket-test/user
。重要路径末尾无需带正斜线(/)。
禁止关闭recursive开关。
recursive
子目录或文件是否集成权限。
Select User
指定添加此策略的用户。本示例设置为test用户。
Permissions
选择授予的权限。
本示例设置访问权限为ALL(Read、Write和Execute)。
单击Add。
添加Policy后,实现了对test用户的授权。test用户对配置的路径拥有了Read、Write和Execute权限。
说明添加、删除或修改Policy后,需要等待约一分钟至授权生效。
访问OSS或OSS-HDFS。
通过SSH方式连接集群的Master节点,详情请参见登录集群。
执行以下命令,切换为本文示例创建的test用户。
su - test
执行以下命令,访问OSS或OSS-HDFS目录。
访问OSS目录。
hadoop fs -ls oss://bucket-test/user
访问OSS-HDFS目录。
hadoop fs -ls oss://bucket-test.cn-hangzhou.oss-dls.aliyuncs.com/user
如果您访问Ranger未授权的路径,将会提示以下错误信息。
org.apache.hadoop.security.AccessControlException: Permission denied: user=test, access=READ_EXECUTE, resourcePath="bucket-test/"