HDFS多用户管理ACL机制other权限访问控制的理解

非Master服务器用户也能通过客户端远程访问Hadoop

现象:在Hadoop集群多用户管理实践中发现,客户端用非Master服务器配置的用户连接Master,也通用具备对指定目录的操作权限。比如Master服务器提供的用户的是A,理论上客户端应用在A用户下部署安装hadoop后远程连接,但现在客户端用B用户安装Hadoop客户端并连接Master服务器,且可在指定目录下rwx,只是在涉及datanode任务时会提示权限不足。

原理:默认ACL必须包含所有最小要求的ACL项,包括文件拥有者项,文件所属的组项和其它用户项。如果用户没有在默认ACL中配置上述三项中的任何一个,那么该项将通过从访问ACL拷贝对应的权限来自动插入,或者如果没有访问ACL则自动插入权限位。默认ACL也必须拥有mask,如果mask没有被指定,通过计算所有被mask过滤项的权限与(&运算)自动插入mask。当一个文件使用ACL时,权限检查的算法则变为:

1)当用户名为文件的属主时,会检查属主的权限。

2)否则如果用户名匹配命名用户条目中的一个时,权限会被检查并通过mask权限来进行过滤。

3)否则如果文件的组匹配到当前用户的组列表中的一个时,而这些权限经过mask过滤后仍然会授权,会被允许使用。

4)否则如果其中一个命名组条目匹配到组列表中的一个成员,而这些权限经过mask过滤后仍然会授权,会被允许使用。

5)否则如果文件组和任何命名组条目匹配到组列表中的一个成员时,但是访问不会被任何一个权限所授权时,访问会被拒绝。

6)除此之外,other权限位会被检查。

最佳实践时基于传统的权限位设置大部分权限要求,然后定义少量带有特殊规则的ACL增加权限位。相比较只是用权限位的文件,使用ACL的文件会在NameNode中产生额外的内存消耗。

分析:ACL机制分user、group、other三组权限,对于非master服务器创建的用户连接过来的客户端的用户,放在other组管理,如果other组权限ACL设置为rwx权限则具备操作权限。

1)unnameduser (file owner)文件的拥有者

2)unnamedgroup (file group)文件的所属组

3)nameduser除了文件的拥有者和拥有组之外,的其它用户

4)namedgroup除了文件的拥有者和拥有组之外,的其它用户

mask 权限掩码,用于过滤named user和named group的权限

HDFS通过ACL控制文件目录权限,在服务器上新增的用户目录/user/A,然后把该配置同hadoop包给到客户端配置,这样通过客户端连接上来的就默认文件目录/user/A属于A用户,如果客户端是通过B部署客户端并远程连接,则目录/user/A用other组权限来授予B用户。显然A用户是文件拥有者,而B用户是其他用户。

这里面需要关注集群多用户管理上的两个细节:

1)Master新建用户所配置的目录体现在Hadoop客户端那个配置文件下,这样通过客户端连接上来的不管是哪个用户,都是检查该目录的权限。

2)要重点掌握ACL机制,并理解mask作用。

实际上,对于Hadoop多用户集群管理,如果只是通过hdfs集成ACL机制来支撑,那也只是实现了文件目录的权限控制,对于资源调度和作业管理,如存储空间和计算能力,还需依赖其他机制。
相关文章
相关标签/搜索