Hadoop的安全权限管理

为什么要注重权限管理

Hadoop集群装好了,其自身几乎没有对安全/用户权限的配置。用户可以轻易地伪造自己的身份来破坏Hadoop集群,例如,从client伪装成一个hdfs用户删除HDFS中的全部数据,或者伪装成mapred用户提交一个恶意的job。

对于商业用户而言,数据安全是最重要的。所以,对于Hadoop集群而言,必须进行一定的安全配置,保证数据和集群的安全。

Hadoop权限管理基础

Authentication v.s. Authorization

在权限管理中,最重要的是实现authentication(身份鉴别)和authorization(授权)这两点。

  • authorization,是指正确识别一个用户的真实身份。例如用户A声称自己是用户B,那么我们就要正确地识别出他其实并不是B。
  • authentication,是指为某个用户做某件事赋予某种权力。例如,赋予C用户删除和修改某个文件的权力。

下面,我们就从authentication和authorization这两方面来分别阐述。

Authentication

Hadoop本身原生并不具备任何身份鉴别的能力。例如,我在一个client上创建一个用户hdfs,然后用这个用户名来删除所有的数据,是行得通的:

useradd hdfs
sudo -u hdfs hadoop dfs -rm -R /

那么,怎样才能让Hadoop具备身份鉴别的能力?可以使用Kerberbos。通过使用Kerberbos,Hadoop可以鉴别出用户的真实身份。

在一个安全的Hadoop集群(secure Hadoop)中,所有的Hadoop daemons在交互时,都会相互进行身份鉴别。

目前,Cloudera可以选择配置使用simple还是kerberos这两种机制来实现身份鉴别,如下:

这里写图片描述

Authorization

在正确地鉴别出用户的正式身份后,下一步要做的是决定该用户能做啥事,已经不能做啥事,这就是authorization。

这里,我们只讨论手授予用户对HDFS文件系统操作的权限。

HDFS权限机制

HDFS文件的permissions与Linux文件系统很相似,如:
这里写图片描述

以文件/hbase/.hbase-snapshot为例,drwxr-xr-x - hbase hbase表示这是一个目录,owner(即『hbase』)的权限为”rwx”,group(也是『hbase』)和other的权限都是”r-x”。

但是,某些地方HDFS与Linux FS存在差异,可以参考 HDFS ignores group of a user when creating a file or a directory, and instead inherits 以及 improve semantics of the hadoop dfs command

若Linux FS中某个文件的owner和group分别是A和B,那么Linux中必须存在名为A的用户和名为B的群组。那么,HDFS呢?

在HDFS中,一个文件的owner和group只是一个字符串而已,并不需要对应到真实存在的用户名和群组名。例如,可以这样改变某个文件的owner和group:
这里写图片描述

HDFS超级用户

谁是超级用户(super-user)?简单地说,Namnode进程用户就是HDFS的super-user。超级用户在HDFS中有最高权限,可以做任何事。

默认情况下,HDFS超级用户所属的group为supergroup,这由dfs.permissions.supergroup配置,如下:

这里写图片描述

HDFS中从user到group的映射

给定一个user,HDFS怎样判断它属于哪一个group?
当我们在某个节点或者client上运行hadoop命令时,NameNode就知道运行该命令的用户的username。此时,它可以通过一些pluggable interface来确定该user属于哪一个group:

  • org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback
  • org.apache.hadoop.security.ShellBasedUnixGroupsMappingWithFallback
  • org.apache.hadoop.security.LdapGroupsMapping

这里写图片描述

其中,默认的interface是ShellBasedUnixGroupsMappingWithFallback,它通过在Namenode上运行命令 id -Gn <username>来确定该用户属于哪一个group:

[tao@ecs2 ~]$ id -Gn hbase
hbase supergroup

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值