添加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文件访问权限策略
- 使用Ranger管理员用户登录Ranger WebUI页面,具体操作可参考登录Ranger WebUI界面。
- 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
- 单击“Add New Policy”,添加OBS权限控制策略。
- 根据业务需求配置相关参数。
表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目录权限配置示例
- 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。
如果不再使用策略,可单击
按钮删除策略。验证方法:
以被授权用户组中的用户登录客户端,执行以下命令验证OBS路径的读写权限是否生效:
- 执行以下命令验证读权限,能正常列出目录内容说明读权限已生效。
hdfs dfs -ls obs://OBS路径/ - 执行以下命令验证写权限,能成功创建文件说明写权限已生效。
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个标签可能不足,导致访问请求被阻塞。此时需要调大标签数量上限。
- 登录FusionInsight Manager系统。
详细操作请参考访问集群Manager。
- 选择“集群 > 服务 > Ranger > 配置 > 全部配置 > RangerAdmin(角色) > 自定义”。
- 在参数“ranger.admin.config.expandor”中添加如下自定义配置“obs.max.access.label”值为“1024”。
配置“obs.max.access.label”值默认为“512”,用户可以根据实际业务需求配置。标签数量设置过大会增加RangerAdmin的内存消耗,建议根据实际并发量合理设置,不宜过大。
- 单击“保存”,保存配置。
- 在Ranger服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。
组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。
相关文档
- 配置Ranger策略时,不同条件的优先级可参考Ranger权限策略条件判断优先级。
- 如需查看Ranger中的相关权限设置对象信息,例如用户、用户组、Role,可参考查看Ranger用户权限同步信息。
- MRS集群中新用户可在Manager中进行创建,可参考创建MRS集群用户。
常见问题
Q:OBS权限策略配置后多久生效?
A:Ranger策略修改后,Guardian Plugin默认每30秒自动拉取一次最新策略,因此策略配置后大约30秒内生效,无需重启服务。如需立即生效,可重启Guardian服务。
Q:配置OBS权限策略后用户仍无法访问OBS路径怎么办?
A:请按以下步骤排查:
- 确认配置的Resource Path对应的OBS目录已存在;
- 确认用户所在的用户组已在“Select Group”中正确选择;
- 确认用户组名称符合命名规则;
- 确认Guardian服务运行正常;
- 查看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内存消耗,建议逐步调整并观察内存使用情况。