关于大数据:Apache顶级项目Ranger和Alluxio的最佳实践附教程

2次阅读

共计 7145 个字符,预计需要花费 18 分钟才能阅读完成。

介绍

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 服务。如下所示:

<property>
          <name>ranger.plugin.hdfs.service.name</name>
          <value>alluxio-datacenter1-test</value>
          <description>
               Name of the Ranger service containing
               policies for this Alluxio instance
          </description>
     </property>

为启用 Ranger 集成,应批改 Alluxio master 节点上的 alluxio-site.properties 文件,如下所示:

alluxio.security.authorization.plugins.enabled=true
alluxio.security.authorization.plugin.name=<plugin name>
alluxio.security.authorization.plugin.paths=/opt/alluxio/conf
alluxio.security.authorization.permission.umask=077

例如,如果应用的是 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 命令:

alluxio fs chmod 777 /
alluxio fs chmod 777 /user
alluxio fs chmod 777 /tmp
alluxio fs chmod 700 /sensitive_data1
alluxio fs chmod 700 /sensitive_data2

在所有由 Ranger 策略管理的子目录上执行 chmod 077 …

当某个终端链接到 Alluxio 节点,并试图以 non-root 用户的身份拜访 /sensitive_data1 目录时,应显示相似如下的回绝访问信息:

$ id
uid=1001(user1) gid=1001(alluxio-users)
​
$ alluxio fs ls /sensitive_data1
Permission denied by authorization plugin: alluxio.exception.AccessControlException: Permission denied: user=user1, access=--x, path=/sensitive_data1: failed at /, inode owner=root, inode group=root, inode mode=rwx------

第四步 创立 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 命令,即可胜利地显示子目录列表,如下所示:

$ id
uid=1001(user1) gid=1001(alluxio-users)
​
$ alluxio fs ls /sensitive_data1/dataset1/
-rw-------  root root 283 PERSISTED 02-01-2022 14:59:45:457 100% /sensitive_data1/dataset1/data-file-001
$ alluxio fs copyFromLocal my_data-file-002 /sensitive_data1/dataset1/
Permission denied by authorization plugin: alluxio.exception.AccessControlException: Permission denied: user=user1, access=--x, path=/sensitive_data1/dataset1/my_data-file-002: failed at /, inode owner=root, inode group=root, inode mode=rwx------

请留神,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 集成,操作如下:

alluxio.master.mount.table.root.option.alluxio.underfs.security.authorization.plugin.name=<plugin name>
alluxio.master.mount.table.root.option.alluxio.underfs.security.authorization.plugin.paths=/opt/alluxio/conf

如果 HDFS 并非挂载为根 UFS,而是应用嵌套(nested)挂载办法,则 Alluxio 挂载命令应包含指定 Ranger 插件名称和插件门路的选项,如下所示:
alluxio fs mount \
如果 HDFS 并非挂载为根 UFS,而是应用嵌套(nested)挂载办法,则 Alluxio 挂载命令应包含指定 Ranger 插件名称和插件门路的选项,如下所示:

alluxio fs mount \
--option alluxio.underfs.security.authorization.plugin.name=<plugin name> \
--option alluxio.underfs.security.authorization.plugin.paths=/opt/alluxio/conf \
--option alluxio.underfs.version=2.7 \
/my_hdfs_mount \
hdfs://<name node>:<port>/

插件名称会提醒 Alluxio 应用的特定 Ranger HDFS 插件(位于 $ALLUXIO_HOME/lib 目录下的.jar 文件中)。Alluxio 反对几个不同版本的 Apache Ranger,并通过以下 jar 文件实现:

alluxio-authorization-ranger-2.0-cdp-7.1-enterprise-2.7.0-2.4.jar
alluxio-authorization-ranger-0.5-hdp-2.4-enterprise-2.7.0-2.4.jar
​alluxio-authorization-ranger-0.7-hdp-2.6-enterprise-2.7.0-2.4.jar
alluxio-authorization-ranger-1.1-hdp-3.0-enterprise-2.7.0-2.4.jar
alluxio-authorization-ranger-1.2-hdp-3.1-enterprise-2.7.0-2.4.jar
alluxio-authorization-ranger-0.6-hdp-2.5-enterprise-2.7.0-2.4.jar
alluxio-authorization-ranger-2.1-privacera-4.7-enterprise-2.7.0-2.4.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 智库]:

正文完
 0