天天看點

如何跨項目工作空間通路MaxCompute資源和函數

一、背景介紹

同一個主賬号下面的兩個工作空間,工作空間名稱分别為

A工作空間名稱:wei_wwww

A工作空間子賬号:mc_oss

B工作空間名稱:wei_mc

B工作空間子賬号:bigdata_wei

現在B工作空間子賬号bigdata_wei需要通路A工作空間子賬号mc_oss建立的UDF函數。執行查詢語句報錯資訊如下:

如何跨項目工作空間通路MaxCompute資源和函數

二、MaxCompute授權簡單介紹

MaxCompute提供了ACL授權、跨項目空間資料分享、項目空間資料保護等多種政策。授權操作一般涉及到三個要素,即主體(Subject,可以是使用者也可以是角色)、客體(Object)和操作(Action)。在MaxCompute中,主體是指使用者或角色,客體是指項目空間中的各種類型對象。我們推薦您優先使用ACL(基于對象)授權,而非Policy(基于政策)授權。

ACL授權中,MaxCompute的客體包括項目空間、表、函數、資源、任務執行個體

授權方式:

grant actions on object to subject;           
如何跨項目工作空間通路MaxCompute資源和函數
如何跨項目工作空間通路MaxCompute資源和函數

三、授權

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');           

結果如下圖所示:

如何跨項目工作空間通路MaxCompute資源和函數

注意:主賬号不能給其他主賬号的子賬号授權。

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)申請函數和資源權限:單擊右上角的申請函數和資源權限。

在申請資料權限對話框,配置各項參數

如何跨項目工作空間通路MaxCompute資源和函數

以下是各項參數詳細介紹:

如何跨項目工作空間通路MaxCompute資源和函數

(3)申請完成資源和函數之後需要管理者去審批通過申請。可以在這裡檢視審批狀态。

如何跨項目工作空間通路MaxCompute資源和函數

(4)審批通過就可以跨項目通路資源和函數。

注意:需要函數和資源分别申請。

歡迎加入“MaxCompute開發者社群2群”,點選連結申請加入或掃描二維碼

https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745
如何跨項目工作空間通路MaxCompute資源和函數