阿里云
发表主题 回复主题
  • 605阅读
  • 0回复

hadoop【2.7.1】安全模式说明【下】

级别: 小白
发帖
0
云币
-18







上一篇hadoop【2.7.1】安全模说明【上】

http://www.aboutyun.com/thread-16568-1-1.html



从Kerberos principal映射用户帐户


hadoop映射Kerberos principal到操作系统用户帐户,使用由hadoop.security.auth_to_local指定的规则。它是同样的工作方式在Kerberos配置文件(krb5.conf    http://web.mit.edu/Kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html)作为auth_to_local。额外,hadoop auth_to_local映射支持 /L 标记,小写字母返回名称。


默认,如果领域匹配到default_realm,它选择principal名称第一个组件(通常定义在/etc/krb5.conf)。例如host/full.qualified.domain.name@REALM.TLD 映射host为默认规则.

定制规则使用hadoop kerbname命令来测试。这个命令允许指定一个principal和使用Hadoop的当前auth_to_local规则集。输出什么身份验证,hadoop将使用它的用法。

从用户到组的映射


尽管hdfs文件是有用户和组的,但是hadoop自己没有定义组,用户到组的映射是由操作系统或LDAP来做。改变映射的方式由 hadoop.security.group.mapping 的值提供映射名称。查看Permissions Guide for details.实际上你需要管理SSO环境使用Kerberos和LDAP的Hadoop的安全模式。

代理用户


一些产品比如Apache Oozie,它代表终端用户访问hadoop访问需要能够代理终端用户。详细查看 HDFS Permissions Guide(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html)

datanode安全

因为datanode传输数据协议不需要使用hadoop RPC框架,DataNode 必须使用特权端口验证自己的身份,端口由 dfs.datanode.addressdfs.datanode.http.address指定。验证基于这样的假设,攻击者将无法获得根权限。

当你使用root用户执行hdfs datanode命令,服务器进程首先绑定特权端口,然后放弃特权,由HADOOP_SECURE_DN_USER 指定的用户帐户来运行。启动进程使用jsvc安装到JSVC_HOME。你必须指定HADOOP_SECURE_DN_USER 和 JSVC_HOME 作为环境变量(在 hadoop-env.sh文件中)。


2.6.0版,SASL可以用来验证数据传输协议。这样的配置,不在需要安全集群以root用户使用jsvc和绑定特权端口启动datanode.为了启用数据传输协议SASL,需要设置hdfs-site.xml文件中的 dfs.data.transfer.protection ,对于dfs.datanode.address 设置一个非特权端口,为HTTPS_ONLY设置 dfs.http.policy和确定HADOOP_SECURE_DN_USER 环境变量没有定义。需要注意的是,如果dfs.datanode.address 设置特权端口,使用SASL数据传输协议是不可能的。这是必需的向后兼容的原因。


为了迁移集群,使用root身份认证开始使用SASL 来代替。首先确保是版本2.6.0或则后面版本,部署集群节点跟外部应用程序一样需要连接集群。仅2.6.0版本或则2.6.0以后版本HDFS客户端可以连接DataNode使用数据传输协议SASL,因此至关重要的是在迁移前有一个正确的版本。


2.6.0版本或则以后版本已经部署,更新任何外部应用程序启用SASL认证配置。如果一个HDFS客户端启用了SASL,然后它即可以使用root身份认证,也可以使用SASL身份认证连接DataNode。所有客户端的配置改变保障随后的DataNode配置改变不影响应用程序。最后每一个独立的DataNode可以被迁移,修改它的配置和重启。可以有一个混合的,有的DataNodes运行使用root身份验证,有的是用SASL 身份验证,在迁移期间暂时这是被允许的。因为HDFS客户端启用SASL可以连接二者。


数据保密性

RPC数据加密


hadoop的服务和客户端之间传送的数据。设置hadoop.rpc.protection为"privacy"在 core-site.xml 文件中激活数据加密


Block 数据传输的数据加密


DataNode数据传输协议加密激活,需要设置  dfs.encrypt.data.transfer为true.可选,你需要设置 dfs.encrypt.data.transfer.algorithm 为 “3des” 或则 “rc4”,选择指定的算法。如果没有指定,系统默认使用配置JCE,通常是3DES。

设置 dfs.encrypt.data.transfer.cipher.suites 为 AES/CTR/NoPadding 激活 AES encryption. 默认,如果没有指定,不使用AES。什么时候使用AES,由dfs.encrypt.data.transfer.algorithm 指定,它仍然在初始密钥交换时使用。AES密钥位长度可以被配置,设置dfs.encrypt.data.transfer.cipher.key.bitlength为128,192或则256,默认128.AES提供了最大的加密强度和最佳的性能。于此同时,3DES 和 RC4 被经常用于hadoop集群。

HTTP数据加密

用于hadoop集群。

在Web-console 和 clients 之间传输数据由SSL保护.

配置

HDFS 和本地文件系统二者的权限


下面表格列出了HDFS不同的路径和本地文件系统(所有节点)和推荐权限


Filesystem

Path

User:Group

Permissions

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---

发表主题 回复主题
« 返回列表
«12345678910»
共10页
上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)

      版权声明

      开发者论坛为你提供“hadoop【2.7.1】安全模式说明【下】”的内容,论坛中还有更多关于 xml加密3destld算法数据验证规则数据库RC4 的内容供你使用,该内容是网友上传,与开发者论坛无关,如果需要删除请联系zixun-group@service.aliyun.com,工作人员会在5个工作日内回复您。