Ranger之Hive的行列过滤设置(六)

Hive中的行级过滤和列屏蔽

您可以使用Apache Ranger行级筛选器为行设置访问策略
在Hive表。您还可以使用Ranger列屏蔽来设置屏蔽Hive列中的数据的策略,例如只显示列数据的前四个字符或后四个字符。

使用Ranger策略的Hive中的行级过滤
行级过滤有助于简化Hive查询。Hive通过将访问限制逻辑向下移动到Hive层,在每次尝试访问数据时应用访问限制。这有助于简化Hive查询的编写,并提供了无缝的行级分段的后台执行,而无需将此逻辑添加到查询的谓词中。

关于这个任务
行级过滤也提高了Hadoop的可靠性和健壮性。通过为Hive表提供行级安全并减少安全表面积,可以根据用户特征(如组成员关系)和发出请求的运行时上下文,将Hive数据访问限制在特定的行。

行级过滤可以发挥作用的典型用例包括:
•医院可以创建一个安全策略,允许医生仅查看自己患者的数据行,并允许保险理赔管理员仅查看其特定站点的特定行。
•银行可以根据员工的业务部门、区域或员工的角色(例如:只允许财务部门的员工查看客户发票、付款和应计数数据;只有欧洲HR员工可以看到欧洲员工数据)。

•多租户应用程序可以创建每个租户数据的逻辑分离,以便每个租户只能看到自己的数据行。可以使用Apache Ranger行级过滤器为Hive表中的行设置访问策略。行级筛选器策略类似于其他管理员访问策略。您可以为特定的用户、组和条件设置过滤器。
当使用行级筛选器时,适用以下条件:
•过滤表达式必须是表或视图的有效WHERE子句。
•每个表或视图应该有自己的行级过滤策略。
•数据库或表名不支持通配符匹配。
•过滤器按照策略中列出的顺序进行评估。
•每次对表或视图应用行级过滤器时,都会生成一个审计日志条目。

过程

  1. 在“服务管理器”界面,选择已存在的Hive服务。

  2. 选择行级过滤器选项卡,然后单击Add New Policy。
    在这里插入图片描述

  3. 在“创建策略”页面中,为行级过滤器添加如下信息:

表一

字段 描述
Policy Name(required) 输入适当的策略名称。此名称不能在系统中重复。缺省情况下,该策略已启用。
normal/override 允许您指定覆盖策略。选择“覆盖”时,策略中的访问权限将覆盖已有策略中的访问权限。该特性可与“添加有效期”一起使用,创建覆盖现有策略的临时访问策略。
Hive Database(required) 键入适用的数据库名称。自动完成特性根据输入的文本显示可用的数据库。
Hive Table(required) 键入适用的表名。自动完成特性根据输入的文本显示可用的表。
Audit Logging 审计日志默认设置为Yes。选择No关闭审计日志记录。
Description 为策略输入可选的描述。
Add Validity Period 指定策略的开始和结束时间。

表二

标签 描述
Select Group 指定应用此策略的组。public组包含所有用户,因此授予对public组的访问权限将授予所有用户的访问权限。
Select User 指定一个或多个应用此策略的用户。
Access Types “select”是当前唯一可用的访问类型。这将与行级筛选器字段中指定的WHERE子句一起使用。
Add Row Filter (1)要为指定的用户和组创建行筛选器,单击“添加行筛选器”,然后在“输入筛选器表达式”框中输入一个有效的WHERE子句。(2)为了允许指定的用户和组的Select访问而没有行级限制,不添加行筛选器(保留“添加行筛选器”设置)。(3)过滤器按照策略中列出的顺序进行评估。首先应用行筛选器条件列表顶部的筛选器,然后是第二个,然后是第三个,依次类推。

在这里插入图片描述

  1. 要在行筛选器条件列表中移动条件(因此更改对其进行评估的顺序),单击条件行左侧的虚线行图标,然后将条件拖动到列表中的新位置。
    在这里插入图片描述
  2. 单击Add添加新的行级过滤策略。

Hive中使用Ranger策略的基于标记的列屏蔽

Ranger基于资源的Hive屏蔽策略会从数据库、表和列标识的Hive列中匿名数据,而基于标签的屏蔽策略会根据与Hive列相关的标签和标签属性值(通常在Atlas中指定为元数据分类)匿名Hive列数据。
关于这个任务
当使用Ranger列屏蔽策略屏蔽Hive查询返回的数据时,需要满足以下条件
结果:
•可以使用多种屏蔽类型,如显示后4个字符、显示前4个字符、哈希、Nullify和日期屏蔽(只显示年份)。
•可以为特定的用户、组和条件指定屏蔽类型。
•不支持通配符匹配。
•如果有多个标签屏蔽策略应用到同一个Hive列上,选择按字典顺序最小的屏蔽策略执行,例如策略“a”执行在策略“aa”之前。
•掩码按照策略中列出的顺序进行评估。
•当屏蔽策略应用于某一列时,将生成一条审计日志条目。

过程

  1. 选择Access Manager >基于标签的策略,然后选择基于标签的服务。

  2. 选择Masking选项卡,然后单击Add New Policy。
    在这里插入图片描述

  3. 在“创建策略”页面中,为列屏蔽过滤器添加如下信息:

表一:策略详情

字段 描述
Policy Type(required) 默认设置为屏蔽。
Policy Name(required) 输入适当的策略名称。此名称不能在系统中重复。缺省情况下,该策略已启用。
normal/override 允许您指定覆盖策略。选择“覆盖”时,策略中的访问权限将覆盖已有策略中的访问权限。该特性可与“添加有效期”一起使用,创建覆盖现有策略的临时访问策略。
TAG(required) 输入适用的标签名称,例如MASK。
Audit Logging 审计日志默认设置为Yes。选择No关闭审计日志记录。
Description 为策略输入可选的描述。
Add Validity Period 指定策略的开始和结束时间
Policy Conditions (applied at the policy level) 单击+图标添加策略条件。当前“在过期日期后访问?”“(是/否)”是唯一可用的保单条件。在expiry_date之后访问(是/否)?:若要设置此条件,请在文本框中输入yes,然后单击复选标记按钮添加条件。输入布尔表达式:可用于基于标签的策略上的允许或拒绝条件。有关示例和详细信息,请参见“在Ranger基于标记的策略条件中使用标记属性和值”。单击“保存”,保存策略条件。

表二:掩码条件

标签 描述
Select Group 指定应用此策略的组。public组包含所有用户,因此授予对public组的访问权限将授予所有用户的访问权限。
Select User 指定一个或多个应用此策略的用户。
Policy Conditions (applied at the item level) 单击“添加条件”,添加策略条件。当前“在过期日期后访问?”“(是/否)”是唯一可用的保单条件。在expiry_date之后访问(是/否)?:若要设置此条件,请在文本框中输入yes,然后单击复选标记按钮添加条件。输入布尔表达式:可用于基于标签的策略上的允许或拒绝条件。有关示例和详细信息,请参见“在Ranger基于标记的策略条件中使用标记属性和值”。
Access Types “select”是hive组件目前唯一可用的访问类型。
Select Masking Option 要为指定的用户和组创建行筛选器,单击“选择屏蔽选项”,然后选择屏蔽类型:•编校-用“x”屏蔽所有字母字符,用“n”屏蔽所有数字字符。•部分掩码:显示最后4个字符-只显示最后4个字符。•部分掩码:显示前4个字符-只显示前4个字符。•Hash -将所有字符替换为整个单元格值的Hash。•Nullify -将所有字符替换为空值。•未屏蔽(保留原始值)-没有屏蔽应用。•Date:只显示year -只显示日期字符串中的年份部分,并默认月份和日期为01/01•Custom -指定一个自定义屏蔽值或表达式。自定义屏蔽可以使用任何有效的Hive UDF(返回与被屏蔽列中的数据类型相同的数据类型的Hive)。屏蔽条件按照策略中列出的顺序进行评估。屏蔽条件列表顶部的条件首先应用,然后是第二,然后是第三,依此类推。

在这里插入图片描述

  1. 您可以使用加号(+)符号来添加额外的条件。条件按照策略中列出的顺序进行评估。首先应用列表顶部的条件,然后是第二个条件,然后是第三个条件,依次类推。
  2. 单击“添加”,添加新策略。

猜你喜欢

转载自blog.csdn.net/m0_48187193/article/details/114700469