共計 5174 個字符,預計需要花費 13 分鐘才能閱讀完成。
這篇文章主要講解了“MaxCompute 數據安全方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“MaxCompute 數據安全方法是什么”吧!
MaxCompute
是一個支持多租戶的統一大數據處理平臺,不同的用戶對數據安全需求不盡相同。為了滿足不同租戶對數據安全的靈活需求,MaxCompute
支持項目空間級別的安全配置,ProjectOwner 可以定制適合自己的外部賬號支持和鑒權模型并且在某種程度上保障 Project 的數據安全。
通常情況下,常見的開發模式為__MaxCompute+DataWorks__方式,針對這種場景下數據安全方案如下:
一、禁止數據下載到本地禁止數據流出或下載本地
方式①:
數據保護機制也被稱之為開啟項目空間數據保護,可以通過
MaxCompute console
開啟服務端禁止數據流出:
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 詳細文檔
{ 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
二、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 文檔。
三、數據保護傘(數據脫敏)
數據保護傘為 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);
-- 將指定列的敏感等級設置為 3
Alice 是項目空間中的一員,由于業務需要,她要申請訪問 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 操作代碼如下所示:
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/odps-doc/prddoc/odps_security/odps_sec_authorization_dac.html
方式②:
通過 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 url,通常如下制定 Tunnel endpoint 地址,如 jdbc:odps:http://service.cn.maxcompute.aliyun-inc.com/api?tunnelEndpoint=http://dt.cn-shanghai.maxcompute.aliyun-inc.com
。
具體 region 對應的 MaxCompute Endpoint 和 Tunnel Endpoint 不做分析
開啟項目保護 SET ProjectProtection=true,不需要加 exception 例外,具體可以想見項目保護機制章節。
打開控制返回數據條數:setproject READ_TABLE_MAX_ROW=1000;
基于 JDBC 的工具進行查詢,數據返回條數會控制在 1000 條以內。
說明:如果使用的版本小于 JDBC 2.4,并且開啟了項目保護那么通過 JDBC 方式會直接報錯(無權限)。
感謝各位的閱讀,以上就是“MaxCompute 數據安全方法是什么”的內容了,經過本文的學習后,相信大家對 MaxCompute 數據安全方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!