1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 大数据权限管理利器 - Ranger

大数据权限管理利器 - Ranger

时间:2020-07-04 06:49:56

相关推荐

大数据权限管理利器 - Ranger

1. 介绍

Ranger是HDP体系统中安全管理的重要一环。它提供了具体资源(如HBase中的具体表)权限管控、访问监控、数据加密的功能。

2. 组件介绍

2.1 整体说明

Raner是由三个部分组件:Ranger Admin 、Ranger Usersync 与Ranger plugin,它们关系如下:

在Ranger的官网中有对于这三个组件的说明

需要说明的是这三者是独立的。后面会有详细的说明

2.2 Ranger Admin

Ranger admin它包含三个部分: Web页面、Rest消息处理服务以及数据库。 我们可以把它看成一个用来数据集中存储中心(所有的数据都集中存在这里,但是其它两个组件也可单独运行存在)。它的具体作用:

1. 接收UserSync进程传过来的用户、组信息。 并将它们保存到MySql数据库中。 需要注意:这些用户信息在配置权限策略的时候需要使用。这个很容易理解,就象领物料的时候,管理员需要登记物料的领用人,如果不是本公司的人,肯定就不会让你领了。

2. 提供创建policy策略的接口

3. 提供外部REST消息的处理接口

2.3 UserSync

UserSync是Ranger提供的一个用户信息同步接口,可以用来同步Linux用户信息与LDAP用户信息。通过配置项:

SYNC_SOURCE = LDAP/Unix

来确认是LDAP还是Unix, 默认情况是同步Unix信息。 对于UserSync有三点需要说明:

1. 这个同步是单向的。

就是说它只管从Unix上面的本地用户信息读取出来,然后上传到Ranger Admin上面。在其代码中也可以看到

@Overridepublic void updateSink(UserGroupSink sink) throws Throwable {isUpdateSinkSucc = true;buildUserGroupInfo(); // 此处user、group读取信息for (Map.Entry<String, List<String>> entry : user2GroupListMap.entrySet()) {String user = entry.getKey();List<String> groups = entry.getValue();try{sink.addOrUpdateUser(user, groups); //此处往ranger admin发送消息}catch (Throwable t) {LOG.error("sink.addOrUpdateUser failed with exception: " + t.getMessage()+ ", for user: " + user+ ", groups: " + groups);isUpdateSinkSucc = false;}}}

2.UserSync不是实时同步的

如果用户新创建一个用户,但是这个用户无法立即同步到Ranger中,对于这一点,咨询Ranger社区,他们的回复:

Regarding, Is there another way to sync user info automatically?

Ranger-Usersync process syncs the added users in particular time interval which is in minutes; By default it is set to 5 minutes.The property name is “SYNC_INTERVAL”. So it will sync newly added user after that interval or you have restart ranger-usersync.

You can update this value in install.properties file and run the setup.sh script to update the value in the Usersync process, after this you will have to restart ranger-usersync process.

但是从我测试结果来看并不是太理想。因为我们系统要求用户创建后,能够马上在Ranger 上面创建策略。最终我们的解决的方案是:不使用UserSync这个进程,将Ranger中的同步代码抽取出来。利用这样来做到数据同步

<dependency><groupId>org.apache.ranger</groupId><artifactId>unixusersync</artifactId><version>0.7.0</version></dependency>

3.不支持删除用户

Ranger暂时不支持通过同步或者代码的方式直接删除用户(Ranger 版本0.70)。社区里给出的解决方案:

To delete the user from Ranger database, you will have to delete the user from Ranger UI manually, as the Ranger-Usersync process will only add users to Ranger Database.

2.3 Plugin

因为我只读过Hdfs的插件代码,这里也是以HDFS的插件代码进行说明。

2.3.1 Ranger Plugin的工作流程

NameNode启动时候,会创建一个Hdfs Plugin线程, 这个线程启动后就会读取配置信息

[root@ysbdh03 conf]# cat ranger-hdfs-security.xml <configuration><property><name>ranger.plugin.hdfs.policy.cache.dir</name><value>/etc/ranger/clustersz_hadoop/policycache</value></property>... ... </configuration>

在这个目录中存储的就是相应的策略文件,如果这个配置文件不存,则会往Ranger admin发送消息,同步policy信息。同步过来之后,以文件方式持外化。:

这里还需要说明的一点的就是这个文件的名称。在上图中文件名称为hdfs_clustersz_hadoop, 这包含两个部分,其中hdfs对应的hdfs组件,而clustersz_hadoop就对应的Ranger中的Server,见图示:

2.同步完成后,hdfs plugin线程会每隔一段时间(30s)会往ranger admin发送一次消息,同步一次policy信息

2.3.2 HDFS Plugin的权限控制原理

1.anger的plugin会从ranger admin那里同步策略信息,并以.json的格式保存。

2.校验的时候,namenode会调用checkPermission()函数,一般是两部:

其具体过程如下:

1. 首先用这个用户去查找一下用户所属的组。

2. 拿到用户(kerberos的用户,包含组)信息以及需要读取(或者写入)的文件夹信息,去查看一下这个用户信息在策略文件有没有定义,如果没有给定策略信息,如果已经明确定义了,就直接返回;

3. 如果这个用户对于需要操作的文件没有定义信息上,此时,就会再调用hdfs原生的,就是我们常见的 xxx – xxx —xxx 即是否与文件在同一个组,是否有权限。

一般来说hdfs默认创建的文件权限都是类似于:

drwxr-xr-x - hdfs supergroup 0 -07-14 00:32 /test

即都会有读取权限,如果在创建文件夹(文件)的时候,不作修改,那么对于所有的用户都是读取权限。

如果这个校验通过了,也是返回,否则就直接抛出异常,说明没有权限.

3. 其它

3.1 Kerberos与Ranger

Kerberos与Ranger都是Hadoop安全体系中的两个部分,但是它们分工是不同的。在刚接触大数据安全的时候,我一直都不明白为啥需要两个不同组件来进行权限控制,很长一段时间之后,才会明白。联系我们每天上班然后坐到办公室的过程可能就会比较清楚

某个人员进入公司之前,保安需要检查它是否有工卡,如果没有工卡,保安GG就会认为你不是公司员工,而不允许你进入到公司园区。 当你进入公司园区之后,这个时候你想到某个仓库去看一下,仓库大门就会检查一下你有没有门禁,有门禁才会让你进入到仓库中。

我们可以把公司园区类比成大数据集群平台,工卡就要相当于你的Kerberos权限认证,而仓库就对应着具体的hdfs文件路径。

3.2 Ranger的数据加密

Ranger 的数据加密对应着Hadoop KMS,如果用户想直接使用Hadoop KMS也是可以的。下面说一下Ranger KMS的简单流程(以HDP集成安装的Ranger为例)

3.2.1 Ranger加密的过程

安装好ranger之后,打开ranger admin的UI连接

以用户名为keyamin(密码也是keyadmin)进入

进入界面后,首先创建一个加密策略。其过程如下:

首先选择”Encryption” –> “key Manager”

进入如下页面,选择相应的Service, 然后点击”Add Policy”

在弹出的配置项中进行配置:

填好之后,点击”save”保存,对应的密码策略就配置完成了。

下面就开始配置密码策略对应的用户了。

配置方式与ranger 的hdfs策略配置相似, 即回到如下的界面,然后选择相应的service,进入之后,增加相应的用户。

Hadoop侧的配置就与Hadoop KMS相同了。

3.2 审计

权限管理是Ranger的主体功能,Ranger的审计,我有点感觉象是一个半买半送的东西。

审计主要是日志审计,主要记录各个组件资料的访问信息,也就是从各个组件日志中抽到相应的登录访问信息,但是这一块没有LogSearch强(HDP另一个日志组件)。当然如果用户只需要知道一些简单的访问信息,也不想上LogSearch,用这个也是可以的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。