開箱即用的安全方案:MaxCompute數據安全方案介紹

摘要: MaxCompute 是一個支持多租戶的統一大數據處理平臺,不一樣的用戶對數據安全需求不盡相同。爲了知足不一樣租戶對數據安全的靈活需求,MaxCompute 支持項目空間級別的安全配置,ProjectOwner 能夠定製適合本身的外部帳號支持和鑑權模型而且在某種程度上保障Project的數據安全。html

MaxCompute 是一個支持多租戶的統一大數據處理平臺,不一樣的用戶對數據安全需求不盡相同。爲了知足不一樣租戶對數據安全的靈活需求,MaxCompute 支持項目空間級別的安全配置,ProjectOwner 能夠定製適合本身的外部帳號支持和鑑權模型而且在某種程度上保障Project的數據安全。git

一般狀況下,常見的開發模式爲__MaxCompute+DataWorks__方式,針對這種場景下數據安全方案以下:github

1、禁止數據下載到本地
禁止數據流出或下載本地
方式①:
數據保護機制也被稱之爲開啓項目空間數據保護,能夠經過MaxCompute console 開啓服務端禁止數據流出:api

set projectProtection=true
--設置ProjectProtection規則:數據只能流入,不能流出。
--默認時,ProjectProtection不會被設置,值爲false。
方式②:
那麼更多開發者經過DataWorks進行數據分析,一般會屏顯在IDE上而且能夠下載結果,這種能夠經過項目管理 > 項目配置中打開「在本項目中能下載select結果」,具體以下:安全

圖片描述

那麼這種狀況下,在DataWorks查詢結果頁面就不能夠經過「下載」按鈕進行下載數據到本地。運維

圖片描述

開啓數據保護機制後的數據流出方法
在您的Project被設置了ProjectProtection以後,您可能很快就會遇到這樣的需求:user1向您提出申請,她的確須要將某張表的數據導出您的項目空間。函數

並且通過您的審查以後,那張表也的確沒有泄漏您關心的敏感數據。爲了避免影響user1的正常業務須要,MaxCompute爲您提供了在ProjectProtection被設置以後的兩種數據導出途徑。工具

方式①:
ProjectOwner設置ExceptionPolicy,針對已經開啓項目數據保護的進行開例外。具體方式以下(須要經過MaxCompute console操做):大數據

SET ProjectProtection=true WITH EXCEPTION <policyFile>
這種policy不一樣於Policy受權(儘管它與Policy受權語法徹底同樣),它只是對項目空間保護機制的例外狀況的一種描述,即全部符合policy中所描述的訪問情形均可以打破ProjectProtection規則。>>>policy詳細文檔url

{

"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進行):

list trustedprojects;
--查看當前project中的全部TrustedProjects
add trustedproject <projectname>;
--在當前project中添加一個TrustedProject
remove trustedproject <projectname>;
--在當前project中移除一個TrustedProject
2、IP白名單控制
MaxCompute支持Project級別的IP白名單。

設置IP白名單後,只有白名單列表中的IP(console或者SDK所在的出口IP)可以訪問這個Project。
設置IP白名單後,您須要等待五分鐘後纔會生效。
切記在設置白名單的時候,加上本身當前機器IP,以避免把本身屏蔽。
setproject odps.security.ip.whitelist=101.132.236.134,100.116.0.0/16,101.132.236.134-101.132.236.144;
白名單中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樣例:

{

"Version": "1",
"Statement":
 [{
    "Effect":"Allow",
    "Principal":"ALIYUN$alice@aliyun.com",
    "Action":["odps:CreateTable","odps:CreateInstance","odps:List"],
    "Resource":"acs:odps:*:projects/prj1",
    "Condition":{
        "DateLessThan": {
            "acs:CurrentTime":"2013-11-11T23:59:59Z"
        },
        "IpAddress": {
            "acs:SourceIp":"10.32.180.0/23"
        }
    }
},
{
    "Effect":"Deny",
    "Principal":"ALIYUN$alice@aliyun.com",
    "Action":"odps:Drop",
    "Resource":"acs:odps:*:projects/prj1/tables/*"
}]
}

受權用戶alice@aliyun.com只能在"2013-11-11T23:59:59Z"這個時間點以前、只能從「10.32.180.0/23」這個IP段提交請求, 只容許在項目空間prj1中執行CreateInstance, CreateTable和 List操做,禁止刪除prj1下的任何table。具體能夠參考Policy文檔。

3、數據保護傘(數據脫敏)
數據保護傘爲DataWorks的一個數據安全模塊,具體能夠經過點擊進入進行了解,其包括數據脫敏、安全審計等。https://help.aliyun.com/docum...

能夠針對敏感數據在DataWorks屏顯進行加**顯示,以下圖所示:

圖片描述

注意:數據保護傘是DataWorks的一個模塊,若是使用了數據保護傘且進行了數據脫敏,可是經過console進行tunnel download仍是未脫敏狀態。

4、細粒度的權限管控
一、列級別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);
--將指定列的敏感等級設置爲3
Alice是項目空間中的一員,因爲業務須要,她要申請訪問user_profile的mobile列的數據,須要訪問1周時間。項目空間管理員操做步驟以下:

GRANT LABEL 2 ON TABLE user_profile TO USER alice WITH EXP 7;
更多關於列級別安全控制文檔:https://help.aliyun.com/docum...

二、Role Policy管理自定義Role
不少用戶會由於DataWorks內置的數據開發、運維、管理員等角色不能知足其個性化需求,會基於ACL建立符合本身業務邏輯的角色如數據分析師、ETL開發等,基於這些role如何進行復雜的受權,如批量授予ods_開頭的表權限,但限制條件的,以及Deny類型的角色,這個時候就須要結合Role policy來精細化管理。

一次操做對一組對象進行受權,如全部的函數、全部以」taobao」開頭的表。
帶限制條件的受權,如受權只會在指定的時段內纔會生效、當請求者從指定的IP地址發起請求時受權纔會生效、或者只容許用戶使用SQL(而不容許其它類型的Task)來訪問某張表。
方式①:
Policy操做代碼以下所示:

get policy --讀取項目空間的Policy
put policy <policyFile> --設置(覆蓋)項目空間的Policy
get policy on role <roleName> --讀取項目空間中某個角色的Policy
put policy <policyFile> on role <roleName> --設置(覆蓋)項目空間中某個角色的Policy
更多關於Policy的介紹以及操做詳見文檔:http://www.aiwanba.net/plugin...

方式②:
經過DataWorks-項目管理-MaxCompute配置-自定義用戶角色中進行。

圖片描述

建立步驟:

【新增角色】點擊新建角色,填寫角色名稱,勾選須要加入該角色的帳號(子帳號用戶)。
圖片描述

【角色受權】包括兩種一個是表一個是項目。以表爲例:
圖片描述

選擇須要受權的表,並賦予相應的操做權限,以下所示針對具體表賦予具體權限。
圖片描述

說明:上述兩種方式最大的區別就是,role policy能夠進行批量表受權,如以taobao_開頭的。可是DataWorks大的方式須要逐個表來進行篩選並配置權限。

4、JDBC 2.4(數據安全加固)
MaxCompute JDBC 2.4針對數據安全加固作了必定的挑戰,具體JDBC地址:https://github.com/aliyun/ali...

在JDBC中使用數據安全加固方案具體步驟:
下載JDBC 2.4(建議)
配置jdbc url,一般以下制定Tunnel endpoint地址,如 jdbc:odps:http://service.cn.maxcompute....://dt.cn-shanghai.maxcompute.aliyun-inc.com。
具體region對應的MaxCompute Endpoint和Tunnel Endpoint能夠參考文檔:https://help.aliyun.com/docum...開啓項目保護SET ProjectProtection=true,不須要加exception例外,具體能夠想見項目保護機制章節。打開控制返回數據條數:setproject READ_TABLE_MAX_ROW=1000;基於JDBC的工具進行查詢,數據返回條數會控制在1000條之內。說明:若是使用的版本小於JDBC 2.4,而且開啓了項目保護那麼經過JDBC方式會直接報錯(無權限)。

相關文章
相關標籤/搜索