一、背景介紹
同一個主賬号下面的兩個工作空間,工作空間名稱分别為
A工作空間名稱:wei_wwww
A工作空間子賬号:mc_oss
B工作空間名稱:wei_mc
B工作空間子賬号:bigdata_wei
現在B工作空間子賬号bigdata_wei需要通路A工作空間子賬号mc_oss建立的UDF函數。執行查詢語句報錯資訊如下:

二、MaxCompute授權簡單介紹
MaxCompute提供了ACL授權、跨項目空間資料分享、項目空間資料保護等多種政策。授權操作一般涉及到三個要素,即主體(Subject,可以是使用者也可以是角色)、客體(Object)和操作(Action)。在MaxCompute中,主體是指使用者或角色,客體是指項目空間中的各種類型對象。我們推薦您優先使用ACL(基于對象)授權,而非Policy(基于政策)授權。
ACL授權中,MaxCompute的客體包括項目空間、表、函數、資源、任務執行個體
授權方式:
grant actions on object to subject;
三、授權
1、方式一:通過MaxCompute ACL授權
(1)在A工作空間建立一個函數
首先給A空間子賬号ram$建偉MaxCompute:mc_oss一個建立函數的權限。
create role worker;--建立角色
grant worker TO ram$建偉MaxCompute:mc_oss;--角色指派
grant CreateInstance, CreateResource, CreateFunction, CreateTable, List ON PROJECT wei_wwww TO ROLE worker;--對角色授權
子賬号:mc_oss建立一個函數udf1225,使用的資源為1225.jar
add jar 1225.jar;
CREATE FUNCTION udf1225 as 'com.aliyun.udf.test.UDF_DEMO' using '1225jar';
(2)在B工作空間授權操作
B工作空間中的子賬号想要通路A工作空間中子賬号建立的函數udf1225。我們需要B工作空間的子賬号bigdata_wei擁有通路A工作空間的函數和資源的權限。是以需要給B工作空間的子賬号bigdata_wei授權。
首先需要将B工作空間子賬号:bigdata_wei添加為A工作空間的成員。
use wei_wwww;--切換到A工作空間
create role mcrole;--建立角色
grant mcrole TO ram$建偉MaxCompute:bigdata_wei;--角色指派
grant Read ON Function udf1225 TO ROLE mcrole;--對角色授權
grant Read ON Resource 1225.jar TO ROLE mcrole;--對角色授權
(3)通路函數
切換登陸B工作空間,登入子賬号:bigdata_wei去查詢A工作空間下面的函數,此時可以正确通路到A工作空間建立的函數和資源。
use wei_mc;
select wei_wwww:udf1225('f');
結果如下圖所示:
注意:主賬号不能給其他主賬号的子賬号授權。
2、方式二:通過Package授權
業務分析人員需要檢視生産表但是又不能檢視生産任務,我們可以通過單獨建立一個分析項目來實作。首先,在多個生産項目建立package,把需要開放的表加到package中。然後,在分析項目中安裝package并授權給分析人員。這樣可以減少成員管理成本,無需在所有生産項目中增加分析人員,同時保證這些分析人員隻能在分析項目中檢視package中的表。這裡介紹如何通過package授權跨項目通路資源和函數。
(1)建立package
use wei_wwww;--切換到被通路工作空間。
create package udf_package; --建立一個Package。
add resource mc_0703.jar to package udf_package; --添加資源到Package。
add function mc_0703 to package udf_package; --添加表到Package。
allow project wei_mc to install package udf_package; --将Package分享給項目空間wei_mc。
(2)安裝package
use wei_mc;--切換需要通路的工作空間。
install package wei_wwww.udf_package; --安裝一個Package。
grant Read on package wei_wwww.udf_package to user RAM$建偉maxcompute:delete_test; --通過ACL授權子賬号delete_test使用Package。
use wei_mc;
set odps.sql.hive.compatible=true;
select wei_wwww:mc_0703(map(1,2,3,4));
3、方式三:通過Dataworks申請通路權限
資料地圖在資料管理的基礎上,根據角色區分對應的功能,控制您建立、預覽資料等權限,幫助您更好地建構企業級資料資訊知識庫。您可以在權限管理頁面申請函數和資源權限,并檢視待我審批、申請記錄和我已處理的。下面介紹如何通過資料地圖來跨項目通路資源和函數。
(1)在左側導航欄,單擊權限管理,檢視和管理權限。
(2)申請函數和資源權限:單擊右上角的申請函數和資源權限。
在申請資料權限對話框,配置各項參數
以下是各項參數詳細介紹:
(3)申請完成資源和函數之後需要管理者去審批通過申請。可以在這裡檢視審批狀态。
(4)審批通過就可以跨項目通路資源和函數。
注意:需要函數和資源分别申請。
歡迎加入“MaxCompute開發者社群2群”,點選連結申請加入或掃描二維碼
https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745