Hadoop HDFS权限控制

HDFS支持权限控制,但支持较弱。HDFS的设计是基于POSIX模型的,支持按用户、用户组、其他用户的读写执行控制权限。在linux命令行下,可以使用下面的命令修改文件的权限、文件所有者,文件所属组:
hadoop fs –chmod (修改文件所有者,文件所属组,其他用户的读、写、执行权限)
haddop fs –chown (修改文件所有者)
hadoop fs –chgrp (修改文件所属组)
不同用户使用不同的linux帐户即可访问到特定文件。
启动hadoop hdfs系统的用户即为超级用户,可以进行任意的操作。
需要注意的是:HDFS本身没有提供用户名、用户组的创建,在客户端调用hadoop 的文件操作命令时,hadoop 识别出执行命令所在进程的用户名和用户组,然后使用这个用户名和组来检查文件权限。
用户名=linux命令中的`whoami`,而组名等于`bash -c groups `。
根据上述原理来看hdfs的文件系统权限管理较弱。如果用户知道hdfs name node 地址和端口号,在安装hdfs客户端后,使用和name node 相同的用户名,即可获取到所有文件的访问权限。

另外,hdfs有一个web 访问方式。可以通过修改参数,来修改webserver启动的用户名和组(配置参数:dfs.web.ugi)。这样通过web方式就只能访问dfs.web.ugi对应用户和组可以访问的文件。
如果要限制hdfs的web访问,可以考虑为webserver增加一个过滤器. 目前0.23.0通过代码增加一个patch来实现该功能,但0.20.2根据参考文献1描述不支持Kerberos认证。

许多公司对hadoop进行了重新封装,增加了自己的功能。有些公司增加了安全授权这块的模块。下面介绍两种:
第一种:Yahoo! Distribution of Hadoop
hadoop是由yahoo引导开发并贡献到开源社区的。yahoo对hadoop进行了封装,并在http://yahoo.github.com/hadoop-common/ 上以开源的形式对外发布。Hadoop Distribution of Hadoop with security 0.20.104.2 增加了安全的支持,集成了Kerberos 开源授权标准。访问参考文献[3]获取更多关于0.20.104.2版本增加功能的信息
第二种:Cludera's hue (http://cloudera.github.com/hue/)
其依赖于Cloudera's Distribution including Apache Hadoop (CDH)。CDH是一个hadoop工程和子工程的集合。CDH 安装比hadoop的安装简单。linux下输入yum就能安装。访问https://ccp.cloudera.com/display/DOC/Documentation 了解关于CDH更多的信息。CDH也有权限控制和管理的工具。具体这个东西我还没有安装过。

参考文献:
[1] http://hadoop.apache.org/common/docs/r0.20.2/hdfs_permissions_guide.html
[2] https://issues.apache.org/jira/browse/HADOOP-7119
[3] http://yahoo.github.com/hadoop-common/
[4] http://yahoo.github.com/hadoop-common/releases/0.20.104.2/
[5] http://cloudera.github.com/hue/

你可能感兴趣的:(hadoop,Hadoop,Linux,Yahoo,Web,Apache)