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

添加Hive的Ranger访问权限策略

操作场景

在企业大数据平台中,Hive作为核心的数据仓库工具,承载着数据存储、查询与分析等关键业务,不同角色的用户需基于业务需求访问Hive中的不同库表资源。

Ranger作为大数据生态的权限管理框架,可通过WebUI直观配置Hive用户的权限策略。本文档将指导您在Ranger WebUI中完成Hive用户相关权限配置策略的添加操作,助力实现Hive资源的精细化权限管控,兼顾业务安全性与可用性。

实际业务场景中,如果表数据中包含有敏感数据,仅通过基础权限管控限制用户对库表的访问权限,无法满足敏感信息防护的精细化需求,Ranger支持的Hive数据脱敏(Data Masking)功能,该功能能对用户执行select操作的返回结果进行针对性处理,按需屏蔽敏感信息。

另外如果仅依靠库表级别的基础权限管控难以满足精细化数据隔离需求,例如为用户开放整张表的select权限,可能导致其获取非职责范围内的敏感数据,引发数据泄露风险;若仅开放部分表的权限,又会因数据分散存储导致用户查询效率低下。Ranger支持行级别数据过滤功能,可以在用户对Hive数据表执行select操作时,根据预设规则筛选返回符合权限的行数据,屏蔽非授权信息。

前提条件

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

添加Hive权限策略

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

    表1 Hive权限参数

    参数名称

    描述

    Policy Name

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

    Policy Conditions

    IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。

    Policy Label

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

    database

    将适用该策略的列Hive数据库名称。

    “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。

    table

    将适用该策略的Hive表名称。

    如果需要添加基于UDF的策略,可切换为UDF,然后输入UDF的名称。

    “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。

    说明:

    对于MRS 3.6.0-LTS及之后版本,视图授权操作的权限要求,与 Hive服务端“hive.cbo.enable”参数的配置值相关。

    • 当hive.cbo.enable = true时:
      • 基于普通表创建的视图,需同时授予用户视图权限和表路径权限。
      • 基于分区表创建的视图,需同时授予用户视图权限、表路径权限和分区表权限。
    • 当hive.cbo.enable = false时:

      无论视图基于普通表还是分区表创建,仅需授予用户视图权限和表路径权限。

    Hive Column

    将适用该策略的列名,填写*时表示所有列。

    “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。

    Description

    策略描述信息。

    Audit Logging

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

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

    Allow Conditions

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

    在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的Role、用户组或用户,单击“Add Conditions”,添加策略适用的IP地址范围,然后再单击“Add Permissions”,添加对应权限。

    • select:查询权限
    • update:更新权限
    • Create:创建权限
    • Drop:drop操作权限
    • Alter:alter操作权限
    • Index:索引操作权限
    • All:所有执行权限
    • Read:可读权限
    • Write:可写权限
    • Temporary UDF Admin:临时UDF管理权限
    • Select/Deselect All:全选/取消全选

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

    如需当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”,这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略,它还可以基于原始策略创建子策略。

    Deny Conditions

    策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类似。

    表2 常见权限配置场景

    任务场景

    角色授权操作

    role admin操作

    1. 在首页中单击“Settings”,选择“Roles”。
    2. 单击Role Name为admin的角色,在“Users”区域,单击“Select User”,选择对应用户名。
    3. 单击Add Users按钮,在对应用户名所在行勾选“Is Role Admin”,单击“Save”保存配置。

    Ranger页面的“Settings”选项只有rangeradmin用户有权限访问,用户绑定Hive管理员角色后,在每个维护操作会话中,还需要执行以下操作

    1. 以客户端安装用户,登录安装Hive客户端的节点。
    2. 执行以下命令配置环境变量。
      source 客户端安装目录/bigdata_env
    3. 执行以下命令认证用户。
      kinit Hive业务用户
    4. 执行以下命令登录客户端工具。
      beeline
    5. 执行以下命令更新用户的管理员权限。
      set role admin;

    创建库表操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库(如果是创建表则在“table”右侧填写或选择对应的表),在“column”右侧填写或选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“Create”。

    删除库表操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库(如果是删除表则在“table”右侧填写或选择对应的表),在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“Drop”。

    查询操作(select、desc、show)

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库(如果是表则在“table”右侧填写或选择对应的表),在“column”右侧填写并选择对应的列(*代表所有列)。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“select”。

    Alter操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写并选择对应的数据库(如果是表则在“table”右侧填写或选择对应的表),在“column”右侧填写或选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“Alter”。

    LOAD操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择对应的表,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“update”。

    INSERT、DELETE操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择对应的表,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“update”。
    5. 用户还需要具有Yarn任务队列的“submit”权限,权限配置参考添加Yarn的Ranger访问权限策略

    Import/Export操作

    该场景仅适用于MRS 3.2.0及之后版本。

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择对应的表,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“select”。

    Repl Dump/Load操作

    该场景仅适用于MRS 3.2.0及之后版本。

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择“*”,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“ReplAdmin”。

    GRANT、REVOKE操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择对应的表,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 勾选“Delegate Admin”。

    ADD JAR操作

    1. 在“Policy Name”填写策略名称。
    2. 单击“database”并在下拉菜单中选择“global”。在“global”右侧填写或选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,勾选“Temporary UDF Admin”。

    UDF操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,“udf”右侧填写对应的udf函数名。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,根据需求,给用户勾选相应权限(udf支持Create、select、Drop)。

    VIEW操作

    1. 在“Policy Name”填写策略名称。
    2. “database”右侧填写或选择对应的数据库,在“table”右侧填写或选择对应的VIEW名称,在“column”右侧填写并选择“*”。
    3. 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。
    4. 单击“Add Permissions”,参照表格上述相关操作,根据需求,给用户勾选相应权限。

    dfs命令操作

    执行set role admin操作才可使用。

    其他用户库表操作

    1. 参照表格上述相关操作添加对应权限。
    2. 给用户添加其他用户库表的HDFS路径的读、写、执行权限,详情请参考添加HDFS的Ranger访问权限策略
    • 如果用户在执行命令时指定了HDFS路径,需要给该用户添加HDFS路径的读、写、执行权限,详情请参考添加HDFS的Ranger访问权限策略。也可以不配置HDFS的Ranger策略,通过之前Hive权限插件的方式,给角色添加权限,然后把角色赋予对应用户。如果HDFS Ranger策略可以匹配到Hive库表的文件或目录权限,则优先使用HDFS Ranger策略。
    • MRS 3.3.0及之后版本,如果已参考配置Hive表级联授权功能章节开启了Hive表的级联授权功能,则无需对表所在的HDFS路径进行授权操作。
    • Ranger策略中的URL策略是Hive表存储在OBS上的场景涉及,URL填写对象在OBS上的完整路径。与URL联合使用的Read,Write权限,其他场景不涉及URL策略。
    • Ranger策略中global策略仅用于和Temprorary UDF Admin权限联合使用,控制UDF包的上传。
    • Ranger策略中的hiveservice策略仅用于和Service Admin权限联合使用,用于控制命令:kill query <queryId> 结束正在执行的任务的权限。
    • lock、index、refresh、replAdmin权限暂不支持。
    • 使用show grant命令查看表权限,表owner的grantor列统一显示为hive用户,其他用户Ranger页面赋权或后台采用grant命令赋权,则grantor显示为对应用户;如果用户需要查看之前Hive权限插件的结果,可设置hive-ext.ranger.previous.privileges.enable为true后采用show grant查看。

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

    如需禁用某条策略,可单击按钮编辑策略,设置策略开关为“Disabled”。

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

配置Hive数据脱敏

  1. 登录Ranger WebUI界面,在首页中单击“HADOOP SQL”区域的“Hive”

  2. 在“Masking”页签单击“Add New Policy”,添加Hive权限控制策略。

  3. 根据业务需求配置相关参数。

    表3 Hive数据脱敏参数

    参数名称

    描述

    Policy Name

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

    Policy Conditions

    IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。

    Policy Label

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

    Hive Database

    • MRS 3.3.0之前版本,配置当前策略适用的Hive中数据库名称。
    • MRS 3.3.0及之后版本,配置当前策略适用的Hive中数据库名称,支持设置多个数据库名,并且填写支持“*”通配符,例如:aa、a*、*b、a*b或者*。

    Hive Table

    • MRS 3.3.0之前版本,配置当前策略适用的Hive中的表名称。
    • MRS 3.3.0及之后版本,配置当前策略适用的Hive中的表名称,支持设置多个表名,并且填写支持“*”通配符,例如:aa、a*、*b、a*b或者*。

    Hive Column

    • MRS 3.3.0之前版本,可添加列名。
    • MRS 3.3.0及之后版本,可添加列名,支持设置多个列名,并且填写支持“*”通配符,例如:aa、a*、*b、a*b或者*。

    Description

    策略描述信息。

    Audit Logging

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

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

    Transfer Mask

    开启动态脱敏时该策略是否自动传递。配置Hive动态脱敏请参考配置Hive动态脱敏

    Mask Conditions

    在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的对象,单击“Add Conditions”,添加策略适用的IP地址范围,然后再单击“Add Permissions”,勾选“select”权限。

    单击“Select Masking Option”,选择数据脱敏时的处理策略:

    • Redact:用x屏蔽所有字母字符,用0屏蔽所有数字字符。
    • Partial mask: show last 4:只显示最后的4个字符,其他用x代替,不支持中文字符脱敏
    • Partial mask: show first 4:只显示开始的4个字符,其他用x代替,不支持中文字符脱敏
    • Hash:用值的哈希值替换原值,采用的是hive的内置mask_hash函数,只对string、char、varchar类型的字段生效,其他类型的字段会返回NULL值。
    • Nullify:用NULL值替换原值。
    • Unmasked(retain original value):原样显示。
    • Date: show only year:仅显示日期字符串的年份部分,并将月份和日期默认为01/01。
    • Custom:可使用任何有效返回与被屏蔽的列中的数据类型相同的数据类型来自定义策略。

    如需添加多列的脱敏策略,可单击按钮添加。

  4. 单击“Add”,在策略列表可查看策略的基本信息。
  5. 用户通过Hive客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。

    处理数据需要用户同时具有向Yarn队列提交任务的权限。

配置Hive行级别数据过滤

  1. 登录Ranger WebUI界面,在首页中单击“HADOOP SQL”区域的“Hive”。

  2. 在“Row Level Filter”页签单击“Add New Policy”,添加行数据过滤策略。

  3. 根据业务需求配置相关参数。

    表4 Hive行数据过滤参数

    参数名称

    描述

    Policy Name

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

    Policy Conditions

    IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。

    Policy Label

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

    Hive Database

    配置当前策略适用的Hive中数据库名称。

    Hive Table

    配置当前策略适用的Hive中的表名称。

    Description

    策略描述信息。

    Audit Logging

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

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

    Row Filter Conditions

    在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的对象,单击“Add Conditions”,添加策略适用的IP地址范围,然后再单击“Add Permissions”,勾选“select”权限。

    单击“Row Level Filter”,填写数据过滤规则。

    例如过滤表A中“name”列“zhangsan”行的数据,过滤规则为:name <> 'zhangsan',更多信息可参考Ranger官方文档。

    如需添加更多规则,可单击按钮添加。

  4. 单击“Add”,在策略列表可查看策略的基本信息。
  5. 用户通过Hive客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。

    处理数据需要用户同时具有向Yarn队列提交任务的权限。

相关文档

相关文档