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/"
 
 
 > HADOOP-COMMON
 > HADOOP-COMMON