MaxCompute项目子账号做超级管理员

场景

主账号不是大数据团队管理,使用MaxCompute员工都只持有子账号,而project的owner只能为主账号,但是很多MaxCompute的权限管理还需要owner才可以操作(如项目级别的flag设置,package跨项目资源共享配置等),因此非常需要一个子账号拥有超级管理员权限。

之前有写过一篇文章《MaxCompute 项目子账号做权限管理》,是通过MaxCompute的admin role来解决问题,本文主要介绍super_administrator role,以及作为超级管理员日常管理工作中的一些建议。

关于super_administrator role

Super_Administrator role:MaxCompute新增内置的管理角色,拥有操作项目内所有类型资源的权限和管理类权限,具体权限请参考文档管理角色
该角色可由project owner指派给子账号,子账号获得该角色后,即可代替owner对该project在进行数据开发过程中所需的各种管理操作,包括常用的项目级别的flag设置以及所有权限管理操作。

指派子账号为超级管理员

前提建议:

  • 可以将有权限创建project的子账号指派为super_administrator role,这样该账号既可以很好的管理DataWorks项目的同时管理对应的Max Compute project。

如何授权子账号可创建project可参考此文档

  • 建一个一个project只能指派一个子账号为super_administrator role,其他需要有基本的权限管理可以指派admin role
  • 需要注意明确该子账号持有人的职责,建议一个子账号对应一个开发者,避免账号共用,以便能更好的保障数据安全。

确认好具体哪个子账号可以用户超级管理员(同时该子账号可以创建项目空间),子账号创建好project,此时projec的owner依然是主账号,主账号可以通过以下方式将super_administrator role 授权给该子账号。

  • 通过MaxCompute客户端授权
    假设主账号用户bob@aliyun.com是项目空间project_a的Owner,Allen是bob@aliyun.com中的RAM子账号。
    打开项目空间project_a。

    use project_a;
    为项目空间project_a添加RAM子账号Allen。
    add user ram$bob@aliyun.com:Allen;
    为子账号Allen授权Super_Administrator角色权限。
    grant super_administrator TO ram$bob@aliyun.com:Allen;
    为子账号Allen授权Admin角色权限。
    grant admin TO ram$bob@aliyun.com:Allen;
  • 通过DataWorks授权
  1. 登录DataWorks,进入工作空间配置页面。
  2. 添加子账号为项目空间成员(已经添加过可忽略)。
  3. 为子账号授权Super_Administrator角色。
    MaxCompute项目子账号做超级管理员
  • 子账号查看自身的权限:
    cmd中执行 show grants;,如果有Super_Administrator 这个role,说明已经赋权成功。

成员、权限管理

拥有super_administrator 角色的子账号本身已经拥有所有project资源的查询和操作权限,所以无须再给自身授权。以下给出针对其他成员和成员权限管理的建议。

成员管理

  • MaxComopute 支持云账号和RAM子账号(子账号只能为Project owner的子账号),为了更好的保障数据安全,建议project中添加的user均为owner主账号的RAM子账号。主账号可控制子账号,如人员转岗离职等,主账号可以注销或更新对应的子账号。

    > 若通过DataWorks进行项目成员管理,只能添加owner的RAM子账号。
  • RAM子账号只能通过主账号添加(这个不是MaxCompute可以改变的事实),所以对于某project 成员即使拥有super_administrator 角色的超级管理员,也只能先需要主账号先创建好其他子账号才可以将其他子账号添加到project中。
  • 建议只添加需要在当前project进行数据开发(即会在当前project执行job)的user,对于有数据交互业务需求的user,建议通过package方式进行跨project资源共享,避免把user添加到project增加成员管理的复杂度。
  • 员工转岗或离职,先把对应子账号在project里remove掉,然后再通知owner注销子账号。如果是拥有super_administrator 角色的子账号持有者转岗或离职,则需要由主账号进行remove以及注销账号。

权限管理

  • 建议通过角色进行权限管理,即权限和role关联,role和user关联。
  • 建议实施最小够用原则,避免权限过大造成安全隐患。
  • 跨project使用数据时,建议通过package方式实现,避免资源提供方增加成员管理成本,只需要管理package。

权限审计

可以通过MaxCompute的元数据服务Information_Schema服务提供的相关视图进行权限审计。

资源使用以及成本管理

作为MaxComopute主要负责人,不应该仅仅关注成员和权限,还有资源使用、成本都需要关注。

  • 关于成本,避不开账单,可以参考文档《查看账单详情》,对于子账号,需要主账号在RAM访问控制-角色管理给子账号所在角色赋相关权限:

    • (AliyunBSSFullAccess—管理费用中心(BSS)的权限;
    • 或,AliyunBSSReadOnlyAccess—只读访问费用中心(BSS)的权限;
    • 或,AliyunBSSOrderAccess—费用中心(BSS)查看订单、支付订单及取消订单的权限)

      > 注意,费用中心相关权限与MaxCompute project的super_administrator role无关联。
  • 关于资源使用管理,如果您使用MaxCompute包年包月的计算资源,则可以通过MaxCompute 管家进行计算资源的使用查看及管理。
    如果您使用的是MaxCompute后付费模式,可通过MaxCompute的元数据服务Information_Schema服务提供的相关视图,如TASKS_HISTORY 可详细审计作业执行情况包括时间、job内容、资源消耗等。

    >注意元数据服务提供的视图只有最近15天的数据,你若有需求,可自行将数据读取保存。
    
上一篇:算法科普:有趣的游程编码


下一篇:Android异步加载图片