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

更新时间:
复制为 MD 格式

Apache Ranger作为集中式权限管理框架,允许对Hadoop生态系统中的多个组件实施细粒度访问控制。本文介绍如何配置阿里云OSSOSS-HDFS开启Ranger权限控制。

前提条件

已创建EMR-5.15.0及之后版本,或者EMR-3.49.0及之后版本的EMR集群,并且选择了RangerRanger-plugin服务,创建集群详情请参见创建集群

使用限制

该功能支持的集群版本如下:

  • 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. 确认对话框中,单击确定

说明

除 HiveServer2 外,其他常驻组件如Spark ThriftServer、KyuubiServer、TrinoMaster等都需要重启生效。

权限配置示例

本文以EMR-5.17.1版本操作为例,授予test用户指定路径的访问权限,其余版本请以实际界面为准。

创建用户

  • 普通集群

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

    • 执行 useradd test 命令创建test用户。

  • 高安全集群(开启Kerberos):

    • 创建Principal。

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

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

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

        本示例密码设置为123456。

        addprinc -pw 123456 test
      4. 执行quit命令,退出Kerberos admin工具。

    • 创建TGT。

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

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

        su - test
      3. 生成TGT。

        执行kinit命令,回车后输入test的密码123456。

      4. (可选)查看TGT。

        使用klist命令,返回如下信息。

        Ticket cache: FILE:/tmp/krb5cc_1025
        Default principal: test@EMR.C-24DF259BB32****.COM
        
        Valid starting       Expires              Service principal
        01/04/2026 10:13:45  01/05/2026 10:13:45  krbtgt/EMR.C-24DF259BB32****.COM@EMR.C-24DF259BB32****.COM
                renew until 01/11/2026 10:13:45

配置权限

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

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

    image

  3. 创建新策略。

    1. 单击右上角的Add New Policy

    2. Create Policy页面,根据您的实际需求配置相关参数。

      参数

      描述

      Policy Name

      策略名称,可以自定义。

      Resource Path

      OSSOSS-HDFS的路径。路径无需oss://前缀,格式为<bucketname>/<path>。例如,本示例为bucket-test/user

      重要
      • 路径末尾无需带正斜线(/)。

      • 禁止关闭recursive开关。

      recursive

      子目录或文件是否集成权限。

      Select User

      指定添加此策略的用户。本示例设置为test用户。

      Permissions

      选择授予的权限。

      本示例设置访问权限为ALL(Read、WriteExecute)。

    3. 单击Add

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

      说明

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

  4. 访问OSSOSS-HDFS。

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

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

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