Ranger Hive-HDFS ACL 同步

发布日期:2021-01-15 14:54
a00ad44106b961ebdc6591b56b2c7488.png
Ranger Hive-HDFS ACL 同步概述
Ranger资源映射服务器(Resource Mapping Server:RMS)可以将访问策略从Hive自动转换为HDFS。

关于 Hive-HDFS ACL 同步
旧版 CDH 用户使用 Apache Sentry 中的 Hive 策略,该策略自动将 Hive 权限与 HDFS ACL 链接在一起。这对于 Spark 或 Hive 使用的外部表数据特别方便。
以前,Ranger 仅支持分别管理 Hive 策略和 HDFS 策略。现在使用 Ranger RMS,您可以使用为 Hive 表定义的策略来授权对 HDFS 目录和文件的访问。RMS 是启用Hive-HDFS ACL 同步的服务。
RMS 会定期连接到 Hive Metastore,并将 Hive 元数据(数据库名称、表名)提取到 HDFS 的文件名映射。Ranger HDFS 插件(在 NameNode 中运行)已通过附加的 HivePolicyEnforcer 模块进行了扩展。HDFS 插件从 Ranger Admin 下载 Hive 策略,并从 Ranger RMS 下载映射。HDFS 访问由 HDFS 策略和 Hive 策略共同决定。


Ranger RMS 的假设和限制
  • 假定表的所有分区都在为表指定的位置下。因此,表的权限将不会授权访问将数据存储在表指定位置之外的分区。例如,如果一个表位于HDFS目录 /warehouse/foo 中,则该表的所有分区必须具有该 /warehouse/foo 目录下的位置 。
  • 部署 CDP 私有云基础版群集时,不会自动设置Ranger RMS 服务。您必须分别安装和配置 Ranger RMS。
  • 在启动 RMS 并从 Hive Metastore(HMS)运行第一次同步之前,应该先配置 Ranger 策略(具有rangerrms 用户访问权限)。
  • Ranger RMS ACL 同步功能支持单个逻辑 HMS,以评估通过 Hive 权限访问 HDFS。这与 CDH 中的 Sentry 实现逻辑保持一致。
  • 视图(传统视图和物化视图)上授予的权限不会扩展到 HDFS 访问。这与 CDH 中的 Sentry 实现保持一致。
  • 如果私有云基础版部署通过单个 Ranger 支持多个逻辑 HMS,则 Ranger ACL 同步仅适用于其中一个逻辑 HMS。在其他逻辑 HMS 实例中对数据库/表授予的权限将不被视为授权 HDFS 访问。
与 Sentry HDFS ACL 同步的比较
RMS ACL 同步功能类似于 Sentry HDFS ACL 同步功能,它下载并跟踪 Hive 表到 HDFS 位置映射的方式。
它与 Sentry 的不同之处在于,它完全透明地支持 Ranger 策略代表的所有功能。因此,此实现包括对基于标记的策略、安全区域、掩码和行过滤以及审核日志记录的支持。
此外,通过在 HDFS 端进行简单配置即可启用或禁用此功能,从而使每个安装都可以选择打开或关闭此功能。

配置 Hive-HDFS ACL 同步的高可用性
使用以下步骤为 Ranger 资源映射服务器(RMS)和 Hive-HDFS ACL Sync 配置高可用性。
1.在 Cloudera Manager 中,选择“ Ranger RMS”,然后选择“操作”>“添加角色实例”
2.在“添加角色实例”页面上,单击“选择主机”

3.在“所选主机”页面上,选择备份 Ranger RMS 主机。所选主机的“添加的角色”列中将显示“ Ranger RM(RR)”图标。单击确定继续。

4.新的备份主机将重新显示“添加角色实例”页面。点击 继续

5.在“查看更改”页面上查看设置,然后单击“继续”

6.新角色实例将显示在“ Ranger RMS”页面上。

注意
如果启用了 SSL,请使用端口8484。

  1. 点击保存更改,然后点击重新启动图标。
  2. 在 Stale Configurations 页面上,单击 Restart Stale Services
  3. 在“重新启动旧服务”页面上,选中“重新部署客户端配置”复选框,然后单击“立即重新启动”
  4. 重新启动服务时,将显示进度指示器页面。服务重新启动后,单击完成
配置 Hive-HDFS ACL 同步
安装后应完全配置 Ranger 资源映射服务器(RMS)。本主题提供有关 RMS 配置设置和工作流的更多信息。
重要配置信息
  • Ranger RMS 通过 Ranger Hive 策略启用 HDFS 访问。必须使用 HDFS 的名称和 Hive 服务(AKA Repos)来配置 Ranger RMS。在您的安装中,可能为 HDFS 和 Hive 创建了多个 Ranger 服务。这些可以从 Ranger Admin Web UI 中看到。RMS ACL 同步旨在用于特定的一对 HDFS 和 Hive Ranger 服务。因此,在安装 Ranger RMS 之前识别这些服务名称很重要。这些名称应在 Ranger RMS 的安装过程中进行配置。Ranger HDFS 服务名称的默认值为 cm_hdfs,而 Ranger Hive 服务的默认名称为 cm_hive。
  • 在开始 Ranger RMS 安装之前,请确保上面安装中标识的 Hive 服务允许 rangerrms 用户 select 默认访问所有数据库以及 Hive 服务的所有安全区域中的所有表。
  • 默认情况下,Ranger RMS 仅跟踪 Hive 中的外部表。要将 Ranger RMS 配置为也跟踪托管的 Hive 表,请将以下配置设置添加到 Ranger RMS。
ranger-rms.HMS.map.managed.tables=true
  • 在Cloudera Manager中,为ranger-hdfs-security.xml 选择 HDFS> 配置> HDFS 服务高级配置代码段(安全阀),然后确认以下设置:
ranger.plugin.hdfs.chained.services = cm_hive
ranger.plugin.hdfs.chained.services.cm_hive.impl = org.apache.ranger.chainedplugin.hdfs.hive.RangerHdfsHiveChainedPlugin
注意
如果启动 Ranger RMS 并与 Hive Metastore 同步后更改了这些配置中的任何一个,则让 Ranger RMS 使用新配置的唯一方法是执行以下步骤:
  1. 停止 Ranger RMS。
  2. 登录到 Ranger RMS 数据库,然后运行 delete from x_rms_mapping_provider;以从该表中删除唯一的行。
  3. 启动 Ranger RMS。
重新启动后,Ranger RMS 将重新同步 Hive Metastor e中的所有数据。这可能会花费大量时间,具体取决于 Hive Metastore 中 Hive 表的数量。

了解 Ranger 的 RMS 策略
在较高级别上,Ranger RMS 工作流程如下:
  • 将评估 HDFS 服务的 Ranger 策略。如果任何策略明确拒绝访问,则拒绝访问。
  • Ranger 检查以查看所访问的位置是否映射到 Hive 表。
  • 如果是,则会为映射的 Hive 表评估 Hive 策略。如果存在允许访问的 HDFS 策略,则允许访问。否则,默认的 HDFS ACL 确定访问。
  • 请求的 HDFS 权限映射到 Hive 权限,如下所示:
  • HDFS ‘read’ ==> Hive ‘select’
  • HDFS ‘write’ ==> Hive ‘update’ or ‘alter’
  • HDFS ‘execute’ ==> 任何 Hive 权限
  • 如果没有明确允许访问映射表的Hive策略,则拒绝访问,否则允许访问。
在 HDFS 访问评估期间以及在 Hive 访问评估阶段(如果需要)都考虑了适当的标记策略。同样,将生成一个或多个日志记录,以指示由哪个策略(如果有)做出访问决定。
分享到:
推荐精彩博文