
[TOC]
1.企業大資料處理現狀
當今社會資料收集手段不斷豐富,行業資料大量積累,資料規模已增長到了傳統軟體行業無法承載的海量資料(百GB、TB乃至PB)級别。基于此,阿裡雲推出有了一套快速、完全托管的GB/TB/PB級資料倉庫解決方案——阿裡雲大資料計算服務(MaxCompute,原名ODPS),MaxCompute服務于批量結構化資料的存儲和計算,提供海量資料倉庫的解決方案及分析模組化服務。
企業從未像今天這樣可以輕易地存儲和使用大資料,大資料計算已經成為越來越多企業不可擷取的工作環節。然而,當您在使用大資料産品時,是否考慮過其中的安全問題呢?
慶幸的是,阿裡雲産品專家和安全專家早就想你所想急你所急,先行一步将安全特性帶入了大資料計算産品 MaxCompute。該産品在面世之初就具備強大的安全特性,讓企業可以放心地在雲上使用。讓我們一起來了解 MaxCompute的安全特性,以及如何安全地使用它吧。
2.MaxCompute優勢
2.1 示例應用場景
常見的MaxCompute使用方法是,通過 DataWorks 或 特定用戶端連接配接MaxCompute然後開展資料工作。
下圖是筆者所在安全團隊通過 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 [email protected];
GRANT List,CreateInstance on project ProjectA to USER [email protected];
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樣例,該政策允許[email protected]使用odps:Select權限通路項目ProjectA的 datas 表。
{
"version": "1",
"statement": [
{
"Effect": "Allow",
"Principal": "[email protected]",
"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 推送前務必核實。