如何跨项目工作空间访问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一个创建函数的权限。
A工作空间名称:wei_wwww

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工作空间名称:wei_mc
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。

(3)访问函数

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资源和函数

上一篇:Git@OSC 新增加项目访问统计功能


下一篇:eclipse配置tomcat,访问http://localhost:8080出现404错误