Hadoop為什麼需要安全?Transwarp如何讓Hadoop集群免受黑客攻擊

阿福班主任 發佈 2019-12-30T10:00:31+00:00

其實,他們採用的大都是下面這些很簡單的方式:如果HDFSName Node沒有用戶認證,那麼黑客就可以偽裝成為其他用戶入侵一個公開的HDFS;如果HDFS Data Node沒有用戶認證,那麼黑客如果知道某個data block的ID,就可以任意訪問DataNode上該block

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集群中各組件的授權。

閱讀該手冊後,各位讀者將會了解如何對集群進行安全服務安裝、配置,以及在開啟了安全模式後,如何使用集群及其中的各項服務,如何使系統和數據原理安全隱患。

碼字不易,如果您覺得文章寫得不錯,

請您 1.關注作者~ 您的關注是我寫作的最大動力

2.私信我「大數據」

我將與您分享一套最新的大數據學習資源和全套開發工具

關鍵字: