大數據處理也要安全--關於MaxCompute的安全科普

圖片描述
[TOC]html

1.企業大數據處理現狀
當今社會數據收集手段不斷豐富,行業數據大量積累,數據規模已增加到了傳統軟件行業沒法承載的海量數據(百GB、TB乃至PB)級別。基於此,阿里雲推出有了一套快速、徹底託管的GB/TB/PB級數據倉庫解決方案——阿里雲大數據計算服務(MaxCompute,原名ODPS),MaxCompute服務於批量結構化數據的存儲和計算,提供海量數據倉庫的解決方案及分析建模服務。算法

企業從未像今天這樣能夠輕易地存儲和使用大數據,大數據計算已經成爲愈來愈多企業不可獲取的工做環節。然而,當您在使用大數據產品時,是否考慮過其中的安全問題呢?shell

慶幸的是,阿里雲產品專家和安全專家早就想你所想急你所急,先行一步將安全特性帶入了大數據計算產品 MaxCompute。該產品在面世之初就具有強大的安全特性,讓企業能夠放心地在雲上使用。讓咱們一塊兒來了解 MaxCompute的安全特性,以及如何安全地使用它吧。數據庫

2.MaxCompute優點
2.1 示例應用場景
常見的MaxCompute使用方法是,經過 DataWorks 或 特定客戶端鏈接MaxCompute而後開展數據工做。json

下圖是筆者所在安全團隊經過 DataWorks 使用 MaxCompute 功能,對態勢感知日誌進行深度安全分析的示例。由於 MaxCompute 支持批量操做和做業定義,所以安全團隊能夠將日誌批量導入系統並執行安全分析,最終輸出安全分析結果。整個流程設計徹底圖形化實現,界面簡潔,操做方便。安全

圖片描述

2.2 MaxCompute基礎特性
MaxCompute爲用戶提供完善的數據導入方案以及多種經典的分佈式計算模型,助用戶快速解決海量數據的計算問題,有效下降企業成本並保障數據安全。用戶能夠沒必要關心分佈式計算和維護細節,即可輕鬆完成大數據分析。服務器

歸納地說(從官方抄來了),MaxCompute有以下特性優點:網絡

大規模計算存儲
MaxCompute適用於100GB以上規模的存儲及計算需求,最大可達EB級別。架構

多種計算模型
MaxCompute支持SQL、MapReduce、Graph等計算類型及MPI迭代類算法。運維

低成本
與企業自建專有云相比,MaxCompute的計算存儲更高效,能夠下降20%-30%的採購成本。

安全性
MaxCompute具有強數據安全特性:MaxCompute已穩定支撐阿里所有離線分析業務7年以上,提供多層沙箱防禦及監控。

2.3 MaxCompute安全特性
MaxCompute擁有完備的措施來保證用戶的數據安全,產品在最開始設計階段就已經考慮到多租戶環境下的安全問題。除了項目的建立者外的其餘人(包括阿里雲的員工),未經受權沒法看到用戶的數據。

MaxCompute 有健全的安全體系,支持多種權限設置方法,包括基於 ACL 和角色管理實現的對 Project 級別、表級別的受權,保證只有通過受權的用戶才能訪問到數據。

MaxCompute 安全沙箱系統,能夠防止其餘的客戶惡意操做。
使用 Access Id/Key 做爲角色驗證的方法,和阿里雲帳號區分開,若是出現泄露能夠很快禁用,不會影響其餘 Access Id/Key 的使用。

在 DataWorks 控制檯甚至能夠直接設置 MaxCompute 項目高級參數,包括多個安全特性。

圖片描述

重點安全配置項以下:

使用ACL受權
容許對象建立者訪問對象
容許對象建立者受權對象
項目空間數據保護
子帳號服務
使用Policy受權
啓動列級別訪問控制
3.MaxCompute 綜合安全防禦機制
3.1 租戶隔離與訪問控制
項目空間(Project)是MaxCompute的基本組織單元,它相似於傳統數據庫的Database或Schema的概念,是進行多用戶隔離和訪問控制的主要邊界。

一個用戶能夠同時擁有多個項目空間的權限,經過安全受權,能夠在一個項目空間中訪問另外一個項目空間中的對象,例如表(Table)、資源(Resource)、函數(Function)和實例(Instance)。

MaxCompute 經過身份鑑別、訪問控制、項目內權限管理和項目間訪問控制實現總體架構安全,在具體實現方面能夠經過 ACL、Role、Policy 等機制實現即時控制,爲大數據使用解除全部安全顧慮。

一個完整的 MacCompute 資源使用權限校驗過程以下圖所示:

圖片描述

只有完成上述訪問控制策略鏈路上每一個節點的安全檢查,用戶才能訪問MaxCompute項目權限內的資源。

身份鑑別經過 AK/AS完成,這在建立項目時須要配置,網絡訪問控制經過 IP 地址白名單控制(須要手工啓用)、項目之間或項目內的訪問控制經過 MaxComputer 的鑑權機制來實現。

3.2 基於角色的權限控制矩陣
MaxCompute 項目空間有不一樣的用戶角色,如:項目擁有者、管理員、開發者等。
雖然可使用Console 和開發工具對接 Maxcompute,可是圖形界面的 DataWorks 仍然是大數據計算場景使用頻發的交互接口,DataWorks爲MaxCompute提供一站式的數據同步、業務流程設計、數據開發、管理和運維功能。

官方視頻裏也有一段針對DataWorks用戶權限和MaxCompute項目的角色關係映射表,供參考。

圖片描述

在 DataWorks 控制檯上,用戶在項目空間內有不一樣角色,分別是:項目擁有者、項目管理員、開發、運維、部署、訪客和安全管理員。阿里雲 MaxCompute 項目對權限組和權限列表作了精細化的權限控制,經過Web 控制檯項目管理界面能夠查看到詳細的DataWorks角色與權限矩列表。相關權限組以下:

數據管理
發佈管理
按鈕控制
代碼開發
函數開發
節點類型控制
資源管理
工做流開發
數據集成
每個不一樣給的角色有哪些權限,在權限列表中一目瞭然。

圖片描述

3.3 項目內保護機制-受權
當有新用戶加入項目組時,項目管理員能夠經過 Web 控制檯或 MaxCompute Console 將新用戶加入項目組,並受權其訪問項目資源。

被受權的帳號既能夠是在www.aliyun.com上註冊過的有效郵箱地址,也能夠是執行此命令的雲帳號的某個RAM 子帳號。若是是經過支付寶、淘寶等帳號聯登的帳戶,須要從用戶中心獲取帳號名,以下圖所示:

圖片描述

MaxCompute只容許主帳號將自身的RAM子帳號加入到項目空間中,不容許加入其它雲帳號名下的RAM子帳號。

簡單地說:MaxCompute項目全部者能夠爲本身的 RAM 帳號受權,能夠爲外部阿里雲主帳號受權,但不能爲外部帳號的子帳號受權。

舉例來講:項目 A 中有新成員張三加入,此時須要給張三項目操做權限。

基本操做步驟以下:項目 Owner 執行以下命令,完成用戶添加,並執行 GRANT 命令實現 ACL 權限設定。

USE ProjectName;
ADD USER ALIYUN$zhangsan@aliyun.com;
GRANT List,CreateInstance on project ProjectA to USER ALIYUN$zhangsan@aliyun.com;

3.4 項目內保護機制-防數據下載
對於一些數據敏感類項目,項目全部者經過 MaxCompute控制檯能夠爲項目設置數據保護功能,如:防止下載查詢結果。

具體操做能夠在項目配置界面,開啓【在本項目中能下載select結果:】的開關。

圖片描述

經設置後,數據工程師將不能直接下載大數據平臺的 select 查詢結果。

3.5 項目內保護機制-沙箱出棧訪問白名單
大數據計算平臺不只僅支持簡單的查詢操做,還支持部署 Python、Jar 等工具包。此類用戶自定義工具組件,具有網絡訪問能力。爲防止腳本程序內置後門或被攻擊者利用,項目管理者能夠設置計算環境能夠訪問的外部 IP 地址白名單,加強數據安全防禦。

經過Web 控制檯項目管理界面,能夠在【沙箱白名單】菜單,配置shell任務能夠訪問的IP地址或域名。

圖片描述

添加成功後效果以下:

圖片描述

但設置 IP 白名單後,沙箱環境只能請求首選服務器,其它全部行爲都將被攔截,效果如圖:

圖片描述

3.6 項目間保護機制-項目保護開關
一個典型的應用場景是:Project B 項目的用戶李四要加入 Project A項目,A 的項目全部者爲李四開通了訪問權限。

這個引用場景的風險是:李四有多種方法將 Project A數據導出,其中最簡單的是經過下面語句轉出數據。

CREATE TABLE ProjectB.Result AS SELECT * FROM ProjectA.SensitiveData
若是Project A的數據敏感度很高,不但願外流;那麼管理員能夠爲該項目設置 ProjectProtection 開關(`SET ProjectProtection=true;
`),阻止數據外流。一旦開啓 ProjectProtection開關,該項目的數據只能流入不能流出,任何直接或間接的數據導出方式都將失效。用戶李四隻能在項目內進行資源訪問,不能在項目間流轉數據。

3.7 項目間保護機制-例外與互信
企業用戶的需求老是由特定場景決定的。雖然 MacCompute 支持項目保護功能,但不排除在運營過程當中出現仍然須要與其它項目互訪,或受信外部項目訪問的狀況。爲此,阿里雲MacCompute爲系統增長了ProjectProtection模式下的例外機制和項目互信機制。

3.7.1 例外策略機制
經過編寫策略文件 PolicyFile並將其加入到項目Protection 的裏外中,能夠實現項目空間例外訪問控制策略,命令以下:

USE ProjectA;
SET ProjectProtection=true with exception policy.json;
3.7.2 項目互信與互信組
若因項目需求關係,通過嚴格審查,肯定 Project A 和 Project B 項目之間能夠徹底互信,互相訪問,則經過設置信任項目的方式,能夠設置 A、B 項目互信,實現數據互訪。具體操做指令以下:

USE ProjectA;
ADD trustedproject ProjectB

經上述設置後,A 和 B 在同一個受信域內,容許各自受權用戶的互相訪問。若是出現 A 信任 B、B 信任的狀況,則代表 A、B、C 三者是徹底互信的,能夠直接設置一個項目互信組 TrustedGroup,一樣能知足項目互信要求。

3.8 Policy 受權機制
如此前章節介紹,項目訪問控制除了標準的 ACL 控制策略外,還有基於 Policy 的受權機制。Policy 主要解決 ACL 沒法實現的一些複雜場景受權,一般能夠實現:一次操做對一組受訪問課題資源的受權,帶限制條件的受權等。該受權機制能夠更加方便靈活地定義用戶對數據的訪問權限控制。如下是一個簡單的實例:

如下是參考Policy的JSON樣例,該策略容許user_b@aliyun.com使用odps:Select權限訪問項目ProjectA的 datas 表。

{
"version": "1",
"statement": [

{
  "Effect": "Allow",
  "Principal": "ALIYUN$user_b@aliyun.com",
  "Action": [
    "odps: Select"
  ],
  "Resource": "acs: odps: *: projects/ProjectA/tables/datas",
  "Condition": {
    "StringEqual": {
      "odps: TaskType": [
        "DT",
        "SQL"
      ]
    }
  }
}

]
}

典型的 Policy 使用方法以下圖:

GET POLICY;
PUT POLICY policy.json;
PUT POLICY policy.json on role <role name>;
3.9 LabelSecurity實現列級別訪問控制
基於標籤的安全(LabelSecurity)是項目空間級別的一種強制訪問控制策略(Mandatory Access Control, MAC),它的引入是爲了讓項目空間管理員能更加靈活地控制用戶對列級別敏感數據的訪問。

LabelSecurity須要將數據和訪問數據的人進行安全等級劃分。在政府和金融機構,通常將數據的敏感度標記分爲四類:0級 (不保密, Unclassified), 1級 (祕密, Confidential), 2級 (機密, Sensitive), 3級 (高度機密, Highly Sensitive)。MaxCompute也遵循這一分類方法。ProjectOwner須要定義明確的數據敏感等級和訪問許可等級劃分標準,默認時全部用戶的訪問許可等級爲0級,數據安全級別默認爲0級。

一個典型的應用場景:某數據表格中存放了大量用戶基本信息,字段安全標記爲0,1,,也存放了一些用戶手機號等隱私信息,字段安全標記爲3。此時,若是用戶 A 的訪問許可等級爲1,則該用戶只能查詢等級爲0和1的數據,而不能查詢等級爲2和3的數據。

圖片描述

LabelSecurity對敏感數據的粒度能夠支持列級別,管理員能夠對錶的任何列設置敏感度標記(Label),一張表能夠由不一樣敏感等級的數據列構成。

對於view,也支持和表一樣的設置,即管理員能夠對view設置label等級,view的等級和它對應的基表的label等級是獨立的,在view建立時,默認的等級也是0。

LabelSecurity默認安全策略
在對數據和user分別設置安全等級標記以後,LabelSecurity的默認安全策略以下:
(No-ReadUp) 不容許user讀取敏感等級高於用戶等級的數據,除非有顯式受權。
(Trusted-User) 容許user寫任意等級的數據,新建立的數據默認爲0級(不保密)

4.企業敏感數據處理實踐
某企業底層數據系統中存放有各種敏感信息,包括:用戶名、手機號、身份證號碼等。數據分析團隊須要對數據進行挖掘,那麼下面的問題將不得不面對:

哪些數據須要加密?
敏感數據如何存儲和使用?
若是兼顧業務須要和數據安全保護?
根據上文對MaxCompute安全特性的介紹,咱們能夠按照以下策略開展。

對於永遠都不能明文顯示的信息,應該在業務數據寫入 RDS、MongoDB 等系統時就直接加密,不要等到寫入MaxCompute 才加密。數據安全保護要在全生命週期內開展,不只僅是大數據計算環節。此類信息一般包括:身份證全字符、銀行卡全字符、企業核心業務敏感字段等。
對於業務分析要用到的通常敏感數據,建議遵循最小權限原則,在落入 MaxCompute 時進行加密,如登陸名、Email、手機號等。只有在真正須要的時候才作解密動做。好比:抽取1000名活躍用戶進行獎品發放和短信通知。這個場景只適合經過大數據平臺算出 UID,而後經過特定的業務系統完成數據提取。
對安全性要求高的表,應啓用標記安全功能實現列表及訪問控制;
對於不須要使用,但又不能明文計算的數據能夠考慮摘要、截斷或掩碼等方式進行預處理,如:手機號前 X 位,郵箱 SHA 摘要等;
如非必須,請勿開通 select 結果下載功能;
若有可能,應經過安全的環境進行大數據訪問,如:堡壘機、雲主機等;
覈查項目互信機制和互信清單,確保僅受權用戶才能使用;
覈查發佈到 MaxCompute 環境中的Jar、Python 等文件包;
爲項目設置不一樣角色的人員,按需設置設置權限;
按期審計項目受權清單,確認權限控制合理;
區分開發環境和生產環境,Job 推送前務必覈實。
圖片描述

5.參考資料
https://help.aliyun.com/docum...
https://help.aliyun.com/docum...
https://help.aliyun.com/docum...

相關文章
相關標籤/搜索