开箱即用的安全方案:MaxCompute数据安全方案介绍
MaxCompute 是一個支持多租戶的統一大數據處理平臺,不同的用戶對數據安全需求不盡相同。為了滿足不同租戶對數據安全的靈活需求,MaxCompute 支持項目空間級別的安全配置,ProjectOwner 可以定制適合自己的外部賬號支持和鑒權模型并且在某種程度上保障Project的數據安全。
通常情況下,常見的開發模式為__MaxCompute+DataWorks__方式,針對這種場景下數據安全方案如下:
一、禁止數據下載到本地
禁止數據流出或下載本地
方式①:
數據保護機制也被稱之為開啟項目空間數據保護,可以通過MaxCompute console?開啟服務端禁止數據流出:
方式②:
那么更多開發者通過DataWorks進行數據分析,通常會屏顯在IDE上并且可以下載結果,這種可以通過項目管理 > 項目配置中打開“在本項目中能下載select結果”,具體如下:
?
那么這種情況下,在DataWorks查詢結果頁面就不可以通過“下載”按鈕進行下載數據到本地。
?
開啟數據保護機制后的數據流出方法
在您的Project被設置了ProjectProtection之后,您可能很快就會遇到這樣的需求:user1向您提出申請,她的確需要將某張表的數據導出您的項目空間。
而且經過您的審查之后,那張表也的確沒有泄漏您關心的敏感數據。為了不影響user1的正常業務需要,MaxCompute為您提供了在ProjectProtection被設置之后的兩種數據導出途徑。
方式①:
ProjectOwner設置ExceptionPolicy,針對已經開啟項目數據保護的進行開例外。具體方式如下(需要通過MaxCompute console操作):
這種policy不同于Policy授權(盡管它與Policy授權語法完全一樣),它只是對項目空間保護機制的例外情況的一種描述,即所有符合policy中所描述的訪問情形都可以打破ProjectProtection規則。>>>policy詳細文檔
{"Version": "1","Statement":[{"Effect":"Allow","Principal":"ALIYUN$Alice@aliyun.com","Action":["odps:Select"],"Resource":"acs:odps:*:projects/alipay/tables/table_test","Condition":{"StringEquals": {"odps:TaskType":["DT", "SQL"]}}}]}ProjectProtection是一種數據流向的控制,而不是訪問控制。只有在用戶能訪問數據的前提下,控制數據流向才是有意義的。
***?另外,可以通過show grants [for?<username>] [on type?<objectType>]?查看某用戶權限,查看是否加例外成功。
方法②:
設置TrustedProject,若當前項目空間處于受保護狀態,如果將數據流出的目標空間設置為當前空間的TrustedProject,那么向目標項目空間的數據流向將不會被視為觸犯ProjectProtection規則。可以通過如下命令方式進行設置(需通過MaxCompute console進行):
二、IP白名單控制
MaxCompute支持Project級別的IP白名單。
- 設置IP白名單后,只有白名單列表中的IP(console或者SDK所在的出口IP)能夠訪問這個Project。
- 設置IP白名單后,您需要等待五分鐘后才會生效。
- 切記在設置白名單的時候,加上自己當前機器IP,以免把自己屏蔽。
白名單中IP列表的表示格式有三種。
- 單純IP:例如101.132.236.134。
- 子網掩碼:100.116.0.0/16。
- 網段:101.132.236.134-101.132.236.144。
具體詳細教程可以參考,>>>>IP白名單控制。
更精細化的管理
當然MaxCompute Policy機制也可以實現控制某個用戶/或者角色的用戶從具體IP地址來訪問具體資源(表、UDF、資源)等。
Policy樣例:
授權用戶alice@aliyun.com只能在"2013-11-11T23:59:59Z"這個時間點之前、只能從“10.32.180.0/23”這個IP段提交請求, 只允許在項目空間prj1中執行CreateInstance, CreateTable和 List操作,禁止刪除prj1下的任何table。具體可以參考Policy文檔。
三、數據保護傘(數據脫敏)
數據保護傘為DataWorks的一個數據安全模塊,具體可以通過點擊進入進行了解,其包括數據脫敏、安全審計等。https://help.aliyun.com/document_detail/86320.html
可以針對敏感數據在DataWorks屏顯進行加**顯示,如下圖所示:
?
注意:數據保護傘是DataWorks的一個模塊,如果使用了數據保護傘且進行了數據脫敏,但是通過console進行tunnel download還是未脫敏狀態。
四、細粒度的權限管控
1、列級別LabelSecurity訪問控制
項目空間中的LabelSecurity安全機制默認是關閉的,ProjectOwner可以自行開啟。
【應用場景】
場景說明:user_profile是某項目空間中的一張含有敏感數據的表,它包含有100列,其中有5列包含敏感數據:id_card, credit_card, mobile, user_addr, birthday. 當前的DAC機制中已經授權了所有用戶對該表的Select操作。ProjectOwner希望除了Admin之外,所有用戶都不允許訪問那5列敏感數據。
ProjectOwner操作步驟如下:
set LabelSecurity=true; --開啟LabelSecurity機制 set label 2 to table user_profile(mobile, user_addr, birthday); --將指定列的敏感等級設置為2 set label 3 to table user_profile(id_card, credit_card); --將指定列的敏感等級設置為3Alice是項目空間中的一員,由于業務需要,她要申請訪問user_profile的mobile列的數據,需要訪問1周時間。項目空間管理員操作步驟如下:
GRANT LABEL 2 ON TABLE user_profile TO USER alice WITH EXP 7;更多關于列級別安全控制文檔:https://help.aliyun.com/document_detail/34604.html
2、Role Policy管理自定義Role
很多用戶會因為DataWorks內置的數據開發、運維、管理員等角色不能滿足其個性化需求,會基于ACL創建符合自己業務邏輯的角色如數據分析師、ETL開發等,基于這些role如何進行復雜的授權,如批量授予ods_開頭的表權限,但限制條件的,以及Deny類型的角色,這個時候就需要結合Role policy來精細化管理。
- 一次操作對一組對象進行授權,如所有的函數、所有以”taobao”開頭的表。
- 帶限制條件的授權,如授權只會在指定的時段內才會生效、當請求者從指定的IP地址發起請求時授權才會生效、或者只允許用戶使用SQL(而不允許其它類型的Task)來訪問某張表。
方式①:
Policy操作代碼如下所示:
方式②:
通過DataWorks-項目管理-MaxCompute配置-自定義用戶角色中進行。
?
創建步驟:
- 【新增角色】點擊新建角色,填寫角色名稱,勾選需要加入該角色的賬號(子賬號用戶)。
?
- 【角色授權】包括兩種一個是表一個是項目。以表為例:
- 選擇需要授權的表,并賦予相應的操作權限,如下所示針對具體表賦予具體權限。
?
說明:上述兩種方式最大的區別就是,role policy可以進行批量表授權,如以taobao_開頭的。但是DataWorks大的方式需要逐個表來進行篩選并配置權限。
四、JDBC 2.4(數據安全加固)
MaxCompute JDBC 2.4針對數據安全加固做了一定的挑戰,具體JDBC地址:https://github.com/aliyun/aliyun-odps-jdbc/releases
在JDBC中使用數據安全加固方案具體步驟:
說明:如果使用的版本小于JDBC 2.4,并且開啟了項目保護那么通過JDBC方式會直接報錯(無權限)。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的开箱即用的安全方案:MaxCompute数据安全方案介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习文本分类在支付宝投诉文本模型上的
- 下一篇: 张勇:新技术是阿里“五新战略”的引擎