配置OSS/OSS-HDFS开启Ranger权限控制

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

  1. 进入集群服务页面。

    1. 登录E-MapReduce控制台

    2. 在EMR on ECS页面,单击目标集群操作列的集群服务

  2. Ranger启用OSS/OSS-HDFS。

    1. 集群服务页面,单击Ranger-plugin服务区域的状态

    2. 服务概述区域,打开enableOSS开关。

    3. 在弹出的对话框中,单击确定

  3. 部署客户端配置。

    1. 集群服务页面,选择more > HADOOP-COMMON

    2. 单击配置页签。

    3. 单击部署客户端配置

    4. 在弹出的对话框中,输入执行原因,单击确定

    5. 确认对话框中,单击确定

  4. 重启HiveServer2。

    1. 集群服务页面,选择more > Hive

    2. 单击状态页签。

    3. 组件列表区域,单击HiveServer操作列的重启

    4. 在弹出的对话框中,输入执行原因,单击确定

    5. 确认对话框中,单击确定

  5. 创建Principal。

    1. 通过SSH方式以root用户身份连接到集群的Master节点,详情请参见登录集群

    2. 执行如下命令,进入Kerberos admin工具。

      kadmin.local
    3. 执行如下命令,创建名为test的Principal。

      本示例密码设置为123456。

      addprinc -pw 123456 test
      说明

      需要记录名称和密码,在创建TGT时会用到。如果希望避免手动输入名称和密码,则可以执行以下命令,将Principal的认证信息导出至keytab文件中。

      ktadd -k /root/test.keytab test
    4. 执行quit命令,退出Kerberos admin工具。

  6. 创建TGT。

    1. 使用root用户执行以下命令,创建test用户。

      useradd test
    2. 执行以下命令,切换为test用户。

      su - test
    3. 生成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
    4. (可选)查看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用户指定路径的访问权限,其余版本请以实际界面为准。

  1. 进入Ranger UI页面,详情请参见访问Ranger UI

  2. 在Ranger UI页面,单击配置好的emr-oss

    image

  3. 创建新策略。

    1. 单击右上角的Add New Policy

    2. 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)。

    3. 单击Add

      添加Policy后,实现了对test用户的授权。test用户对配置的路径拥有了Read、Write和Execute权限。

      说明

      添加、删除或修改Policy后,需要等待约一分钟至授权生效。

  4. 访问OSS或OSS-HDFS。

    1. 通过SSH方式连接集群的Master节点,详情请参见登录集群

    2. 执行以下命令,切换为本文示例创建的test用户。

      su - test
    3. 执行以下命令,访问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/"