版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/3d7028a5b335
What is ACL
ACL(Access Control Lists ,访问控制列表),Hadoop中的acl与unix中的acl机制(posix模型)基本相同,可以为文件或目录提供更精细化的权限访问控制。
对于每个文件或目录而言,权限管理分为3个不同的用户类:owner,group和others。每个用户类有3种不同的访问权限:read,write,execute。
当一个用户试图访问一个文件系统对象时,hdfs会根据该用户所对应的权限进行验证:如果该用户是其所有者(owner),那么hdfs将检查owner类权限;如果用户不是所有者,而是group组的成员,那么hdfs将检查group组类权限;否则,hdfs会检查other其他类权限。
Hadoop确定用户身份方式
级别一:在Kerberos模式下,客户端进程身份由kerberos凭据确定。用户通过kinit工具得到(ticket-granting-ticket)TGT,且使用klist确定当前的principal。比如通过kinit -kt a.keytaba@COMPANY.COM,将映射该principal到HDFS的用户a。
级别二:当集群未启用kerberos时,客户端进程的身份只要在Active NameNode上通过了HDFS上相关文件与目录的权限验证即可。
级别三:当客户端进程的身份不存在于hdfs上时,由操作系统确定。
这种安全模型足以满足大量的安全需求。但当新的需求到来、业务复杂度提升时,需要将hdfs文件资源进行更细粒度的分配,简单的posix模型已无法满足。
Hdfs ACLs能够为特定用户名或组指定更细粒度的文件权限,而不仅仅是文件的所有者和组。
要使用acls,首先需要在namenode上启用acls。操作步骤:
1、CM界面中修改hdfs参数:dfs.namenode.acls.enabled 为 enable。
2、重启HDFS服务。
否则,会报错如下:
ACL实战
一、为用户添加acl权限
二、为用户组添加acl权限
三、限制用户组访问目录
Default ACL
可以为某个目录设置一个默认的ACL权限,使得以后在该目录中新建文件或者子目录时,新建的文件/目录的ACL权限都是之前设置的default ACLs。
使用default acl新建一个hdfs用户bdhbdkas,它属于bdhbdkasgrp组,拥有/user/目录下的编辑权限。
当然,如果需要添加一个hdfs的管理员用户,那么可以在hdfs——>配置中,添加用户所属组。之后需要重启hdfs服务生效。