本文为您提供两个常见的业务场景来介绍如何创建项目并管理成员。
业务场景一:创建完善的ETL项目
场景需求
项目需要支持多人协同开发。
成员责任划分明确。
遵循正常的开发、调试、发布流程。生产数据需要严格控制。
需求分析
MaxCompute项目本身支持多人协同开发。
MaxCompute支持内置角色及自定义角色,可以通过角色为不同用户赋予不同的权限。DataWorks也支持多种角色,可以满足权限划分需求。
可以通过DataWorks创建开发和生产隔离的MaxCompute项目,满足开发、调试、发布要求,并实现数据隔离。
操作步骤
创建开发和生产项目
创建项目时,工作空间模式需要选择标准模式。更多创建项目操作,请参见创建MaxCompute项目。
添加项目成员
创建RAM用户并添加为项目成员,按需分配角色,例如开发、运维等。
更多创建RAM用户信息,请参见准备RAM用户。
更多添加项目成员并分配角色信息,请参见授权给其他用户。
任务开发及调试
开发角色成员通过DataWorks的数据开发模块进行任务开发、调试。如果用到生产项目的表,可以在DataWorks的数据治理模块进行申请。
DataWorks的数据开发模块支持多人协同开发,所有本项目的成员都可以查看任务代码,且有编辑权限的成员都可以进行修改编辑。因此,无法很好地保密一些核心的敏感度高的代码。有类似高保密性的任务及数据,可以由单独项目的固定成员进行开发。
任务发布到生产环境
开发角色成员调试好任务后,进行打包。运维角色成员可以进行代码Review后执行发布,将任务发布到生产环境。 这个过程保障任务不能随意发布到生产环境执行。
生产环境通过Project Owner访问MaxCompute,因此创建的Table、Function、Resource的Owner显示的是Project Owner的账号。这样会出现创建的表的Owner不是创建者本人且创建表的人没有权限查看自己创建的表的情况。
开发角色成员生产任务测试
任务发布到生产环境后,建议开发角色成员在运维中心对生产环境任务执行一次测试,以确保生产任务可正常执行。若任务执行返回成功状态,还是需要先查看日志判断执行是否正常,查询结果表是否有正常的产出。通常您需要在开发界面查询表,个人对生产环境产出的表默认无权限,可以在DataWorks的数据治理模块进行申请。
由于开发和生产项目Owner都是同一个账号,请谨防通过发布任务到生产项目时,将生产项目表读写到开发项目再通过开发项目获取生产数据。
业务场景二:创建仅实现查询、下载业务数据的项目
场景需求
业务单一,成员角色基本一致,后续业务不会扩展。
只需要查询、下载业务数据进行分析。
需求分析
项目不做数据开发,需要分析的数据在其他项目中。为避免不同主账号资源隔离,本项目的Owner必须与数据开发生产项目的Owner为同一账号。
项目主要完成数据查询、下载,需要每个成员用自己的权限进行数据查询、下载。需要设置项目的访问身份为任务负责人。
当设置访问身份为任务负责人后,需要为每个项目成员授予对应MaxCompute的角色权限。由于需求是每个成员只能操作自己创建的表,因此需要处理好默认的角色权限。
操作步骤
创建项目
创建项目时,工作空间模式需要选择简单模式。更多创建项目操作,请参见创建MaxCompute项目。
创建MaxCompute自定义角色并授权
阿里云账号通过MaxCompute客户端执行如下命令。
--创建自定义角色。 create role custom_dev; --为自定义角色授权。 grant List, CreateInstance,CreateTable,CreateFunction,CreateResource on project prj_name to role custom_dev;
为MaxCompute的项目设置允许对象创建者默认拥有访问权限。
阿里云账号通过MaxCompute客户端执行如下命令进行设置。
set ObjectCreatorHasAccessPermission=true; --实际上这个属性默认已经为true,可以通过如下命令查看。 show SecurityConfiguration;
添加项目成员
创建RAM用户并添加为项目成员。
更多创建RAM用户信息,请参见准备RAM用户。
更多添加项目成员信息,请参见授权给其他用户。
例如添加成员时角色为开发,则添加成功后,在对应MaxCompute项目中该成员对应的角色是Role_Project_Dev。阿里云账号可以通过
show grants for ram$阿里云账号:RAM名称;
命令行进行查看。修改成员的权限。
阿里云账号通过MaxCompute客户端执行如下命令修改成员权限。
--将成员从默认授予的角色中移除。 revoke role_project_dev from ram$阿里云账号:RAM名称; --给新成员授予自定义角色。 grant custom_dev to ram$阿里云账号:RAM名称;
该项目的成员若重新操作添加如上描述中的开发角色,则成员又会重新被授予Role_Project_Dev的角色。
该项目经过上述配置后,只能做到每个成员可以查看自己创建的表(对象),但是做不到每个成员只能查看自己创建的任务。