首页 / 新闻

01.

26

2017

Transwarp如何让Hadoop集群免受黑客攻击

技术博客

Hadoop集群为什么需要安全?

各大安全组织检测到勒索软件正在攻击Hadoop集群,这些勒索攻击的攻击模式都较为相似,在整个攻击过程中并没有使用任何勒索软件,也没有涉及常规漏洞,而是利用相关产品的不安全配置,使攻击者有机可乘,轻而易举地对相关数据进行操作。根据shodan.io的统计结果显示,在中国有8300多个Hadoop集群的50070端口暴露在公网上,安全问题非常严峻。

那么黑客是如何攻击Hadoop集群呢?其实,他们采用的大都是下面这些很简单的方式:

  • 如果HDFS Name Node没有用户认证,那么黑客就可以伪装成为其他用户入侵一个公开的HDFS;

  • 如果HDFS Data Node没有用户认证,那么黑客如果知道某个data block的ID,就可以任意访问DataNode上该block的数据,甚至执行一些破坏操作;

  • 如果YARN Resource Manager没有用户认证,那么黑客就可以采用伪装的方式使用这个集群的资源;

  • 如果YARN Node Manager没有用户认证,那么黑客就可以通过一些技术手段任意的杀死或更改用户的application;

  • 如果Kafka没有安全认证,那么黑客可以生成一个伪装的consumer,从而消费任何一个没有认证的producer的数据,从而造成数据泄露;

  • 此外,网络上的安全加密也很重要,否则入侵者可以监听网络数据获得机密数据。

因此,当下越来越多的安全漏洞、数据泄露等问题的爆发,使安全正成为系统选型不得不考虑的问题。星环在Hadoop集群安全性方面做了很多工作,为Transwarp Data Hub(TDH)提供了全系统的认证机制,同时提供服务对用户的授权机制,确保集群在多用户使用的情况下依然安全,保证用户资源的隔离。

本文首先会介绍TDH安全机制的基础——分布式系统常用的网络认证协议Kerberos,然后介绍用以统一管理TDH三套认证机制的Guardian服务,接着将列举TDH各服务提供的权限维护,最后会对TDH安全手册介绍,以方便用户了解TDH安全功能的使用方法。

Kerberos基本概念

Kerberos是由MIT研发的网络认证协议,已经成为分布式系统和互联网基础架构平台中最受欢迎的数据安全认证协议。Kerberos是集群服务认证系统KRB5LDAP的一部分,在安全模式下,所有服务都通过Kerberos认证(注意,Inceptor是例外,它既可以选择使用Kerberos也可以使用LDAP认证)。在详细介绍Kerberos的认证原理前,我们先对Kerberos使用一些专有词汇进行介绍。

Ticket

Ticket是在部署了Kerberos的集群中访问服务所需的凭证。Kerberos凭借Ticket中的信息来验证访问服务者的身份。用户通过Kerberos认证访问服务的过程中会需要两张Ticket:

  • Ticket-Granting-Ticket(TGT):这张Ticket需要用户手动获取,是用户获取Service Ticket的凭证。用户需要提供Kerberos principal和密码或者keytab通过Kerberos认证才能够获取TGT,获取的TGT会缓存在用户的客户端。

  • Service Ticket:访问集群中各个服务的凭证。Kerberos会自动根据客户端缓存的TGT来向用户发放Service Ticket,用户手动获取了TGT后无需自己获取Service Ticket。

Principal

在Kerberos认证系统中,principal相当于用户名,是Kerberos给予Ticket-Granting-Ticket的对象。

密码和Keytab文件

要通过Kerberos的认证获得TGT,用户需要提供principal及其对应的密码。密码可以手动输入,也可以存放在一个keytab文件中。在进行Kerberos认证时,用户可以提供principal和密码,或者principal和keytab文件。

Kerbeors认证的具体过程如下:客户机向认证服务器(AS)发送请求,要求得到某服务器的证书,然后 AS 的响应包含这些用客户端密钥加密的证书。证书的构成为:1) 服务器TGT ;2) 一个临时加密密钥(又称为会话密钥 “session key”) 。客户机将TGT(包括用服务器密钥加密的客户机身份和一份会话密钥的拷贝)传送到服务器上。会话密钥可以(现已经由客户机和服务器共享)用来认证客户机或认证服务器,也可用来为通信双方以后的通讯提供加密服务,或通过交换独立子会话密钥为通信双方提供进一步的通信加密服务。

安全的TDH集群

TDH集群中存在三套认证机制,以全面保障安全性:

  1. 集群中各个服务器本地的操作系统自带的认证,用于管理用户和集群服务对服务器的访问。

  2. 提供集群服务与用户认证的KRB5LDAP系统,用于管理集群服务之间的访问以及用户对服务的访问。

  3. Transwarp Manager的认证,用于管理用户对Transwarp Manager的访问。

这三套机制本身互相独立,而且各服务器操作系统的认证也互相独立,对集群的管理和使用带来了很大不便:管理员需要分别维护各个服务器中的信息、KRB5LDAP中的信息以及Manager中的信息,三套信息的任何不一致都可能导致用户无法访问集群,甚至服务无法正常运行。

为了能够访问一个安全模式下的集群,用户需要多套账户/密码信息,用于通过各套认证机制的认证。

TDH中的Guardian服务将提供这三套机制的统一管理,帮助管理员保证三套信息的一致性,并且让用户可以通过同一套用户名/密码登录集群中服务器、登录Transwarp Manager以及访问集群服务。因为其统一性,我们推荐管理员使用Guardian进行安全管理。与此同时,TDH兼容过去的通过命令行管理KRB5LDAP和Kerberos的方法,但是我们不推荐单独对KRB5LDAP和Kerberos进行操作,因为这样的操作不能纳入Guardian的统一管理。

KRB5LDAP简介

在TDH集群中,KRB5LDAP是用于管理集群服务之间的访问以及用户对服务的访问的认证机制,它对集群中所有服务提供Kerberos认证方式,另外还对Inceptor服务提供LDAP认证方式。LDAP是一种通过用户名和密码进行认证的机制,本文不对其原理展开详述。

在TDH集群中,KRB5LDAP的部署并不是必须的——集群中的服务无需KRB5LDAP便可以运行。但是由于它可以提供用户对服务、服务对服务访问的管理以及计算资源隔离,多租户场景下部署KRB5LDAP是十分必要的。

KRB5LDAP的部署和管理都可以通过Guardian服务进行,或者直接使用脚本手动操作。

TDH中的授权

Transwarp Data Hub集群中具有权限控制机制的服务有四个:HDFS,Hyperbase,Inceptor和Kafka。它们分别提供下列权限控制:

  • HDFS提供文件和目录的“rwx”权限控制。

  • Hyperbase提供全局、Namespace、Table、Column Family和Column Qualifier级别的“RWCXA(Read, Write, Create, Exec, Admin)”权限控制。

  • Inceptor提供基于SQL的全局、数据库、表和行级别的SELECT/CREATE/DELETE/UPDATE/INSERT权限控制。

  • Kafka提供全局或Topic级别的RWCD(READ, WRITE, CREATE, DELETE)权限控制。

关于Transwarp安全手册

我们在《Transwarp安全手册》中具体讲解了对TDH进行安全配置的方法,介绍了如何在不同的认证和授权场景下使用集群中的服务,以及如何利用我们提供的认证和授权机制更好地保护集群的资源。该手册提供于Transpedia,访问地址为https://docs.transwarp.cn/SecurityManual-chunked.html,或者可以点击原文访问。

该手册包含以下三个部分:

  • 管理员安全手册:面向集群的管理员,内容包括安全认证系统的安装和配置,以及用户/用户组/角色及它们的权限管理。

  • 用户安全手册:面向非管理员的用户,内容包括如何在开启安全模式的集群中进行用户个人信息管理。

  • 组件安全手册:介绍TDH集群中各组件的授权。

阅读该手册后,各位读者将会了解如何对集群进行安全服务安装、配置,以及在开启了安全模式后,如何使用集群及其中的各项服务,如何使系统和数据原理安全隐患。

总结与展望

本文介绍了Transwarp实现Hadoop集群安全的机制的基本情况,读者还可以通过阅读《Transwarp安全手册》进行更深的了解。

纵观Hadoop & Spark生态系统, 安全功能存在很多问题,各组件的权限系统独立混乱,缺少集中易用的账户管理系统。某些组件的权限管理还很不成熟,如Spark的调度器缺少用户的概念,不能限制具体用户使用资源的多少。Transwarp基于开源版本,在安全方面已有相当多的积累,同时我们会持续改进开发,致力于为企业用户提供一个易用、高效、安全和稳定的基础数据平台。

对此篇文章如有任何问题,欢迎以邮件形式联系我们:bigdataopenlab@transwarp.io