韩磊 陈含 郝晓雪
(中国移动(深圳)有限公司,广东 深圳 518048)
近几年,如果谈到IT科技界最火热的话题,“大数据”应属当仁不让。随着互联网的高速发展,大量的信息快速流通,人们之间的信息交流越来越密切,生活也越来越便利,大数据科技就是这个高科技时代的产物。企业利用大数据科技对大量消费者消费习惯进行统计分析,利用大数据进行精准营销;在互联网发展的浪潮中,大数据科技可以促进传统企业的信息化转型,充分利用大数据科技挖掘企业价值;大数据科技可以促进企业科技创新,孕育新的企业发展动力。阿里巴巴创办人马云曾经说过,未来的时代将不是IT时代,而是DT的时代,DT就是Data Technology数据科技,显示大数据在阿里巴巴集团具有举足轻重的地位。
众所周知,任何IT科技的发展都离不开底层架构的支持,大数据科技的深入发展离不开Hadoop等大数据底层平台技术的支持,大数据的巨量性、多样性、时效性、准确性等特性都要求我们需要有一个性能稳定、信息安全的基础平台作为支撑。这时,Hadoop底层大数据集群的平台安全问题就变得尤为突出,本文正是基于此对企业级大数据平台安全管理机制进行研究。
在企业级大数据集群环境中,通常会采用多租户共享Hadoop大数据集群的模式。这种模式可以有效缩减集群数量,便于集中化、统一化管理,减少人力维护成本,同时多租户共享集群避免了数据过度冗余进而达到节约硬件成本的目的。
多租户共享大数据集群是指:
(1)通常我们把一个集群使用者,称作一个租户。租户可能以项目或不同的应用划分。每个租户相当于一个资源池,管理员为租户配置了一定的集群资源,租户下的所有用户共用资源池内的资源,多个租户共同使用一个Hadoop大数据集群;
(2)大数据集群管理员为每个独立的租户分配独有的yarn队列,每个yarn队列包含一定量的集群资源,每个租户只能使用指定yarn队列中已分配的资源;
(3)HDFS存储多种类型的数据,有公共数据、私有数据,每个租户组对应不同的访问权限,要求特定租户只能访问自己拥有权限的数据。
多租户共享Hadoop大数据集群给企业带来巨大的硬件成本和维护成本优势。同时由于大数据集群的共享性、数据隔离性、特有性等特点,要求其必须拥有很高的账户安全管理和数据权限管理,同时还要兼顾大规模数据集群的统一化、集中化管理问题。这些都决定了Hadoop集群的安全管理机制变得格外重要和突出,下文正是基于多租户共享Hadoop大数据集群的安全问题展开探究。
当前大数据安全管理主要包含两部分:用户认证或授权和Hadoop组件资源的权限控制。
用户认证是保障多租户大数据集群安全机制的第一道屏障,在这一步主要实现用户需要通过一系列安全策略对自身进行认证(主要通过Kerberos实现,后续会有介绍),只有通过认证的账号才能进行下一步操作。简单总结这一步主要功能是实现:证明你是你的问题。
当前主流的大数据安全认证机制,主要是通过Kerberos进行用户认证。Kerberos认证机制使得集群中的节点是可信赖的。Kerberos将认证秘钥放到大数据集群的节点上。集群运行时,集群内的节点通过秘钥进行认证。只有通过Kerberos认证节点,才能正常使用集群。没有得到秘钥信息或者冒充集群身份的用户无法与集群内部的其他节点通信,从而无法使用集群资源,防止了恶意登录或篡改Hadoop集群的问题,保证了Hadoop大数据集群的安全性、可靠性。
资源权限控制指的是租户对大数据平台组件的使用权限的管理,对租户权限进行严密的权限控制,按照实际租户需要分配特定的使用权限。其中比较常见的是针对如HDFS、hbase、Kafka和yarn队列等一系列组件的权限控制。Hadoop本身集成了Apache Sentry或Apache Ranger实现大数据集群组件资源的权限管理。简单说明一下:Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Apache Ranger是hortonworks提供一个集中式安全管理框架,它可以对Hadoop生态的组件如Hive、Hbase进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松地通过配置策略来控制用户访问HDFS文件夹、HDFS文件、数据库、表、字段权限。这些策略可以由不同的用户和组来设置,同时权限可与Hadoop无缝对接。
目前主流的企业级Hadoop大数据集群安全机制,主要存在以下几点问题:
(1)通常企业级的Hadoop集群规模巨大,几百个节点、上千个节点的集群是比较常见的。尤其是在多租户的集群上,Kerberos这种需要独占操作系统静态kinit自己的Principal的方式,完全无法接受。试想一下,我们要在成百上千台服务器上执行kinit操作,繁重、重复的工作非常枯燥、无味,会让管理员崩溃。
(2)企业级大数据集群中常见的方案是使用LDAP做认证,单独使用Kerberos比较小众,因此采用Kerberos+LDAP是比较理想的方式,LDAP作为总的用户认证中心,使用thrift server的用户通过LDAP做认证。按照传统的Hadoop安全认证方式,服务间认证使用Kerberos,hive JDBC使用LDAP认证,但实际存在一个问题:Kerberos和LDAP两套系统是互相独立的。例如:用户A通过LDAP登录到hive上对数据做了一下分析查询,然后想再将自己的spark应用提交到集群执行,会发现Kerberos中根本就不存在此用户A!按照传统的操作方式,我们需要在Kerberos里再添加一遍用户A来解决,一套系统中有两个用户管理,显然是不可接受的。
基于上面提到的现有大数据安全方案的两点不足,我们主要思考以下两个问题:
(1)如何实现Kerberos账户认证、LDAP账号和操作系统账号的统一化、集中化管理问题;
(2)如何实现认证账户与Hadoop大数据集群组件Apache Ranger(或Apache Sentry)权限管理的有效结合问题。
在正式介绍本文提出的解决方案时,我们先简单了解一下FreeIPA和Ranger这两个核心概念。
FreeIPA是Redhat公司推出的开源用户统一管理软件,其集成了 Kerberos、LDAP、DNS、NTP和 CERTIFICATE 服务。图1为FreeIPA的架构图。
图1 FreeIPA架构图
从图1可以看出,FreeIPA提供了WEB、命令行两种管理工具。通过WEB或者命令行添加用户,只需要指定用户名,即可生成LDAP、Kerberos、Linux三个账户,且三个用户的密码和其他信息都是一致的,体现出了FreeIPA的集中化管理和统一性。其主要实现了Hadoop大数据集群的用户认证工作。
Ranger实现Hadoop集群资源的权限管理,通过租户权限管理,实现了租户资源级权限、功能级权限两类权限管理,实现对数据资源、计算资源、管理平台功能资源的基于多租户的权限管控,确保租户内的资源、数据、任务状态等访问安全。
图2 Ranger架构图
Ranger提供统一的管理界面,包括策略管理、审计查看、插件管理,可以支持HDFS、Hive、Hbase、Kafka、Knox、Yarn、Storm、Atlas组件,提供细粒度的权限控制,表1为Ranger可以实现的权限控制粒度表(部分)。
表1 Ranger权限控制粒度表(部分)
Ranger的访问权限定义了“用户-资源-权限”这三者间的关系,同时内置了LDAP、文件的用户同步机制,Hadoop+Ranger+FreeIPA(LDAP+Kerberos)的完美结合,保证了大数据集群从用户认证到组件权限控制的整体方案。
本文利用FreeIPA的账户集中化、统一化管理特性,通过WEB或者命令行添加用户,同时生成LDAP、Kerberos、Linux三个账户,且三个用户的密码和其他配置信息都是一致的。避免了传统账户认证方式两套账户管理系统(Kerbero认证系统和LDAP认证系统)带来的维护不便,从很大程度上减轻了大数据集群账户维护的复杂度。在大数据集群的日常维护过程中,账户的维护是最复杂和频繁的,从账户的创建到回收,整个生命周期都可以通过FreeIPA的用户密码策略进行设置。用户到期后自动失去认证资格,只有再次申请延期或开放,才能继续使用,可以从根本上对账号的生命周期进行控制。
通过Hadoop Ranger对集群组件权限进行控制,前面已经提到Ranger提供统一的管理界面,包括策略管理、审计查看、插件管理,可以支持 HDFS、Hive、Hbase、Kafka、Knox、Yarn、Storm、Atlas组件,提供细粒度的权限控制。
图3 FreeIPA和Ranger的Hadoop大数据集群架构图
从FreeIPA和Ranger的Hadoop大数据集群架构图(图3)中可以看到,任何通过大数据管理平台的请求,首先需要通过FreeIPA集成的Kerberos服务完成大数据集群的用户身份认证,只有通过认证的账号才能使用大数据集群内的节点,没有通过认证的用户,无法得到服务授权,没法使用大数据集群内资源。在完成Kerberos认证的同时,由于Kerberos用户也是LDAP账户和Linux系统账户,所以一次认证就完成了在大数据集群的整个生态中的认证工作。在此需要说明的是,因为通过FreeIPA创建的账号是Linux系统账号、LDAP账号、Kerberos账号统一的,所以根本不存在非法账号的认证问题。
经过FreeIPA认证的用户,在向集群申请资源时,遵循Ranger配置的访问策略和资源权限,满足策略规则的用户成功分配集群资源,不满足权限配置的无法访问集群资源。例如:用户在请求访问Hive中test数据库时,首先需要经过系统Kerberos认证,确认是否为LDAP域内的账户,如果用户通过认证,继续请求Hadoop集群内组件资源,检查Ranger中是否配置相应test数据库的访问权限,可以定义create、select、update、drop、index、lock、alter等控制策略,然后按照已经配置好的权限策略进行对应的操作即可。
本文对企业级大数据集群安全机制进行了初步的探究,不同的企业采用的方案可能各不相同,尤其在账户集中化认证方面,常用的OpenLDA方案不尽相同,不过最终的目标是一致的。本文通过FreeIPA实现大数据集群前端账号的集中化管理和统一策略管理,保障了集群前端账户层面的安全性。实现了前端LDAP账号、Linux系统账号、Kerberos认证账号的统一化管理。真正的Hadoop资源、管理权限是通过Ranger来控制的。通过操作Ranger控制台,管理员可以轻松通过配置策略来控制用户访问HDFS文件夹、HDFS文件、数据库、表、字段权限。本文使用FreeIPA+Ranger的方式,实现了企业级Hadoop大数据集群安全管理的整体化方案。限于个人水平有限,本文中的不当之处也在所难免,真诚希望请广大同行不吝赐教,批评指正。在此,衷心感谢本文中借鉴的一切参考材料的作者。
[1]Apache Ranger ™ [EB/OL]. 2017- 12- 15. http://ranger.apache.org/.
[2]sherlockyb.从kinit 到kerberos 安全机制[EB/OL].2017-6-4.http://www.jianshu.com/p/2039fe8c62a1.
[3]安装ipa-server[EB/OL].2012-7-16.http://purplegrape.blog.51cto.com/1330104/932818.
[4]Apache Ranger 剖析:Hadoop 生态圈的安全管家[EB/OL].2016- 8- 16. http://blog. csdn. net/zhangjun2915/article/details/44830231.
[5]Dong. Hadoop Kerberos 安全机制介绍[EB/OL]. http://dongxicheng.org/mapreduce/hadoop-kerberos-introduction/
[6]Redhat. LINUX DOMAIN IDENTITY, AUTHENTICATION,AND POLICY GUIDE[EB/OL]. https://access.redhat.com/documentation/en - US/Red_Hat_Enterprise_Linux/7/html/Linux_Domain_Identity_Authentication_and_Policy_Guide/index.html.
[7]Tom White.Hadoop权威指南(第三版)[M].北京:清华大学出版社,2014.