大數據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被攻擊的新聞,給大家參考:

  • How to secure 『Internet exposed』 Apache Hadoop - Cloudera Engineering Blog
  • Hadoop集群遭遇勒索軟體攻擊
  • 全球大數據系統遭勒索,觀數科技出手對抗Hadoop風險-CSDN.NET

這都是由於hadoop集群,有一些網路拓撲中的「邊緣機器」,可以被外網訪問,於是外網黑客找到了突破口,攻進了內網hadoop集群,結果進來後發現:「哇,練內褲都沒穿「。

關於萬惡的如何偽裝成「超級用戶」,我覺得這根本不是秘密,就直接放出來了,各家公司的hadoop-admin也別恨我,大家一起想辦法把安全做好,才是正道:

  • 客戶端用戶法:Impersonate as superuser on client shell. Author.. and Authen.. In Hadoop - Cloudera Blog
  • 環境變數法:How to specify username when putting files on HDFS from a remote machine
  • 可能禁止環境變數法么? How to prevent users from modifying HADOOP_USER_NAME ?

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 社區里「安全相關知識」感興趣的同學可以看這裡:

  • [cloudera] Security Overview for an Enterprise Data Hub
  • [hortonworks] HDP Security Overview
  • Hadoop Security Concepts

推薦閱讀:

大數據那些事(31):母親Stratosphere
從頭學習大數據培訓課程 hadoop 分散式計算框架(十一)mapreducer 編程,任務工作鏈高級運行方法
哪裡有 hadoop 教程下載?
穩定和性能如何兼顧?58大數據平台的技術演進與實踐
Kafka 2017技術峰會摘要(pipeline分類)

TAG:Hadoop | 大数据 | 信息安全 |