淘先锋技术网

首页 1 2 3 4 5 6 7

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配置高可用性。

在Cloudera Manager中,选择“ Ranger RMS”,然后选择“操作”>“添加角色实例”。

在“添加角色实例”页面上,单击“选择主机”。

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

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

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

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

在Cloudera Manager中,选择Ranger RMS,然后单击Configuration。

选择“Ranger RMS服务器高可用性”复选框。在“Ranger RMS服务器ID”框中,为每个RMS服务器添加以逗号分隔的ID列表。

使用Ranger-rms-conf / ranger-rms-site.xml属性的Ranger RMS服务器高级配置代码片段(安全阀)的添加(+)图标可为每个RMS主机及其相应的服务器ID添加条目。

注意

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

点击保存更改,然后点击重新启动图标。

在Stale Configurations页面上,单击Restart Stale Services。

在“重新启动旧服务”页面上,选中“重新部署客户端配置”复选框,然后单击“立即重新启动”。

重新启动服务时,将显示进度指示器页面。服务重新启动后,单击完成。

配置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。

在Cloudera Manager中,为ranger-hdfs-security.xml选择HDFS>配置> HDFS服务高级配置代码段(安全阀),然后确认以下设置:

注意

如果启动Ranger RMS并与Hive Metastore同步后更改了这些配置中的任何一个,则让Ranger RMS使用新配置的唯一方法是执行以下步骤:

停止Ranger RMS。

登录到Ranger RMS数据库,然后运行delete from x_rms_mapping_provider;以从该表中删除唯一的行。

启动Ranger RMS。

重新启动后,Ranger RMS将重新同步Hive Metastore中的所有数据。这可能会花费大量时间,具体取决于Hive Metastore中Hive表的数量。

了解Ranger的RMS策略

在较高级别上,Ranger RMS工作流程如下:

将评估HDFS服务的Ranger策略。如果任何策略明确拒绝访问,则拒绝访问。

Ranger检查以查看所访问的位置是否映射到Hive表。

如果是,则会为映射的Hive表评估Hive策略。如果存在允许访问的HDFS策略,则允许访问。否则,默认的HDFS ACL确定访问。

请求的HDFS权限映射到Hive权限,如下所示:

如果没有明确允许访问映射表的Hive策略,则拒绝访问,否则允许访问。

在HDFS访问评估期间以及在Hive访问评估阶段(如果需要)都考虑了适当的标记策略。同样,将生成一个或多个日志记录,以指示由哪个策略(如果有)做出访问决定。

以下方案说明了如何确定访问权限。所有方案都假定Ranger HDFS策略未明确拒绝访问HDFS位置。

位置与Hive表不对应。

在这种情况下,仅当Ranger HDFS策略允许访问或HDFS 原生ACL允许访问时,才授予访问权限。审核日志将显示哪个策略(或Hadoop-acl)做出了决定。

位置对应于一个Hive表。

对于从原始HDFS请求派生的任何访问,Ranger Hive策略均明确拒绝访问映射表。Hive政策将拒绝访问。

没有匹配的Ranger Hive策略。

访问将被拒绝。审核日志将不指定策略。

游标策略会屏蔽映射表中的某些列。

访问将被拒绝。审核日志将显示Hive屏蔽策略。

映射的Hive表具有行过滤器策略

访问将被拒绝。审核日志将显示Hive行过滤器策略。

Ranger Hive策略允许访问映射表,以进行从原始HDFS访问请求派生的访问。

访问将被授予。如果访问最初是由HDFS策略授予的,则审核日志将显示HDFS策略。