非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机制来支撑,那也只是实现了文件目录的权限控制,对于资源调度和作业管理,如存储空间和计算能力,还需依赖其他机制。