介绍
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=truealluxio.security.authorization.plugin.name=<plugin name>alluxio.security.authorization.plugin.paths=/opt/alluxio/confalluxio.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 /useralluxio fs chmod 777 /tmpalluxio fs chmod 700 /sensitive_data1alluxio fs chmod 700 /sensitive_data2
在所有由Ranger策略管理的子目录上执行chmod 077 …
当某个终端链接到Alluxio节点,并试图以non-root用户的身份拜访/sensitive_data1 目录时,应显示相似如下的回绝访问信息:
$ iduid=1001(user1) gid=1001(alluxio-users)$ alluxio fs ls /sensitive_data1Permission 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命令,即可胜利地显示子目录列表,如下所示:
$ iduid=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.jaralluxio-authorization-ranger-0.5-hdp-2.4-enterprise-2.7.0-2.4.jaralluxio-authorization-ranger-0.7-hdp-2.6-enterprise-2.7.0-2.4.jaralluxio-authorization-ranger-1.1-hdp-3.0-enterprise-2.7.0-2.4.jaralluxio-authorization-ranger-1.2-hdp-3.1-enterprise-2.7.0-2.4.jaralluxio-authorization-ranger-0.6-hdp-2.5-enterprise-2.7.0-2.4.jaralluxio-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智库]: