天天看點

MaxCompute 跨項目空間的通路控制和權限管理

跨項目空間的通路控制分為以下五類:

  • 跨項目空間通路
  • 項目空間保護
  • TrustedProject
  • ExceptionPolicy
  • 項目空間資源共享

場景示例

MaxCompute 跨項目空間的通路控制和權限管理

如上圖所示,有兩個項目WonderLand和MiddleLand,每個項目有不同的成員,Dean使用者想要通路WonderLand中的資源和表。那麼面對作為非本項目團隊成員Dean的通路請求,Alice應該怎麼辦?

常見的普通授權方式如下所示:

  1. 将Dean使用者添加到WonderLand項目空間中。
  2. 對申請的對象進行使用者授權。

但是,如果把其他部門的成員加入到本項目中,會存在風險。

Alice将WonderLand項目空間中的表customers的讀權限賦給了Dean,假設Dean還有另外一個項目空間SecretGarden,那麼Dean可以有多種方法把這張表的資料“盜走”:

  • SQL:通過執行SQL語句盜取資料。
    create table SecretGarden.GotIt as select * from WonderLand.customers;           
  • MR:通過MR将表讀出,然後寫入SecretGarden中。
  • 導出:通過資料導出工具,将該表資料導出。
  • PAI:将資料間接導出。
  • 其他…

資料保護機制

設定ProjectProtection規則:資料隻能流入,不能流出。

set ProjectProtection=true;           

設定後,上述的4種操作均将失效,因為它們都違反了ProjectProtection規則。

項目空間保護下的合規資料流出

經過嚴格審查,發現Bob将表customers導出到另一個項目空間SecretGarden是符合規定的。現在已經設定了項目保護,Alice可以通過以下兩種方式,在不破壞目前保護機制的情況下,對Bob的要求予以滿足。

設定例外政策。

在設定項目保護(ProjectProtection)的同時,附加一個例外政策(exception):

set ProjectProtection=true with exception bob_policy.JSON;           
MaxCompute 跨項目空間的通路控制和權限管理

項目互信。

若目前項目空間處于受保護狀态,如果将資料流出的目标空間設定為目前空間的TrustedProject,那麼向目标項目空間的資料流向将不會被視為觸犯ProjectProtection規則。如果多個項目空間之間兩兩互相設定為TrustedProject,那麼這些項目空間就形成了一個TrustedProject Group,資料可以在這個Project Group内流動,但禁止流出到Project Group之外。

list trustedprojects;  --檢視目前project中的所有TrustedProjects
add trustedproject <projectname>;  --在目前project中添加一個 
TrustedProject,此處為SecretGarden
remove trustedproject <projectname>; --在目前project中移除一個TrustedProject           

資源共享Package

Package是一種跨項目空間共享資料及資源的機制,主要用于解決跨項目空間的使用者授權問題。

如果不使用Package,對于下面的場景我們無法有效解決。

Alifinance項目空間的成員若要通路Alipay項目空間的資料, 則需要Alipay項目空間管理者執行繁瑣的授權操作:首先需要将Alifiance項目空間中的使用者添加到Alipay項目空間中,再分别對這些新加入的使用者進行普通授權。實際上,Alipay項目空間管理者并不期望對Alifiance項目空間中的每個使用者都進行授權管理, 而更期望有一種機制能使得Alifiance項目空間管理者能對許可的對象進行自主授權控制。

使用Package之後,Alipay項目空間管理者可以對Alifinance需要使用的對象進行打包授權(也就是建立一個Package), 然後許可Alifinance項目空間可以安裝這個Package。在Alifinance項目空間管理者安裝Package之後, 就可以自行管理Package是否需要進一步授權給自己Project下的使用者。

MaxCompute 跨項目空間的通路控制和權限管理

建立者的基本操作

操作 指令
建立package CREATE PACKAGE ;
删除package DROP PACKAGE ;
添加想要分享的資源到package ADD TO PACKAGE [with privileges privileges];
從package中去掉分享的對象 REMOVE FROM PACKAGE ;
允許其他項目空間使用此 package ALLOW PROJECT TO INSTALL PACKAGE [USING LABEL ];
撤銷項目空間對該package的使用許可 DISALLOW PROJECT TO INSTALL PACKAGE ;
檢視已安裝的package SHOW PACKAGE;
檢視package的詳細資訊 DESCRIBE PACKAGE ;

使用者的基本操作

安裝package INSTALL PACKAGE ;
解除安裝package UNINSTALL PACKAGE ;
SHOW PACKAGES;

被安裝的Package是獨立的MaxCompute對象類型。如果要通路Package中的資源(即其他項目空間分享的資源),必須擁有對該Package的Read權限。如果請求者沒有Read權限,則需要向ProjectOwner或Admin申請。ProjectOwner或Admin可以通過ACL授權或Policy授權機制來完成。

Dean安裝來自項目空間WonderLand的包pkg_wl并授權給Emma,執行指令如下:

INSTALL PACKAGE WonderLand.pkg_wl;
GRANT READ ON PACKAGE WonderLand.pkg_wl TO USER [email protected]:emma;           

項目空間的安全配置—鑒權配置

您可通過設定下列參數來定制項目空間的鑒權模型。

參數 說明
CheckPermissionUsingACL 激活/當機ACL授權機制,預設為true
CheckPermissionUsingPolicy 激活/當機Policy授權機制,預設為true
ObjectCreatorHasAccessPermission 允許/禁止對象建立者預設擁有通路權限,預設為true
ObjectCreatorHasGrantPermission 允許/禁止對象建立者預設擁有授權權限,預設為true
LabelSecurity 開啟/關閉LabelSecurity安全政策,預設為false
ProjectProtection 開啟/關閉項目空間的資料保護機制,預設false

您可執行下述語句檢視目前鑒權模型。

show SecurityConfiguration;           

繼續閱讀