本文共 1704 字,大约阅读时间需要 5 分钟。
Hive 中的行级过滤与列屏蔽(基于 Apache Ranger 的策略)
Apache Ranger 是 Apache 开源项目中用于数据安全的重要工具之一。在 Hive 中,Ranger 提供了强大的行级过滤和列屏蔽功能,这些功能能够有效保护数据隐私并满足企业的安全需求。本文将详细介绍 Hive 中的行级过滤和列屏蔽的实现方法。
行级过滤
什么是行级过滤?
行级过滤是 Hive 中的一种安全机制,允许管理员为特定的 Hive 表设置行级访问策略。通过行级过滤,可以限制用户只查看特定的数据行,而不是整个表或视图。这种方式能够提升数据安全性,同时减轻 Table_RPCMs 的负载。
为什么要使用行级过滤?
简化查询逻辑:Hive 将访问逻辑下移至底层,仅在查询执行时应用过滤,避免在 SQL 谓词中重复逻辑。 提升查询性能:后台执行分段处理,无需显式在查询中添加过滤条件。 提高可靠性:通过将安全逻辑下移到 Hive 层,减少了元数据服务的负载压力。 行级过滤的典型应用场景
- 医疗行业:医生仅能查看其指定患者的数据。
- 金融行业:根据员工部门或角色限制数据访问,例如财务部门员工只能查看发票、付款和应计数据。
- 多租户应用:为每个租户创建逻辑隔离,确保每个租户只能看到自己关联的数据行。
行级过滤的步骤说明
进入服务管理器:访问 Hive 服务,选择已有的 Hive 服务。 启用行级过滤器:在服务管理界面选择行级过滤器选项卡,点击“添加新策略”。 配置策略详情: - 策略名称:输入一个唯一名称。
- 策略类型:默认为“正常”或“覆盖”,可根据需要选择。
- Hive 数据库和表:指定适用的数据库和表。
- 审核日志:默认启用,可以根据需求关闭。
- 描述:添加必要的说明信息。
- 有效期:指定策略的生效时间段。
选择访问组和用户:指定策略适用的组或用户,默认为“public”组。 添加过滤条件:在策略中添加有效的 Hive WHERE 子句,支持多个条件并可调整顺序。 保存策略:创建完成后保存策略,生效的时间段内限制访问。
列屏蔽(基于标记的屏蔽)
什么是列屏蔽?
基于标记的列屏蔽是 Hive 中的一种安全机制,可匿名化特定 Hive 列的数据。通过屏蔽,可以隐藏敏感信息或限制用户的数据访问。屏蔽类型包括:
- 部分显示:显示前四个或后四个字符。
- 哈希:将单元格内容替换为哈希值。
- Nullify:将单元格内容替换为空值。
- 日期:只显示日期年份。
- 自定义:定义自定义屏蔽逻辑,可使用 Hive UDF。
列屏蔽的应用条件
- 标记类型:支持基于标记的屏蔽,只能应用到明确指定的列。
- 多个标记:如果多个屏蔽策略同时应用于相同列,按字典序选择最小的策略执行。
- 审计日志:默认生成审计日志记录,可以关闭审计功能。
- 屏蔽顺序:屏蔽策略按定义顺序评估,优先执行顶部策略。
列屏蔽策略的设置步骤
进入标记管理界面:访问 Apache Ranger 的服务,选择“基于标记的策略”。 启用新屏蔽策略:点击“屏蔽”选项卡,选择“添加新策略”。 配置策略详情: - 策略类型:默认设置为“屏蔽”。
- 策略名称:输入适当名称,不能重复。
- 标记名称:选择适用的标记,例如“MASK”。
- 数据库和表:指定适用的数据库和表。
- 审核日志:默认启用,可以根据需求关闭。
- 描述:添加说明信息。
- 有效期:定义策略生效时间。
- 屏蔽条件:添加条件,可使用布尔表达式定义允许或拒绝情况。
选择用户和组:指定适用的用户和组,默认为“public”组。 添加屏蔽类型:选择适用的屏蔽类型,输入自定义值或表达式。 保存策略:创建完成后保存策略,生效时间内实施屏蔽。
行级过滤和列屏蔽的综合应用
- 行级过滤:用于限制用户的数据访问范围,适用于部门间数据共享或用户权限管理。
- 列屏蔽:用于保护敏感信息,避免数据泄露。例如,可以将 Salary 列替换为空值或显示前四个数字。
- 结合使用:在需要时同时启用行级过滤和列屏蔽,以实现更加全面的数据安全策略。
通过合理应用 Apache Ranger 的行级过滤和列屏蔽功能,可以显著提升 Hive 数据安全性,同时简化数据访问管理。
转载地址:http://lpqdz.baihongyu.com/