如何搭建一个Hadoop的4A安全平台-栾泽琳 2018-01-12 13:38
大数据已经覆盖我们的生活的方方面面,很多政企单位的大数据系统里面保存了大量的日记文件、用户行为日志、交易数据等。
 
那么,当我们共享数据时,企业应该采取哪些安全措施呢?今天观数科技技术负责人栾泽琳通过一个案例Hadoop,给大家分享一下如何从头到尾搭建Hadoop的4A安全平台。
 

 
Hadoop在2.7版本之后开放INodeAttributeProvider类,我们可以实现Acl的集中化管理,然后根据自己的业务向上抛AccessControlException
 
1.编写checkPermission接口
 
public interface AccessContro\Enforcer {
void checkPermission(String var1,String var2,UserGroupInformation var3,INodeAttributes[] var4, INode[] var5, byte[][] var6,
 
自定义AccessControlException
 
"Permission denied: user=" + user + ", access=" +action + ",inode=\""+path
 
2.配置core-site.xml,并重启
 

 
利用这个接口根据企业的具体业务可以实现基于角色与安全组的权限校验,为了降低访问的延迟性我们可以把策略放入缓存中。
 

 
实现认证-kerberos 技术
 
Kerberos协议是一种计算机网络授权协议,用于在非安全的网络环境下对个人通信进行加密认证。
 
kerberos由kdc server、client、appllication server组成。kdc是 一台单独的服务器包含authentication servrice、ticket granting service和database、application server这里指的是应用服务器,例如Hadoop。
 
kerberos的认证流程如下:
 
1.客户端向KDC中的AS服务发送AS_ REQ请求身份验证,AS服务返回AS_ REP,其中包括为用户和TGS生成的一个会话密钥SK_TGS,并发送使用用户 密钥加密的TGT、SK_TGS。
 
2.客户端向KDC中的TGS服务发送TGS_ REQ,请求访问某个应用服务器 的服务票据(ST),发送TGT和身份凭证(Authenticator)。
 
3.TGS判断无误后,为用户和应用服务器之间生成一个新的会话密钥:
 
SK_Service,然后发送TGS_REP给用户,其中包括SK_Service和服务票据(ST)。
 
4.用户使用与TGS之间的会话密钥SK_TGS解开包得到与应用服务器之间的会话秘钥SK_Service,然后使用SK_Service生成一个身份凭证。(Authenticator),向应用服务器发送AP_REQ,其中包括服务票据(ST)和身份凭证。
 
5.应用服务器向用户发送一个数据AP_REP,以证明自己的身份,这个包使用会话密钥(SK_Service)加密。客户端会等待应用服务器发送确认信息,如果不是正确的应用服务器,就无法解开ST,也就无法获得会话密钥,从而避免 用户使用错误的服务器 。
 
此后用户与应用服务器之间使用SK_Service进行通信,且在TGT有效期内,用户将跳过第1步的身份验证,直接从第2步使用TGT向TGS证明自己的身份。
 

Hadoop在开启kerberos后会遇到很多坑,我把需要生成的ketytab文件整理了一份,方便有需要的朋友对照,我建议可以使用ktutil指令把多个文件合并到一个文件中。
 

 
确保core-site.xml开启如下配置
 

  
hfs-site.xml配置如下
 

 
三.
 
完整的审计可以通过分析事件来追溯已有发生的数据泄露露或越权访问等安全问题,同时能减少未来潜在的安全隐患,Hadoop本身默认不开启审计功能,需要给予特定的配置,具体配置如下:
 
1.更改log4j.xml开启hdfs-audit功能
 

 
2.必须修改Hadoop-env.sh(这里有第二个大坑就是必须配置-Dhdfs."udit.logger的属性,否则日志打印不出来。)
 
export HADOOP_NAMENODE_OPTS"-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-DEBUG,RFAAUDT} $HADOOP_NAMENODE_OPTS"
 
效果展示:
 

 
至此,一个简易版的4A平台已经搭建完成。当然大数据安全本身是分布式系统,不同于传统的集中式IT框架,如何运用分部署特性构建安全平台是一个艰巨并且有挑战性的工作。