大数据SRE的总结(9)-- 漫谈hadoop安全治理-上

大数据SRE的总结(9)-- 漫谈hadoop安全治理-上

hadoop的security,属于"数据安全"的范畴。
(本文适合有一定hadoop基础的同学阅读,小白同学可以看看大纲,关注一下思想)


大家先看两个“段子”热热身:

1.某游戏公司的数据分析同学小A,最近在为公司刚上线的爆红“吃鸡游戏”做数据分析。从数据仓库做了一个简单的查询,看看到底玩“吃鸡”游戏的女生占比有多少。突然他有一个想法:何不查查看自己的“女神”玩不玩吃鸡呢(游戏可以用微信号登陆)。他越查越来劲,结果查到“女神”经常和另一个男生每天晚上都玩2-3局, 可“女神”不是告诉自己她没有男朋友嘛,带着郁闷,小A手贱忍不住继续查,查到他们有几天晚上的开局ip地址,是同一个地址。。。


2.某数据驱动的广告公司的算法工程师同学小B,最近被领导告知:“你这半年,算法没折腾出来什么有用的,hive表怎么搞出来几百张,还弄出来几百TB的数据,你给我好好清理一下,成本部都来找我两次了“。小B刚毕业两年,对算法很有热情,也读论文也实践,但隐隐不太敢想自己10年后的职业发展。小B做研究有个特点,他喜欢从公司公共的用户行为数据仓库的“主表”中抽取出一些字段,做做聚合,导出为自己的表,一般格式都是“user_XXX_detail_xiaoB”, "click_action_XXX_xiaoB",以xiaoB为后缀。小B由于昨天刚加完班,最近睡眠不太好,一边输入删除的sql一边心里想“算法哪那么容易出成绩,再说我们公司又没有完善的AB-test系统,我的算法做出来都不好验证哟”,越想越不舒服,在删除表格时,竟忘记了加后缀,把“user_XXX_detail”,"click_action_XXX"给删掉了。过了两个小时,别的组的程序员炸锅了,说公司用户数据丢了,但不知道谁干的。算法部老大憋了半天,眼瞅瞒不住了,终于找到大数据部的同学。一番调查,幸好公司的数据有垃圾箱,于是又用了两个小时,大家终于把数据恢复回来了。小B暗自松了一口气。。

事后领导大怒,强迫大数据部门必须在2个月内把数据仓库安全体系建立好,不行都给我996!!

----------------华丽分割线--------------------

段子写的很生硬,我是想借故事,来反映现实世界中,数据安全是多么的容易发生泄漏。

更多段子,以及数据隐私相关,请参见计算广告界无敌段子王 @北冥乘海生 的《北冥乘海生:一个大数据屌丝的一天》以及其“计算广告”专栏。


数据安全,站在不同的立场,有不同的考量:

1.站在用户立场,用户甚至不希望任何公司搜集自己的隐私,但这在现实世界已经是不可能了。谁让你用了互联网这么多免费功能呢(贱贱脸?)。那么,作为用户,至少希望自己的数据不要被公司滥用和贱卖,使用要被安全的控制:让有限的人,在有限的需求场景下,去守法的使用。

2.站在公司的立场。公司希望所有公司内部数据的访问要有策略。数据是很多公司的核心资产,丢了/坏了,或者让不该访问的人访问,就意味着数据的严重不安全。

用户立场的数据安全本文不提太多,本系列主要关注公司立场的数据安全。本文也不关注诸如web-site安全,渗透测试等等,只关注hadoop安全。


---------------分割线2号-------------------


Hadoop数据安全,在大部分公司做的都不够好。有的做的不够完善,有的甚至形同虚设。hadoop作为企业级最大的数据仓库,要做好安全,有很多挑战。我最近在实践hadoop security这个领域,我希望能整个出一个体系,并且讲明白安全在大数据hadoop体系中都有什么知识,有哪些可做的事情。对于不同“国情”的企业,为什么hadoop安全方案难以实施;对不同阶段的企业,其应该把hadoop的安全实施到什么程度。


Agenda

1.没有hadoop-security,有什么问题?防谁?(上篇)
2.为了有hadoop-security,企业可以采取哪些手段?(上篇)
3.为何hadoop-security的"认证授权"难以实施,有没有其它接地气的招术(下篇)
4.企业方案选择 (下篇)



1.没有hadoop-security,会有什么问题,该防谁?

我想来想去,这个话题还是以案例来说会比较好,说的太技术没意思。当然像开头的第2个段子那种误删hive表的,确实是真实可能发生的问题。


1.1 用户不经过认证,可以伪装成”任意其它用户“,做任何事情。包括“恶意事件”。

  • 可以 delete / update 任意的hdfs文件 和 hive tables .
  • 可以提交任意的 hadoop job到任意queue ,导致集群资源紧张时,管理员无从管治.

what?这也太糟糕了吧。。事实还真就是这么苍白,很多公司的hadoop集群,都没有配置安全认证,都是裸跑。大家不要觉得这个事情很low,我后面会讲为什么security这么难以实施。

而仅仅的一个好消息:hadoop集群往往都是供公司内部的数据分析师使用,因此大多部署在公司内网,外网的人很难直接访问。但也有一些类似的hadoop被攻击的新闻,给大家参考:

这都是由于hadoop集群,有一些网络拓扑中的“边缘机器”,可以被外网访问,于是外网黑客找到了突破口,攻进了内网hadoop集群,结果进来后发现:“哇,练内裤都没穿“。

关于万恶的如何伪装成“超级用户”,我觉得这根本不是秘密,就直接放出来了,各家公司的hadoop-admin也别恨我,大家一起想办法把安全做好,才是正道:


1.2 因为1.1,hadoop管理员会管不好hadoop,严重时甚至会失控。

  • admin不知道是否可以删除一个冷数据 ( userA 伪装成“superuser”创建的文件 )
  • admin不知道计算资源的使用情况,不知道谁滥用了资源。 ( userA 伪装成“teamXuser”把作业提交到别的队列 )
  • admin 甚至不知道谁把重要的hdfs文件和hive表删掉了!!!

1.3 只要一个普通的hadoop user,就能查询公司金融交易数据表,就能在财务之前,知道公司这个月的流水,成交量,把这些信息贩卖给竞争对手。。把数据卖给金融机构。。。(inside information或许真就是这么来的哦!金融狗们。睁大你们的钛合金眼睛,盯紧你们的码农同学们。)

。。。

。。

等等


是不是看了这些毛骨悚然?不要慌,真实世界里,作恶的手段只会比以上更高明。

回来看,那么对于公司的hadoop管理员,其防范的对象不是别人,就是公司内部的程序员/分析师!



2.为了有hadoop-security,企业可以采取哪些手段

Hadoop security在业界现在似乎没有一个“即方便实施,又操作简单,且容易维护”的solution。

就拿认证来说,apache的官方社区hadoop版本为了一站式的完美解决认证问题,使用了kerberos. kerberos是非常重的一种安全方案,但也是业界工程上在认证这一块最安全的方案。 kerberos就好比关公的大刀,很重,一般人挥不起来也发挥不好,不小心还可能让战斗力下降了,很可能还不如拿一把小长矛能发挥出战斗力。

一句话概括hadoop security的实施现状:安全 和 效率/易维护性是成反比的。

我们先来看看 cloudera 和 hortonworks 对hadoop security的定义,站在巨人的肩膀上思考:

Cloudera:

cloudera把hadoop的安全级别定义为4级:

  • Level 0: 即没有任何安全,裸跑,大多数公司的集群都是从这里开始的。因为没有安全的集群搭建速度很快,容易上手,但也毫无安全可言。user可以伪装成任何其它user,甚至“超级用户”,去给namenode/datanode发送rpc请求,甚至可以直接向datanode请求读取block.
  • Level 1: 从这开始就有了基本的安全. 首先,建立起认证机制,让每个用户在访问hadoop集群时,一定证明了“自己是自己”. 然后再建立授权机制,给相应的user/group予以不同的访问权限. 当然最好还有审计工作,记录下来谁在什么时间,对集群做了什么操作,这些操作都会被严格纪录下来。 可是,cloudera认为这还不够安全,因为这些措施可以“防住”普通的用户,但并不能防住“hadoop-admin”自己,hadoop-admin还可以像我上面说的,访问公司的敏感数据。走到这一步,对人的管理会称为瓶颈。
  • Level 2: 要有更强的安全,整个集群的所有数据,或者至少是公司级的敏感数据,需要加密! 应该有统一的密钥管理中心管理着每一类数据的访问密钥。还有数据治理,也变的更加关键。数据治理要做到,哪些人访问过“hive元数据”,这些行为应该被更严格的审计!
  • Level 3: 最高级别的安全:全数据中心的所有数据,都是加密的,而且密钥管理中心做到了高可用HA. 使用/访问集群的任何行为,都会被审计,并且达到了行业的审计标准. 审计还不光光包括hadoop相关的组件,任何使用hadoop的程序,于hadoop相关的程序,都应该被严格的审计。 (-,-,咋不上天呢)
cloudera-hadoop security levels

Hortonworks:

hortonworks把hadoop的安全定义为5个方面:

  1. 管理中心。 用来统一设置集群的安全策略。
  2. 认证。 证明你是你。
  3. 授权。 你能干什么。
  4. 审计。 你干了什么。
  5. 数据保护,数据加密。 怎么加密,怎么管理加密。

但hortonworks并没有给出具体的安全级别。

hortonworks hadoop security


纵观cloudera & hortonworks社区的security文章,hadoop security的知识范畴,分为下面5个领域。他们之间既有相互的依赖,又有其解决相应问题的独到之处,下篇我会分开来慢慢扯淡:

1.authentication & authorization (算法隔离,秘钥,加密算法)

2.hadoop-client management (物理隔离)

3.audit(审计)

4.数据加密 (密钥管理中心及其高可用)

5.自动化管理后台


我会慢慢的细讲这几个方面,以及为什么不同的公司,实施这些安全方面的工作如此之难。


最后,对cloudera&hortonworks 社区里“安全相关知识”感兴趣的同学可以看这里:

编辑于 2018-02-07

文章被以下专栏收录