MaxCompute与DataWorks权限介绍和示例

简介: 该篇文章的主要内容是MaxCompute与DataWork权限的经典知识点汇总,MaxCompute常使用的权限分类以及经典使用语句,以及MaxCompute基于policy策略的生产环境和开发环境为用户做权限管理的示例。

背景:用户在使用MaxCompute与DataWorks这两种权限模型不清楚,并且对于相关MaxCompute的权限执行语句也不太熟悉,以至于在自己的实际操作中不能建立完整的权限策略,导致权限控制的混乱,甚至在开发过程中时常遇到权限问题的错误,导致延误业务的推动进展,该篇文档集主要的权限知识点与一体,常用的MaxCompute权限语句,以及经典的开发环境和生产环境之间的赋权示例给大家做出做出介绍。

一、MaxCompute的安全模型

image.png

二、DataWorks安全模型

image.png

三、子账户添加的限制

image.png

四、MaxCompute的授权管理图

image.png

五、授权场景和注意事项

image.png

六、移除用户的注意事项

image.png

七、成员管理的相关语句

查看成员:

Project owner或admin命令行执行
List users;   --查看成员列表
Show grants for <username>; -- 查看某成员权限

添加成员:

1.DataWorks添加RAM子账号;
2.Project owner或admin命令行方式执行
add user <username>   --可为RAM子账户或其他云账户

删除成员:

1.DataWorks删除RAM子账号;
2.Project owner或admin命令行方式执行:
remove user <username>

八、角色管理的相关语句:

查看角色:

查看role列表:List roles;
查看role中的权限:describe role <role_name>
查看某用户在什么role中:show grants for <username>
查看某个role都指派给那些user:目前不支持!

创建角色:

创建role:Create role <role_name>;
给角色授权:grant actions on object to <role_name>
添加用户到角色:grant <roleName> TO <full_username>

删除角色:

删除角色中的用户:REVOKE <roleName> FROM <full_usename>;
撤销对角色的授权:revoke <privList> on <objType> <objName> from role <rolename>
删除角色: DROP ROLE <roleName>

九、policy授权介绍

Policy授权则是⼀种基于主体的授权。通过Policy授权的权限数据(即访问策略)被看做是授权主体的⼀种 ⼦资源。只有当主体(⽤户或⻆⾊)存在时才能进⾏Policy授权操作。当主体被删除时,通过Policy授权的 权限数据会被⾃动删除。 Policy授权使⽤MaxCompute⾃定义的⼀种访问策略语⾔来进⾏授权,允许或 禁⽌主体对项⽬空间对象的访问权限。 

Policy授权机制,主要解决ACL授权机制⽆法解决的⼀些复杂授权场景,⽐如:

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

Policy授权语句格式如下:

GET POLICY; --读取项目空间的Policy 
PUT POLICY <policyFile>; --设置(覆盖)项目空间的Policy 
GET POLICY ON ROLE <roleName>; --读取项目空间中某个角色的Policy 
PUT POLICY <policyFile> ON ROLE <roleName>; --设置(覆盖)项目空间中某个角色的Policy 

policy基本术语

  • 主体(Principal) 主体(Principal)是指访问策略中的权限被指派的对象。⽐如,访问策略”允许张三在 2011年12⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的主体是”张三”。
  • 操作(Action) 操作(Action)是指主体对资源的访问⽅法。⽐如,访问策略”允许张三在2011年12⽉ 31⽇之前对资源SampleBucket执⾏CreateObject操作”中的操作是”CreateObject”。
  • 资源(Resource) 资源(Resource)是指主体请求访问的对象。⽐如,访问策略”允许张三在2011年12 ⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的资源是”SampleBucket”。
  • 访问限制(Access Restriction) 访问限制(Access Restriction)是指权限⽣效的限制条件。⽐如,访 问策略”允许张三在2011年12⽉31⽇之前对资源SampleBucket执⾏CreateObject操作”中的限制 条件是”在2011年12⽉31⽇之前”。
  • 效⼒(Effect) 授权效⼒包括两个⽅⾯:允许操作(Allow)和拒绝操作(Deny)。通常,Deny有更⾼ 的效⼒,在权限检查时会优先使⽤。 注意:“拒绝操作”和”撤销授权”是完全独⽴的两个概念,撤销授 权通常包括撤销对Allow和Deny这两种不同效⼒的授权,⽐如传统数据库⼀般⽀持Revoke和Revoke Deny两种操作

授权语句(Statement)结构

  • Effect: 指明该条语句的权限类型,取值必须为Allow或Deny。
  • Principal: 如果Policy在授权时是与⽤户或⻆⾊绑定,那么就不允许再指定Principal,⽐如 MaxCompute的Role Policy。 如果Policy在授权时是与项⽬空间或项⽬空间内的对象绑定,那么必 须指Principal,⽐如MaxCompute的Project Policy。
  • Action: 它表示授权操作,可以是⼀个或多个操作名,可⽀持通配符号” ” 和 ” ? ” 。 例 如 , A c t i o n = “ ” 表示所有的操作。
  • Resource: 它表示授权对象,可以是⼀个或多个对象名,可⽀持通配符号” ” 和 ” ? ” 。 例 如 R e s o u r c e = “ ” 表示所有的对象。
  • Condition Block: 条件块是该条授权语句所述权限得以⽣效的条件。条件块结构请参⻅下节的描述。

十、Policy的实际使用授权案例

基于以前的经验,我们在odps项目中创建了两个基本的角色,分别是开发角色dev、查询角色adhoc。

create role dev;
create role adhoc;

我们对于角色的权限要求大概分如下两类:

  • A开发权限:不能修改project属性但可以读取project信息,有建表、建资源、建Job等各种常用权限;可以修改、删除自己在开发库中创建的表,但对于其他同学创建的表则只有读取权限。
  • B查询权限:只能读取project信息,不能建表、建资源、建Job;只能读取表,但没有任何修改、删除权限。

我们的安全策略大致是这样的:

  • 开发库上,给所有开发同学赋予A开发权限。
  • 生产库上,给所有开发同学赋予B查询权限。

以下是开发权限的policy:policy_dev_dev.txt内容:

{
"Version": "1", 
"Statement":
 [{
    "Effect":"Allow",
    "Action":["odps:Read","odps:CreateTable","odps:CreateResource","odps:CreateJob","odps:CreateInstance","odps:CreateFunction","odps:List"],
    "Resource":"acs:odps:*:projects/cbu_dw_dev"
}
,{
 "Effect":"Allow",
 "Action":"odps:*",
 "Resource":[
 "acs:odps:*:projects/cbu_dw_dev/tables/*",
 "acs:odps:*:projects/cbu_dw_dev/jobs/*",
 "acs:odps:*:projects/cbu_dw_dev/instances/*",
 "acs:odps:*:projects/cbu_dw_dev/resources/*",
 "acs:odps:*:projects/cbu_dw_dev/registration/functions/*"
 ]
}]
}

角色授权语句:

use cbu_dw_dev;
put policy /home/odps/bin/policy_dev_dev.txt on role dev;

用户授权语句:

use cbu_dw_dev;
add user ALIYUN$jin@aliyun.com;
grant dev to ALIYUN$jin@aliyun.com;

一下是查询权限的policy:policy_dw_adhoc.txt内容

{
"Version": "1", 
"Statement":
 [{
    "Effect":"Allow",
    "Action":["odps:Read","odps:List"],
    "Resource":"acs:odps:*:projects/cbu_dw"
}
,{
    "Effect":"Allow",
    "Action":["odps:Describe","odps:Select"],
    "Resource":"acs:odps:*:projects/cbu_dw/tables/*"
}
,{
    "Effect":"Allow",
    "Action":"odps:Read",
    "Resource":[
        "acs:odps:*:projects/cbu_dw/jobs/*",
        "acs:odps:*:projects/cbu_dw/instances/*",
        "acs:odps:*:projects/cbu_dw/resources/*",
        "acs:odps:*:projects/cbu_dw/registration/functions/*"
       ]
}]
}

角色授权语句:

use cbu_dw;
put policy /home/odps/bin/policy_dw_adhoc.txt on role adhoc;

用户授权语句:

use cbu_dw;
add user ALIYUN$ jin@aliyun.com;
grant adhoc to ALIYUN$jin@aliyun.com;

欢迎加入“MaxCompute开发者社区2群”,点击链接申请加入或扫描二维码
https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745
image

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标 &nbsp;通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群 &nbsp;企业数据仓库开发人员 &nbsp;大数据平台开发人员 &nbsp;数据分析师 &nbsp;大数据运维人员 &nbsp;对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
10天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0
|
10天前
|
分布式计算 DataWorks Oracle
DataWorks操作报错合集之DataWorks ODPS数据同步后,timesramp遇到时区问题,解决方法是什么
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
24 0
|
10天前
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之DataWorks中udf开发完后,本地和在MaxCompute的工作区可以执行函数查询,但是在datawork里报错FAILED: ODPS-0130071:[2,5],是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
24 0
|
10天前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
23 0
|
10天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks数据集成中,但是预览ODPS源数据库为空,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
22 0
|
10天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示”,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
33 0
|
10天前
|
SQL JSON 分布式计算
DataWorks产品使用合集之DataWorks一键maxcompute数据同步的操作步骤是什么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
19 0
|
10天前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之DataWorks 数据集成中的数据源管理和管理空间的数据源之间的关系是怎样的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
10天前
|
运维 DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks中如何提升运维中心实时同步任务的运行速度
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
24 1
|
10天前
|
SQL DataWorks 测试技术
DataWorks产品使用合集之DataWorks如何进行业务流程克隆
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 0

热门文章

最新文章

相关产品

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