Apache 顶级项目 Ranger 和 Alluxio 的最佳实践(附教程)
作者简介:Greg Palmer(Alluxio 首席解决方案工程师)
介绍
Alluxio 让计算引擎实现在任何云环境中的数据编排。Alluxio 统一了本地和跨云环境下的数据孤岛,实现数据本地性、可访问性和弹性,从而降低大数据和人工智能/机器学习(AI/ML)工作负载的管理数据和访问数据的难度。
Alluxio 可以帮助所有计算框架高性能地访问任何环境下的数据存储,让企业能够快速地测试和应用新技术,从而保持敏捷性和竞争力。
一、Apache Ranger
目前,许多企业从最初的提取-转换-加载( ETL)和批处理分析的架构,演进到了集中式的数据湖的架构,这对集中式定义和控制精确的访问权限提出了要求。越来越多的企业数据管理者通过使用 Apache Ranger 来满足这一需求。
Apache Ranger 是用于启用、监控和管理整个 Hadoop 平台综合数据安全的框架 1,可满足以下需求:
提供集中的安全管理,在 central UI 上或通过 REST APIs 管理所有与安全相关的任务。
为 Hadoop 组件/工具执行特定的命令和/或操作时提供精细的授权,并通过集中管理工具进行管理。
对所有 Hadoop 组件中的授权方法进行标准化
支持不同授权方法的——基于角色的访问控制、基于属性的访问控制等。
在 Hadoop 的所有组件中集中审核用户(与安全有关的)访问和管理操作。
二、Alluxio 和 Apache Ranger
Alluxio 实现虚拟文件系统,允许对异构数据存储访问,并提供统一的命名空间以及元数据缓存、数据缓存和基于策略的数据管理服务。为确保 Alluxio 虚拟文件系统的安全性,Alluxio 提供下述功能:
用户验证(User Authentication)
用户授权(User Authorization)
权限管理清单(ACLs)
数据路径授权
客户端侧 Hadoop 用户模拟
审计(Auditing)
加密
Alluxio 通过 Ranger 插件与 Apache Ranger 集成,支持用户授权和审计,如图 2 所示。
当 Apache Ranger 管理员在 Ranger 中定义集中的访问策略后,Alluxio master 节点可以检索到这些策略并缓存在本地,当用户向 Alluxio 虚拟文件系统发出读写请求时,Alluxio 会强制执行这些策略。
三、最佳实践
Alluxio 支持使用 Apache Ranger 来管理和控制目录和文件访问。在 Alluxio 中使用 Ranger 有以下两种方法:
使用 Ranger 来直接管理 Alluxio 虚拟文件系统路径的访问权限。如果 Alluxio 底层文件系统(UFS)并非 HDFS,或者有两个及两个以上底层文件系统使用 Alluxio 的统一命名空间功能,并且 Alluxio 将成为主要的访问层时,应使用该方法。例如,HDFS UFS 和兼容 S3 的 UFS 可能同时通过 UNION UFS 挂载到 Alluxio。
通过 Alluxio 对 HDFS 底层文件系统执行现有的 Ranger 策略。如果 Ranger 管理现有的 HDFS 访问策略,并且除了 HDFS 之外没有其他的底层文件系统,则可以使用该方法。
虽然 Alluxio 和底层文件系统的权限都可以使用 Ranger 来管理,但不建议同时启用二者,因为多个数据源容易造成麻烦。
选项一:Ranger 管理 Alluxio 文件系统权限
如果使用该选项,需要在 Ranger 管理控制台中启用 Alluxio 服务插件。由于 Alluxio 使用 HDFS Ranger 插件类型,可在服务管理器页面中定义新的 HDFS 服务。
第一步:创建 Alluxio HDFS 服务
在 Ranger 管理控制台的服务管理器页面上,点击加号(+)来创建新的服务。
Ranger 上会显示创建服务页面,其中 Alluxio master 节点将被引用为目标服务。在该页面中,输入 Alluxio 服务的详细信息,包括唯一的服务名称。如果存在多个 Alluxio 环境,例如:一个用于开发,一个用于测试,还有几个位于不同数据中心的生产环境,那么 Alluxio 服务应使用具体的名称(例如 alluxio-datacenter1-test)。同样,由于 Alluxio 使用 HDFS 插件,创建服务页面会显示 HDFS 属性。在 Namenode URL 一栏,输入 Alluxio master 节点的 URI(比如 alluxio://alluxio-master:19998)。
将 “Authorization Enabled(启用授权)”设置为 “Yes”将需要对所有用户进行验证,大多数企业会将验证类型设置为 Kerberos。如果 Ranger 管理服务通过 SSL 证书进行配置,则应根据 SSL 证书的通用名称规范,正确设置证书通用名称(Common Name for Certificate)属性,Alluxio master 节点应可以访问这些证书文件。注意,用户名和密码会设为 Ranger 管理员用户名和密码,而不是 Alluxio 管理员用户名和密码。点击创建按钮后将创建新的 HDFS 服务并显示在服务管理器页面上。
第二步:配置 Alluxio Master 节点
当使用 Ranger 管理控制台创建 Alluxio Ranger HDFS 服务后,就可以将 Alluxio master 节点配置为使用 Ranger HDFS 插件来检索和缓存 Ranger 策略。首先,将 core-site.xml, hdfs-site.xml, ranger-hdfs-security.xml, ranger-hdfs-audit.xml 和 ranger-policymgr-ssl.xml 文件从 HDFS namenode 服务器上的 $HADOOP_CONF 目录拷贝到 Alluxio master 节点服务器上的 $ALLUXIO_HOME/conf 目录。修改 ranger-hdfs-security.xml 文件,以命名在上述第一步中使用 Ranger 管理控制台定义的 Alluxio Ranger HDFS 服务。如下所示:
为启用 Ranger 集成,应修改 Alluxio master 节点上的 alluxio-site.properties 文件,如下所示:
例如,如果使用的是 Privacera 4.7,应将插件命名为 ranger-privacera-4.7,如果使用的是 Hortonworks HDP 2.6,应将插件命名为 ranger-hdp-2.6。
在拷贝 Ranger xml 文件并修改 alluixo-site.properties 文件后,重新启动 Alluxio master 进程。
第三步 限制 Alluxio 对敏感目录的权限
当 Ranger 策略对特定路径不可用时,Alluxio 会使用自带的 POSIX 权限来确定用户是否对目录或文件有访问权限。因此,我们建议除了 privileged root 用户外,所有用户都无权访问除/tmp 目录外的任何目录。要执行这一策略,运行以下 Alluxio cli 命令:
在所有由 Ranger 策略管理的子目录上执行 chmod 077 …
当某个终端链接到 Alluxio 节点,并试图以 non-root 用户的身份访问/sensitive_data1 目录时,应显示类似如下的拒绝访问信息:
第四步 创建 Ranger Allow 策略
这一步,数据管理团队和数据安全团队应查看底层文件系统(HDFS、S3、GCS 等)的各个目录或文件夹路径,并确定将各个路径的访问权授予哪些用户组或用户。
使用 Ranger 管理控制台来定义 Allow 策略,可点击 alluxio-datacenter1-test HDFS 服务链接显示已定义的策略列表。
默认情况下,Ranger 会为管理员用户创建多个策略,但目前没有针对 Alluxio 用户的策略。点击添加新策略按钮,显示创建策略页面。
在创建策略页面,递归地为用户目录(/sensitive_data1)下的特定用户组定义 Allow 策略,并只允许 Read,Execute(读取、执行)。在本示例中,使用组名 alluxio-users 就可为该组的所有用户完成权限设置。
点击“添加”按钮,创建新策略,并在列表中显示新策略。
待 Alluxio master 节点检索完毕并缓存该策略后,在 Alluxio 节点上打开一个终端会话,测试 Allow 策略。再次运行 alluxio fs ls 命令,即可成功地显示子目录列表,如下所示:
请注意,Ranger 策略允许对/sensitive_data1/dataset1/目录进行读取访问,但不允许对其进行写入访问(copyFromLocal 命令失败)。这是因为 Ranger 策略只对/sensitive_data1 目录树设置了 Read,Execute 的权限。
之后,使用 Ranger 在 Allow 和 Deny 策略中添加或删除用户组或特定用户。Alluxio 会重新扫描这些策略,并更新其本地策略缓存,当用户对 Alluxio 虚拟文件系统进行读写请求时将执行这些策略。
选项二:Alluxio 执行现有的 Ranger 策略
如果配置该选项,由于 Alluxio 可使用现有 HDFS 服务中定义的策略,因此不需要在 Ranger 管理控制台中启用 Alluxio 服务插件。HDFS 服务应当已经存在于管理控制台中,如图 10 所示。
这里需要将 Alluxio master 节点配置为使用 Ranger 授权。
第一步:配置 Alluxio Master 节点
将 Alluxio master 节点配置为使用 Ranger HDFS 插件来检索和缓存 Ranger 策略 4。将 HDFS namenode 服务器上的 $HADOOP_CONF 目录中的 core-site.xml, hdfs-site.xml, ranger-hdfs-security.xml, ranger-hdfs-audit.xml 和 ranger-policymgr-ssl.xml 文件拷贝到 Alluxio master 节点服务器的 $ALLUXIO_HOME/conf 目录里。
接下来,修改 Alluxio master 节点上的 alluxio-site.properties 文件,步骤如下:
首先,启用 Ranger 集成,操作如下:
如果 HDFS 并非挂载为根 UFS,而是使用嵌套(nested)挂载方法,则 Alluxio 挂载命令应包括指定 Ranger 插件名称和插件路径的选项,如下所示:
插件名称会提示 Alluxio 使用的特定 Ranger HDFS 插件(位于 $ALLUXIO_HOME/lib 目录下的.jar 文件中)。Alluxio 支持几个不同版本的 Apache Ranger,并通过以下 jar 文件实现:
例如,如果使用的是 Privacera 4.7,应将插件命名为 ranger-privacera-4.7,如果使用的是 Hortonworks HDP 2.6,应将插件命名为 ranger-hdp-2.6。
在拷贝 Ranger xml 文件并修改 alluixo-site.properties 文件后,重新启动 Alluxio master 进程。
第二步 重新格式化 Alluxio Masters
为了使以上修改生效,需要使用以下命令重新格式化 Alluxio master 节点。
alluxio formatJournal
如果使用嵌入式日志(alluxio.master.journal.type=EMBEDDED),则应在每个 master 节点上运行该命令。如果使用 UFS 日志类型,则只需在任一 master 节点上运行一次该命令。
现在,Alluxio 应使用现有的 Ranger HDFS 服务策略来设置对 HDFS UFS 目录和文件的访问权限。
四、总 结
随着企业中数据管理团队和安全团队越来越多地扩展对数据湖的访问,拥有集中式精细的访问策略管理变得越来越重要。Alluxio 可以通过两种方式使用 Apache Ranger 的集中式访问策略。1)直接控制对 Alluxio 虚拟文件系统中的虚拟路径的访问,或者 2)对 HDFS 底层存储执行现有的访问策略。
如果您希望获取部署 Alluxio 和 Apache Ranger 的实践经验,可使用 Alluxio Ranger 最佳实践沙盒在个人电脑上部署 Alluxio 和 Apache Ranger。要了解有关 Alluxio 安全性的更多信息,请联系 Alluxio 小助手(VX:Alluxio_Tianyu)查看 Alluxio 文档。
想要获取更多有趣有料的【活动信息】【技术文章】【大咖观点】,请点击关注:
版权声明: 本文为 InfoQ 作者【Alluxio】的原创文章。
原文链接:【http://xie.infoq.cn/article/6d34674a78604f4f6f52f0dc1】。文章转载请联系作者。
评论