更新时间:2026-08-15 GMT+08:00
分享

添加OBS文件的Ranger访问权限策略

操作场景

在MRS存算分离架构中,OBS(对象存储服务)作为数据湖存储组件,承载着HDFS、Hive等多个组件的数据。默认情况下,OBS通过IAM策略进行粗粒度的权限控制,无法满足不同用户对同一OBS目录的差异化访问需求——例如需要限制特定用户只能读取某些OBS目录、禁止写入敏感数据目录等。

Ranger管理员可以通过Ranger为OBS用户配置OBS目录或文件的读、写权限,实现OBS数据资源的细粒度权限管控。本文适用于Ranger管理员和需要配置OBS数据访问权限的运维人员。

本文包含以下内容:

  • 配置OBS文件访问权限策略:控制用户对OBS目录或文件的读写权限。
  • 配置OBS资源访问标签数量:调整Ranger访问OBS资源的标签数量上限。

在MRS集群中,Ranger通过Guardian服务实现对OBS访问的权限管控。Guardian作为OBS的认证代理和鉴权网关,当集群组件(如HDFS、Hive、Spark等)访问OBS数据时,Guardian Plugin会拦截访问请求并向RangerAdmin发起鉴权,RangerAdmin根据已配置的OBS权限策略判断是否允许访问。

约束与限制

  • 本章节仅适用于MRS 3.3.0-LTS及之后版本。
  • OBS权限策略仅支持用户组授权,配置“Select Role”和“Select User”将不会生效,请选择用户组。
  • 配置的OBS路径文件夹必须是已存在的,否则会授权失败。
  • OBS默认开启权限的递归(且不支持修改),无任何权限的子目录会默认继承父目录所有的权限。
  • Resource Path不支持使用通配符“*”。

前提条件

  • 集群中已安装Ranger服务且服务运行正常。
  • 集群中已创建需要配置权限的用户、用户组或Role,如果是新创建的用户,需等待用户自动同步至Ranger后才可以配置相关权限策略。
  • 集群中已安装Guardian服务且服务运行正常。

配置OBS文件访问权限策略

  1. 使用Ranger管理员用户登录Ranger WebUI页面,具体操作可参考登录Ranger WebUI界面
  2. 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
  3. 单击“Add New Policy”,添加OBS权限控制策略。
  4. 根据业务需求配置相关参数。

    表1 OBS权限参数

    参数名称

    描述

    Policy Name

    策略名称,可自定义,不能与本服务内其他策略名称重复。

    Policy Label

    为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。

    Resource Path

    资源路径,配置当前策略适用的OBS路径文件夹,可填写多个值,不支持使用通配符“*”。

    配置的OBS路径文件夹必须是已存在的,否则会授权失败。

    OBS默认开启权限的递归(且不支持修改),无任何权限的子目录会默认继承父目录所有的权限。

    Description

    策略描述信息。

    Audit Logging

    该策略命中时是否生成审计日志。

    • Yes:当用户触发该策略的权限校验时,无论校验结果是允许(Allow)还是拒绝(Deny),会生成一条审计日志。
    • No:当用户触发该策略的权限校验时,不会生成任何审计日志。

    Allow Conditions

    策略允许条件,配置本策略内允许的权限。

    “Select Group”列选择已创建好的需要授予权限的用户组(配置“Select Role”和“Select User”将不会生效)。

    单击“Add Permissions”,添加对应权限。

    • Read:读权限
    • Write:写权限
    • Select/Deselect All:全选/取消全选

    如需添加多条权限控制规则,可单击按钮添加。如需删除权限控制规则,可单击按钮删除。

    例如,为用户组“hs_group1”(该用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败)添加“obs://hs-test/user/hive/warehouse/o4”表的读写权限,配置如下:

    图1 OBS目录权限配置示例

  5. 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。

    如果不再使用策略,可单击按钮删除策略。

    验证方法:

    以被授权用户组中的用户登录客户端,执行以下命令验证OBS路径的读写权限是否生效:

    1. 执行以下命令验证读权限,能正常列出目录内容说明读权限已生效。
      hdfs dfs -ls obs://OBS路径/
    2. 执行以下命令验证写权限,能成功创建文件说明写权限已生效。
      hdfs dfs -touchz obs://OBS路径/testfile

配置Ranger访问OBS资源的标签数量

安装MRS 3.3.0-LTS.1.2补丁后,可以通过配置Ranger的参数“obs.max.access.label”设置访问OBS资源的标签数量。

当用户的并发OBS访问请求较多(如同时执行多个Spark作业读取OBS数据),默认的512个标签可能不足,导致访问请求被阻塞。此时需要调大标签数量上限。

  1. 登录FusionInsight Manager系统。

    详细操作请参考访问集群Manager

  2. 选择“集群 > 服务 > Ranger > 配置 > 全部配置 > RangerAdmin(角色) > 自定义”。
  3. 在参数“ranger.admin.config.expandor”中添加如下自定义配置“obs.max.access.label”值为“1024”。

    配置“obs.max.access.label”值默认为“512”,用户可以根据实际业务需求配置。标签数量设置过大会增加RangerAdmin的内存消耗,建议根据实际并发量合理设置,不宜过大。

  4. 单击“保存”,保存配置。
  5. 在Ranger服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。

    组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。

相关文档

常见问题

Q:OBS权限策略配置后多久生效?

A:Ranger策略修改后,Guardian Plugin默认每30秒自动拉取一次最新策略,因此策略配置后大约30秒内生效,无需重启服务。如需立即生效,可重启Guardian服务。

Q:配置OBS权限策略后用户仍无法访问OBS路径怎么办?

A:请按以下步骤排查:

  1. 确认配置的Resource Path对应的OBS目录已存在;
  2. 确认用户所在的用户组已在“Select Group”中正确选择;
  3. 确认用户组名称符合命名规则;
  4. 确认Guardian服务运行正常;
  5. 查看RangerAdmin审计日志确认鉴权结果。

Q:OBS权限策略中Resource Path能否使用通配符?

A:不支持。Resource Path必须填写具体的OBS目录路径,不能使用「*」通配符。如需对多个目录授权,可在Resource Path中填写多个值,或通过子目录继承父目录权限的方式实现批量授权。

Q:默认标签数量512不够用,设置多大合适?

A:标签数量应根据集群并发OBS访问量设置。一般建议按照「集群最大并发作业数 × 每个作业平均访问的OBS路径数」估算,并预留20%余量。

例如50个并发作业每个访问10个OBS路径,则建议设置为600(50×10×1.2)。设置过大会增加RangerAdmin内存消耗,建议逐步调整并观察内存使用情况。

相关文档