Apache Ranger提供集中式的权限管理框架,支持对Hadoop生态中的多个组件进行细粒度的权限控制。本文介绍如何集成Ranger以及如何配置OSS-HDFS服务的访问权限。
集成Ranger
- 进入集群详情页面。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 启用OSS。
- 在左侧导航栏中,选择。
- 在RANGER服务页面,选择。
- 在执行集群操作对话框中,填写执行原因,单击确定。
- 在确认对话框,单击确定。
- 部署客户端配置。
- 在左侧导航栏中,选择。
- 在HDFS服务页面,单击配置,然后单击右上角的部署客户端配置。
- 在执行集群操作中,输入执行原因,单击确定。
- 在确认对话框中,单击确定。
您可以单击上方的查看操作历史,查看执行状态和进度。
- 重启Jindofsx Namespace Service。
- 在JindoData服务页面的右上角,选择。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在弹出的确认对话框中,单击确定。
- 重启HiveServer2。
- 在左侧导航栏中,选择。
- 在Hive服务页面的右上角,选择。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在弹出的确认对话框中,单击确定。
- 创建用户Principal。
- 通过SSH方式连接集群的emr-header-1节点,详情请参见登录集群。
- 执行如下命令,进入Kerberos的admin工具。
sudo sh /usr/lib/has-current/bin/admin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
- 执行如下命令,创建用户名为test的Principal。
本示例密码设置为123456。
sudo addprinc -pw 123456 test
说明 需要记录用户名和密码,在创建TGT时会用到。如果您不想记录用户名和密码,则可以执行下一步,将Principal的用户名和密码导入到keytab文件中。
- 可选:执行如下命令,生成keytab文件。
sudo ktadd -k /root/test.keytab test
执行quit
命令,可以退出Kerberos的admin工具。
- 创建TGT。
创建TGT的机器,可以是任意一台需要运行Hive Client的机器。
- 创建test用户。
- 执行以下命令,切换为test用户。
- 生成TGT。
- 方式一:使用用户名和密码方式,创建TGT。
- 执行
kinit
命令并回车。sudo kinit
Password for test@EMR.23****.COM:
- 输入test用户的密码123456。
- 方式二:使用keytab文件,创建TGT。
在
步骤6中的
test.keytab文件,已经保存在emr-header-1机器的
/root/目录下,需要先使用
cp /root/test.keytab /home/test/
命令拷贝到当前机器的
/home/test/目录下,再执行以下命令创建TGT。
sudo kinit -kt /home/test/test.keytab test
- 查看TGT。
使用
klist
命令,返回如下信息。
Ticket cache: FILE:/tmp/krb5cc_1012
Default principal: test@EMR.23****.COM
Valid starting Expires Service principal
07/24/2021 13:20:44 07/25/2021 13:20:44 krbtgt/EMR.23****.COM@EMR.23****.COM
renew until 07/25/2021 13:20:44
配置OSS-HDFS访问权限
配置test用户拥有访问oss://examplebucket/dir/目录的访问权限。
- 进入Ranger UI页面,详情请参见概述。
- 在Ranger UI页面,单击已有的emr-oss。
- 配置dir/目录的Execute权限。
- 单击右上角的Add New Policy。
- 在Edit Policy页面,配置下表参数。
参数 | 描述 |
---|
Policy Name | 策略名称,可以自定义。 |
Path | 填写为examplebucket/dir。 |
Select User | 指定添加此策略的用户。 本示例设置为test用户。 |
Permissions | 选择授予的权限。 本示例设置访问权限为Execute。 |
- 单击Add。
- 访问OSS-HDFS。
- 通过SSH方式连接集群的emr-header-1节点,详情请参见登录集群。
- 执行以下命令,切换为本文示例创建的test用户。
- 执行以下命令,访问OSS-HDFS服务。
sudo hadoop fs -ls oss://examplebucket/dir/
当您访问Ranger没有授权的路径时,提示以下错误信息。
org.apache.hadoop.security.AccessControlException: Permission denied: user=test, access=READ_EXECUTE, resourcePath="examplebucket/dir/"