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

摘要: 本文将为您介绍项目空间内的访问控制和权限管理。

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

用户管理
ACL授权
Policy授权
角色管理
基于标签的访问控制管理
用户管理
任意非项目空间Owner用户必须被加入MaxCompute项目空间中,并被授予相对应权限,方能操作MaxCompute中的数据、作业、资源及函数。示例如下:

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

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

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

Alice要禁止Bob访问项目,则直接将他的账号从项目中移除即可。
Bob虽然被移除出了项目,但他之前被授予的权限仍然保留在项目中。下次一旦他被Alice加入同一个项目,原有的权限将会被自动激活。
RAM子账号管理
RAM子账号分两类,每个项目有不同的RAM子账号,不同的RAM子账号访问交换空间中的内容有一定的区别。


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

ACL授权
ACL授权的基本语法如下:

GRANT <privileges> ON <object> TO <subject>;
REVOKE <privileges> ON <object> FROM <subject>;br/>示例如下:
假设云账号用户[email protected]是新加入到项目空间WonderLand的成员。他需要提交作业、创建数据表、查看项目空间已存在的对象。管理员执行的授权操作如下:

权限列表如下:


授权内容

表:授权的对象可以是一张表,也可以是表里面的字段(列)。
函数UDF:指用户自定义函数。
资源Resource:指用户上传的各种资源文件,例如JAR包、文本文件等。
ACL授权应用场景
项目WonderLand的Owner Alice要给成员Bob授予创建表、查看项目空间内的表、提交作业、读取表userprofile的权限,操作如下:

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


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

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

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

文件内容如下:

ACL与Policy的区别

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

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

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

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

admin角色所对应的权限不能被修改。
没被使用的角色才可以被删除。
应用场景
Alice的公司有Bob、Tony、Peggy、George等更多数据开发工程师加入,Alice把员工分成不同的部门,每个部门只能访问各自工作范围内的数据。例如希望客户部只能看到customers表,仓储管理部门只能看devices表等,需进行如下操作:

如果仓储管理数据团队也需要访问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考虑的范畴。

注意:

select table时才检查label。
检查完label后,下面的acl、policy的权限仍需要验证。
数据的敏感等级分类
Project Owner需要定义明确的数据敏感等级和访问许可等级划分标准,默认时所有用户的访问许可等级为0级,数据安全级别默认为0级。

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

LabelSecurity基本操作

原文链接请添加链接描述

本文为云栖社区原创内容,未经允许不得转载。

原文地址:http://blog.51cto.com/13952056/2171223

时间: 2024-08-01 22:24:24

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

项目中处理android 6.0权限管理问题

android 6.0对于权限管理比较收紧,因此在适配android 6.0的时候就很有必要考虑一些权限管理的问题. 如果你没适配6.0的设备并且权限没给的话,就会出现类似如下的问题: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx cmp=com.android.server.telecom/.componen

完整项目基础架构精简版-实现权限管理

这个项目是一个网站或系统开发的基础代码,可以正常运行,但没有实际意义,主要是用来做为实际项目开发时的基础代码. 在做其他项目开发时可以直接将此代码复制一份进行项目业务的扩展,这样可以节约很多底层设计的时间,可以把精力都放在业务扩展上. 此项目使用的框架是: Springboot +SpringMVC +JPA +Hibernate +MySQL +Thymeleaf. 此份代码主要是为自己后期使用提供帮助,项目虽然非常精简但涉及的知识点非常多,通过这个项目进行扩展时也能调用很多已经封装好的功能,

Jenkins2.32用户和权限管理策略

前言 在使用jenkins的过程中,需要为不同的角色分配相应的权限,如果jenkins的用户数据能和公司现在的帐号系统结合起来那会更好. 关于如何为用户分组,我推荐使用 role based authorization strategy 这个插件 我的环境如下: 版本:Jenkins ver. 2.32.3 系统:windows 7 x64 进入用户管理 如果使用的是jenkins内置的用户数据库,操作方法如下: 1.使用管理员帐号登录,选择 Configure Global Security 

6.文件类型和文件权限管理

6.1.普通文件 (1)普通文件(- regular file)包括文本文件+二进制文件. (2)文本文件即文件中的内容是由文本构成的,文本即经过某种编码的字符(譬如ASCII码字符):所有文件的内容本质上都是数字,而文本文件中的数字本身应理解为该数字所对应的编码字符(譬如ASCII码对应的字符):常见的.c文件和.h文件和.txt文件等都是文本文件:文本文件的好处是可以被人轻松读懂和编辑,则文本文件天生就是为人类发明的. (3)二进制文件即文件中存储的内容本质上也是数字,但这些数字并非字符对应

【基于url权限管理 shiro(一)】--基础

只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.权限管理包括用户认证和授权两部分.   用户认证 1.概念 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 2.用户认证流程   3.关键对象 subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系

Shiro基础学习(一)&mdash;权限管理

一.基本概念 1.权限管理      只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.     权限管理包括用户认证和授权两部分.   2.用户认证     用户认证,用户去访问系统,系统要验证用户身份的合法性. 最常用的用户身份验证的方法: (1)用户名密码方式 (2)指纹打卡机. (3)基于证书验证方法. 系统验证用户身份合法,用户方可访问系统的资源. (1)用户认证的流程        (2)关

权限管理原理知识(一)

1.1     什么是权限管理 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 1.2     用户认证 1.2.1     概念 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 1.2.2    用户认证流程 1.2.3

django 基于proxy实现用户权限管理

项目中经常会遇到用户权限管理的问题,django adminsite已经提供非常实用的用户权限管理机制.不过有些时候,我们希望根据相关用户属性来过滤adminsite中显示的内容.下文将结束如何实现: 原始类 假设我有这么一个问卷类,基于这个类可以实现增删改查的功能 class wenjuan(models.Model): """ 问卷 """ name=models.CharField(u'问卷名称',max_length=128) breif

关于权限管理的一些原理

1       权限管理原理知识 1.1     什么是权限管理 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 1.2     用户认证 1.2.1     概念 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 1.2.2