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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文将为您介绍项目空间内的访问控制和权限管理。

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

  • 用户管理
  • ACL授权
  • Policy授权
  • 角色管理
  • 基于标签的访问控制管理

用户管理

任意非项目空间Owner用户必须被加入MaxCompute项目空间中,并被授予相对应权限,方能操作MaxCompute中的数据、作业、资源及函数。示例如下:

1

假设Alice创建一个名为WonderLand的项目,自动成为Owner。没有Alice的授权,其他任何人都无法访问WonderLand。

Alice要授权Bob允许他访问WonderLand中的一些对象,操作如下:

  1. Bob要有一个合法的云账号或者是Alice的RAM子账号。
  2. Alice要把Bob的账号加到项目中来。
  3. 赋一些对象的权限给Bob。

注意:

  • Alice要禁止Bob访问项目,则直接将他的账号从项目中移除即可。
  • Bob虽然被移除出了项目,但他之前被授予的权限仍然保留在项目中。下次一旦他被Alice加入同一个项目,原有的权限将会被自动激活

RAM子账号管理

RAM子账号分两类,每个项目有不同的RAM子账号,不同的RAM子账号访问交换空间中的内容有一定的区别。

1

场景描述 是否允许
Alice把云账号Andy加入到Project中 允许
Alice把她的子账号Tony加入到Project中 允许
Alice把Andy的子账号daniel加入到Project中 不允许

授权

授权三要素:主体(Subject)、客体(Object)和操作(Action)。
您可以通过ACL(基于对象)和Policy(基于策略)两种方法进行授权。

ACL授权

ACL授权的基本语法如下:

GRANT <privileges> ON <object> TO <subject>;
REVOKE <privileges> ON <object> FROM <subject>;

示例如下:
假设云账号用户dean@aliyun.com是新加入到项目空间WonderLand的成员。他需要提交作业、创建数据表、查看项目空间已存在的对象。管理员执行的授权操作如下:

use WonderLand; #打开WonderLand项目空间
add user ALIYUN$dean@aliyun.com; #添加用户到项目中
grant CreateInstance on project WanderLand to user ALIYUN$dean@aliyun.com; #对用户进行授权

权限列表如下:

对象类型 支持的操作 说明
project Read 查看项目空间自身(不包括项目空间的任何对象的信息,如CreateTime等)
project Write 更新项目空间自身(不包括项目空间的任何对象的信息,如Comments)
project List 查看项目空间所有类型的对象列表
project CreateTable 在项目空间中创建Table
project CreateInstance 在项目空间中创建Instance
project CreateFunction 在项目空间中创建Function
project CreateResource 在项目空间中创建Resource
project CreateJob 在项目空间中创建Job
project All 具备上述所有权限
Table Describe 读取Table的Metadata
Table Select 读取Table的Rows
Table Alter 修改Table的Metadata
Table Update 覆盖或添加Table的Rows
Table Drop 删除Table
Table All 具备上述所有权限
Function Read 读取
Function Write 更新
Function Delete 删除
Function All 具备上述所有权限
Resource Instance Job Read 读取
Resource Instance Job Write 更新
Resource Instance Job Delete 删除
Resource Instance Job All 具备上述所有权限

授权内容

  • 表:授权的对象可以是一张表,也可以是表里面的字段(列)。
  • 函数UDF:指用户自定义函数。
  • 资源Resource:指用户上传的各种资源文件,例如JAR包、文本文件等。

ACL授权应用场景

项目WonderLand的Owner Alice要给成员Bob授予创建表、查看项目空间内的表、提交作业、读取表userprofile的权限,操作如下:

Use wonderland; #进入项目空间
add user RAM$alice@aliyun.com:bob; #添加用户
grant list,createinstance on project wonderland to user RAM$alice@aliyun.com:bob;  #进行命令授权
grant describe,select on table userprofile to RAM$alice@aliyun.com:bob; #授予读取表userprofile的权限

Bob在做数据开发的时候需要用到项目空间已经开发好的UDF getusertype,这个udf使用了资源getusertype.jar,操作如下:

grant read on function getusertype to user RAM$alice@aliyun.com:bob;
grant read on resource getusertype.jar to user RAM$alice@aliyun.com:bob;  

Policy

Policy授权机制主要解决ACL授权机制无法解决的一些复杂授权场景,如下所示:

  • 一次操作对一组对象进行授权,如所有的函数、所有以 “taobao” 开头的表。
  • 带限制条件的授权,如授权只会在指定的时段内才会生效、当请求者从指定的IP地址发起请求时授权才会生效、或者只允许用户使用SQL(而不允许其它类型的Task)来访问某张表。

Policy有RolePolicy和ProjectPolicy两种,基本语法如下:

get policy;  #读取项目空间的Policy
put policy <policy file>;  #设置(覆盖)项目空间的Policy
get policy on role <role name>; #读取项目空间中某个角色的Policy
put policy <policy file> on role <role name>; #设置(覆盖)项目空间中某个角色的Policy

Policy授权应用场景

项目空间SecretGarden的Dean要让他所在的项目空间的所有成员,都可以使用项目空间里的udf、jar包、python资源,该如何授权?

use SecretGarden;  #进入项目空间
put policy ./all_udfs_resources.json #上传Policy配置文件到project resource中

文件内容如下:

"Version": "1",
"Statement":
[{
    "Effect":"Allow",
    "Principal":"*",
    "Action":["odps:Read"],
    "Resource":"acs:odps:*:projects/SecretGarden/tables/*"
},
[{
    "Effect":"Allow",
    "Principal":"*",
    "Action":["odps:Read"],
    "Resource":"acs:odps:*:projects/SecretGarden/resources/*"
}]
}

ACL与Policy的区别

ACL Policy
Subject&Object是否必须存在
删除对象时,是否自动撤销相关授权
是否支持白名单(Allow)授权
是否支持黑名单(Deny)授权
是否支持带限制条件的授权
是否支持通配符(*)

角色管理

当项目空间内用户比较多时,对用户逐个授权的管理方式会很繁琐。因此MaxCompute提供了角色管理,把一组的授权的操作对象赋予一个角色,再把此角色授权给一个用户,角色(Role)即是一组访问权限的集合。

每一个项目空间在创建时,会自动创建一个admin的角色,并且为该角色授予了确定的权限:可以访问项目空间内的所有对象、对用户或角色进行管理、对用户或角色进行授权。

与项目空间Owner相比,admin角色不能进行以下操作:

  • 不能将admin权限指派给用户
  • 不能设定项目空间的安全配置
  • 不能修改项目空间的鉴权模型
  • 不能共享资源

角色的限制:

  • admin角色所对应的权限不能被修改。
  • 没被使用的角色才可以被删除。

应用场景

Alice的公司有Bob、Tony、Peggy、George等更多数据开发工程师加入,Alice把员工分成不同的部门,每个部门只能访问各自工作范围内的数据。例如希望客户部只能看到customers表,仓储管理部门只能看devices表等,需进行如下操作:

create role customers_mgr;
grant describe,select on table customers to role customers_mgr;
grant customers_mgr to RAM$alice@aliyun.com:peggy;

create role warehouse_mgr;
grant describe,select on table devices to role warehouse_mgr;
grant warehouse_mgr to RAM$alice@aliyun.com:george;

如果仓储管理数据团队也需要访问customers表,则执行下述命令:

grant describe,select on table customers to role warehouse_mgr;

查看权限

MaxCompute支持查看指定用户的权限、查看指定角色的权限、以及查看指定对象的授权列表。

  • 查看指定用户的权限:

    show grants;
    show grants for <username>;
  • 查看指定角色的权限:

    describe role <rolename>;
  • 查看指定对象的授权列表:

    show acl for <objectName> [on type <objectType>];

基于标签的访问控制

ACL和Policy是数据库比较常见的权限管理模型,MaxCompute除此之外还提供了基于标签的访问控制。它是项目空间级别的一种强制访问控制策略(Mandatory Access Control, MAC),它的引入是为了让项目空间管理员能更加灵活地控制用户对列级别敏感数据的访问。

例如对于一个国家来说(类比MaxCompute的一个项目空间),这个国家公民要想开车(类比读数据操作),必须先申请获得驾照(类比申请SELECT权限)。这些就属于DAC考虑的范畴。

但由于这个国家交通事故率一直居高不下,于是该国新增了一条法律:禁止酒驾。此后,所有想开车的人除了持有驾照之外,还必须不能喝酒。类比MaxCompute,这个禁止酒驾就相当于禁止读取敏感度高的数据。这就属于MAC考虑的范畴。

1

注意:

  • select table时才检查label。
  • 检查完label后,下面的acl、policy的权限仍需要验证。

数据的敏感等级分类

Project Owner需要定义明确的数据敏感等级和访问许可等级划分标准,默认时所有用户的访问许可等级为0级,数据安全级别默认为0级。

LabelSecurity对敏感数据的粒度可以支持列级别,管理员可以对表的任何列设置敏感度标记(Label),一张表可以由不同敏感等级的数据列构成。

1

LabelSecurity基本操作

操作 命令
打开LabelSecurity安全机制开关 Set LabelSecurity=true/false;
设置用户安全许可标签 SET LABEL TO USER ;
设置数据敏感等级标签 SET LABEL TO TABLE tablename[(column_list)];
显示授权低级别用户访问高敏感数据 GRANT LABEL ON TABLE [(column_list)] TO USER [WITH EXP ];
撤销显示授权 revoke label on table [(column_list)] from user
查看一个用户能访问哪些敏感数据集 show label [] grants [for user ];
查看一个敏感数据表能被哪些用户访问 show label [] grants on table ;
用户对指定表上列级别的Label授权 show label [] grants on table for user ;
包安装者对包中敏感资源许可访问级别 allow project to install package [using label ];
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
3月前
|
机器学习/深度学习 设计模式 人工智能
面向对象方法在AIGC和大数据集成项目中的应用
【8月更文第12天】随着人工智能生成内容(AIGC)和大数据技术的快速发展,企业面临着前所未有的挑战和机遇。AIGC技术能够自动产生高质量的内容,而大数据技术则能提供海量数据的支持,两者的结合为企业提供了强大的竞争优势。然而,要充分利用这些技术,就需要构建一个既能处理大规模数据又能高效集成机器学习模型的集成框架。面向对象编程(OOP)以其封装性、继承性和多态性等特点,在构建这样的复杂系统中扮演着至关重要的角色。
66 3
|
3月前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
44 0
|
3月前
|
SQL 大数据 分布式数据库
SQL与大数据的神秘力量:如何用高效SQL处理海量数据,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,处理海量数据是关键挑战之一。本文探讨了SQL与大数据结合的方法,包括数据类型优化、索引优化、分区优化及分布式数据库应用,并通过示例代码展示了如何实施这些策略。通过遵循最佳实践,如了解查询模式、使用性能工具及定期维护索引,开发者可以更高效地利用SQL处理大规模数据集。随着SQL技术的发展,其在软件开发中的作用将愈发重要。
105 0
|
4月前
|
弹性计算 分布式计算 大数据
MaxCompute产品使用合集之如何将用户A从项目空间A申请的表权限需要改为用户B
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何查询MaxCompute项目中的所有表及其字段信息
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之如何查看空间资源、CPU和内存以及存储空间容量
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
48 7
|
11天前
|
网络协议 安全 网络性能优化
了解访问控制列表 (ACL):概念、类型与应用
了解访问控制列表 (ACL):概念、类型与应用
24 2

相关产品

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