MaxCompute 跨项目空间的访问控制和权限管理

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
EMR Serverless Spark 免费试用,1000 CU*H 有效期3个月
简介: 本文将为您介绍跨项目空间的访问控制和权限管理。

跨项目空间的访问控制分为以下五类:

  • 跨项目空间访问
  • 项目空间保护
  • TrustedProject
  • ExceptionPolicy
  • 项目空间资源共享

跨项目空间访问

场景示例

1

如上图所示,有两个项目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;

1

项目互信。

若当前项目空间处于受保护状态,如果将数据流出的目标空间设置为当前空间的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下的用户。

1

创建者的基本操作

操作 命令
创建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 ;
查看已安装的package SHOW PACKAGES;
查看package的详细信息 DESCRIBE PACKAGE ;

被安装的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 RAM$dean@aliyun.com:emma;

项目空间的安全配置—鉴权配置

您可通过设置下列参数来定制项目空间的鉴权模型。

参数 说明
CheckPermissionUsingACL 激活/冻结ACL授权机制,默认为true
CheckPermissionUsingPolicy 激活/冻结Policy授权机制,默认为true
ObjectCreatorHasAccessPermission 允许/禁止对象创建者默认拥有访问权限,默认为true
ObjectCreatorHasGrantPermission 允许/禁止对象创建者默认拥有授权权限,默认为true
LabelSecurity 开启/关闭LabelSecurity安全策略,默认为false
ProjectProtection 开启/关闭项目空间的数据保护机制,默认false

您可执行下述语句查看当前鉴权模型。

show SecurityConfiguration;
相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
5月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
184 4
|
5月前
|
SQL 分布式计算 大数据
别再迷信“上大数据就能飞”了!大数据项目成败的5个真相
别再迷信“上大数据就能飞”了!大数据项目成败的5个真相
137 6
|
5月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
287 3
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
105 0
|
8月前
|
数据采集 分布式计算 数据可视化
大数据项目成功的秘诀——不只是技术,更是方法论!
大数据项目成功的秘诀——不只是技术,更是方法论!
217 8
大数据项目成功的秘诀——不只是技术,更是方法论!
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
166 0
|
SQL 大数据 分布式数据库
SQL与大数据的神秘力量:如何用高效SQL处理海量数据,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,处理海量数据是关键挑战之一。本文探讨了SQL与大数据结合的方法,包括数据类型优化、索引优化、分区优化及分布式数据库应用,并通过示例代码展示了如何实施这些策略。通过遵循最佳实践,如了解查询模式、使用性能工具及定期维护索引,开发者可以更高效地利用SQL处理大规模数据集。随着SQL技术的发展,其在软件开发中的作用将愈发重要。
511 0
|
3月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
265 14
|
4月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
173 0
|
3月前
|
传感器 人工智能 监控
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
153 14

相关产品

  • 云原生大数据计算服务 MaxCompute