hadoop kerberos官方配置详解(4)

有些访问终端用户维护的Hadoop服务的产品,比如Apache Oozie,需要能够模拟终端用户。更多细节查看the doc of proxy user

保护DataNode

因为DataNode的数据传输协议没有使用Hadoop RPC框架,DataNodes必须使用被dfs.datanode.address和dfs.datanode.http.address指定的特权端口来认证他们自己。该认证是基于假设攻击者无法获取在DataNode主机上的root特权。

当你使用root执行hdfs datanode命令时,服务器进程首先绑定特权端口,随后销毁特权并使用被HADOOP_SECURE_DN_USER指定的用户账号运行。这个启动进程使用被安装在JSVC_HOME的the jsvc program。你必须在启动项中(hadoop-env.sh)指定HADOOP_SECURE_DN_USER和JSVC_HOME做为环境变量。

2.6.0版本开始起,SASL可以被使用来认证数据传输协议。这不再需要安全集群使用jsvc的用户启动DataNode并绑定特权接口。要在数据传输协议上启用SASL,在hdfs-site.xml设置dfs.data.transfer.protection,为dfs.datanode.address设置一个免特权端口,设置dfs.http.policy to HTTPS_ONLY并保证HADOOP_SECURE_DN_USER环境变量没有设置。注意,如果dfs.datanode.address是设置了一个特权端口将不可能在数据传输协议上使用SASL。这是向后兼容的原因所要求的。

为了迁移一个存在的使用root认证的集群用使用SASL启动的方式替代。首先保证2.6.0或以上版本的hadoop已经被部署在所有的集群节点上,同时所有外部应用程序需要连接在这个集群上。只有2.6.0或以上版本的HDFS客户端可以使用SASL认证数据传输协议来连接DataNode。所以,在迁移前保证所有的节点版本正确是至关重要的。 所有地方的2.6.0或以上版本被部署之后,更新所有外部应用程序的配置来是SASL生效。如果以个HDFS客户端使用了SASL,那么他可以成功的连接一个DataNode,不管它使用的事root认证或者是SASL认证。配置所有的客户端保证以后在DataNode上的配置改变不会破坏这个应用程序。最后,每个DataNode个体都可以通过改变它的配置和重启来迁移。

在RPC上的数据加密

在hadoop服务端和客户端之间传输的数据可以被加密。在core-site.xml上设置hadoop.rpc.protection隐私来激活加密。

块数据传输的数据加密

你需要在hdfs-site.xml上设置dfs.encrypt.data.transfer成true来激活为Datanode的数据传输协议的数据加密。

你可以选择性的设置dfs.encrypt.data.transfer.algorithm为3des或者rc4来选择使用特定的加密算法。如果不指定,那么在这个系统中,被配置的JCE将被默认使用,它通常情况使用3DES。

设置dfs.encrypt.data.transfer.cipher.suites成AES/CTR/NoPadding激活AES加密。默认情况下,这不被指定,所以AES不被使用。当AES被使用时,在一个初始密钥交换过程中被指定在dfs.encrypt.data.transfer.algorithm中的算法仍然被使用。AES密钥的长度可以通过设置dfs.encrypt.data.transfer.cipher.key.bitlength成128,192,或者256来配置。默认是128.

AES提供最大的加密强度和最佳的性能。目前,3DES和RC4已经经常在Hadoop集群中使用。

HTTP上的数据加密

在Web-console和客户端的数据传输被SSL(HTTPS)保护。SSL配置是推荐的,但是不需要使用kerberos配置Hadoop的安全。

配置 对于HDFS和本地文件系统路径的权限

下面的表格列出了各种HDFS和本地文件系统的路径(在所有节点上)和推荐的权限设置:

FilesystemPathUser:GroupPermissions
local   dfs.namenode.name.dir   hdfs:hadoop   drwx——  
local   dfs.datanode.data.dir   hdfs:hadoop   drwx——  
local   $HADOOP_LOG_DIR   hdfs:hadoop   drwxrwxr-x  
local   $YARN_LOG_DIR   yarn:hadoop   drwxrwxr-x  
local   yarn.nodemanager.local-dirs   yarn:hadoop   drwxr-xr-x  
local   yarn.nodemanager.log-dirs   yarn:hadoop   drwxr-xr-x  
local   container-executor   root:hadoop   –Sr-s–*  
local   conf/container-executor.cfg   root:hadoop   r——-*  
hdfs   /   hdfs:hadoop   drwxr-xr-x  
hdfs   /tmp   hdfs:hadoop   drwxrwxrwxt  
hdfs   /user   hdfs:hadoop   drwxr-xr-x  
hdfs   yarn.nodemanager.remote-app-log-dir   yarn:hadoop   drwxrwxrwxt  
hdfs   mapreduce.jobhistory.intermediate-done-dir   mapred:hadoop   drwxrwxrwxt  
hdfs   mapreduce.jobhistory.done-dir   mapred:hadoop   drwxr-x—  
常见的配置

为了在Hadoop上开启RPC认证,设置hadoop.security.authentication的属性值为“kerberos”,并且合理地设置在下面列出的安全相关的配置项。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d9d246ed39d4b7719eccfada3af60d5c.html