本文为您提供两个常见的业务场景来介绍如何创建项目并管理成员。

业务场景一:创建完善的ETL项目

场景需求

  • 项目需要支持多人协同开发。
  • 成员责任划分明确。
  • 遵循正常的开发、调试、发布流程。生产数据需要严格控制。
需求分析
  • MaxCompute项目本身支持多人协同开发。
  • MaxCompute支持内置角色及自定义角色,可以通过角色为不同用户赋予不同的权限。DataWorks也支持多种角色,可以满足权限划分需求。
  • 可以通过DataWorks创建开发生产隔离的MaxCompute项目,满足开发、调试、发布要求,并实现数据隔离。
操作步骤
  1. 创建开发和生产项目

    创建项目时,工作空间模式需要选择标准模式。更多创建项目操作,请参见创建MaxCompute项目

  2. 添加项目成员

    创建RAM用户并添加为项目成员,按需分配角色,例如开发、运维等。

    更多创建RAM用户信息,请参见准备RAM用户

    更多添加项目成员并分配角色信息,请参见添加工作空间成员并设置角色

  3. 任务开发及调试

    开发角色成员通过DataWorks的数据开发模块进行任务开发、调试。如果用到生产项目的表,可以在DataWorks的数据治理模块进行申请。

    DataWorks的数据开发模块支持多人协同开发,所有本项目的成员都可以查看任务代码,且有编辑权限的成员都可以进行修改编辑。因此,无法很好地保密一些核心的敏感度高的代码。有类似高保密性的任务及数据,可以由单独项目的固定成员进行开发。

  4. 任务发布到生产环境

    开发角色成员调试好任务后,进行打包。运维角色成员可以进行代码Review后执行发布,将任务发布到生产环境。 这个过程保障任务不能随意发布到生产环境执行。

    生产环境通过Project Owner访问MaxCompute,因此创建的Table、Function、Resource的Owner显示的是Project Owner的账号。这样会出现创建的表的Owner不是创建者本人且创建表的人没有权限查看自己创建的表的情况。

  5. 开发角色成员生产任务测试

    任务发布到生产环境后,建议开发角色成员在运维中心对生产环境任务执行一次测试,以确保生产任务可正常执行。若任务执行返回成功状态,还是需要先查看日志判断执行是否正常,查询结果表是否有正常的产出。通常您需要在开发界面查询表,个人对生产环境产出的表默认无权限,可以在DataWorks的数据治理模块进行申请。

    由于开发和生产项目Owner都是同一个账号,请谨防通过发布任务到生产项目时,将生产项目表读写到开发项目再通过开发项目获取生产数据。

业务场景二:创建仅实现查询、下载业务数据的项目

场景需求

  • 业务单一,成员角色基本一致,后续业务不会扩展。
  • 只需要查询、下载业务数据进行分析。
需求分析
  • 项目不做数据开发,需要分析的数据在其他项目中。为避免不同主账号资源隔离,本项目的Owner必须与数据开发生产项目的Owner为同一账号。
  • 项目主要完成数据查询、下载,需要每个成员用自己的权限进行数据查询、下载。需要设置项目的访问身份任务负责人
  • 当设置访问身份任务负责人后,需要为每个项目成员授予对应MaxCompute的角色权限。由于需求是每个成员只能操作自己创建的表,因此需要处理好默认的角色权限。
操作步骤
  1. 创建项目

    创建项目时,工作空间模式需要选择简单模式。更多创建项目操作,请参见创建MaxCompute项目

  2. 创建MaxCompute自定义角色并授权
    阿里云账号通过MaxCompute客户端执行如下命令。
    --创建自定义角色。
    create role custom_dev;
    --为自定义角色授权。
    grant List, CreateInstance,CreateTable,CreateFunction,CreateResource on project prj_name to role custom_dev;
  3. 为MaxCompute的项目设置允许对象创建者默认拥有访问权限
    阿里云账号通过MaxCompute客户端执行如下命令进行设置。
    set ObjectCreatorHasAccessPermission=true;
    --实际上这个属性默认已经为true,可以通过如下命令查看。
    show SecurityConfiguration;
  4. 添加项目成员

    创建RAM用户并添加为项目成员。

    更多创建RAM用户信息,请参见准备RAM用户

    更多添加项目成员信息,请参见添加工作空间成员并设置角色

    例如添加成员时角色为开发,则添加成功后,在对应MaxCompute项目中该成员对应的角色是Role_Project_Dev。阿里云账号可以通过show grants for ram$阿里云账号:RAM名称;命令行进行查看。
  5. 修改成员的权限。
    阿里云账号通过MaxCompute客户端执行如下命令修改成员权限。
    --将成员从默认授予的角色中移除。
    revoke role_project_dev from ram$阿里云账号:RAM名称;
    --给新成员授予自定义角色。
    grant custom_dev to ram$阿里云账号:RAM名称;

    该项目的成员若重新操作添加如上描述中的开发角色,则成员又会重新被授予Role_Project_Dev的角色。

说明 该项目经过上述配置后,只能做到每个成员可以查看自己创建的表(对象),但是做不到每个成员只能查看自己创建的任务。