EDAS自身拥有一套严谨的主子账号权限控制体系,同时还接入了阿里云访问控制RAM(Resource Access Management)的账号体系。为了让您能够用统一的管控账号体系来配置阿里云云产品权限,EDAS现将权限控制迁移至RAM。本文介绍了RAM权限控制的基本概念和迁移控制权限至RAM的方式。

为什么要使用RAM权限控制

RAM是阿里云提供的资源访问控制服务。通过设置权限策略(Policy),您可以集中管理您的用户(例如员工、系统或应用程序),以及控制用户可以访问您名下的哪些资源,例如限制您的用户只拥有对某一个EDAS应用的读权限。

在RAM中可以实现的跟EDAS相关的功能如下所示:
  • 管理角色:主账号可以通过将角色授权给子账号,使子账号拥有该角色里的权限。
  • 授权应用:主账号可以通过将应用授权给子账号,使子账号拥有对该应用的所属权限。
    说明 授权应用后,只是表明子账号对应用有所属权限,至于对该应用的具体操作,如启动应用和删除应用等,需要通过授权角色来授予操作的权限。所以授权应用后,一般需要授权相应角色,才能使子账号对该应用有操作权限。
  • 授权资源组:主账号通过授权资源组,可以使子账号拥有对相应资源的使用权。

更细粒度的鉴权

图 1所示,主账号为子账号分配资源后,所有的权限都会匹配这些资源。例如,当授予子账号APP1和APP2的资源后,如果再授予子账号部署应用和停止应用的权限,那么,该子账号会有权限对APP1和APP2进行部署和停止操作。资源粒度较为粗糙,不能更精确地控制权限。

图 1. EDAS内置权限资源对应图
EDAS内置权限资源对应图

相比EDAS自身权限控制的特点,RAM的权限控制更为精细,如图 2所示,每条权限都可以配置所拥有的资源。例如,主账号可以授予子账号部署APP和停止APP的权限,同时,部署APP的权限配置上资源APP1和APP2,停止APP的权限配置上资源APP2和APP3。此时,子账号可以部署APP1和APP2,却不能部署APP3;可以停止APP2和APP3,却不能停止APP1。

图 2. RAM权限资源对应图
RAM权限资源对应图

更强大的语法

相比EDAS内置鉴权,RAM权限控制的语法更为丰富,不仅支持用通配符进行模糊匹配,还支持多种鉴权策略组合,实现更复杂的鉴权逻辑。以下方RAM策略为例:

{
    "Statement": [
      {
        "Action": [
          "edas:ReadApplication"
        ],
        "Effect": "Allow",
        "Resource": ["acs:edas:*:*:namespace/*/application/*"]
      },
      {
        "Action": [
          "edas:ReadApplication"
        ],
        "Effect": "Deny",
        "Resource": ["acs:edas:cn-beijing:*:namespace/*/application/12345678"]
      }
    ],
    "Version": "1"
}
该RAM策略有2条语句:
  • 第1条是允许语句,权限动作edas:ReadApplication代表查看APP,针对的资源是通配符*代表的所有APP。综上代表的意思就是授予子账号查看EDAS中所有的APP的权限。
  • 第2条是禁止语句,资源是ID为12345678的APP。综上代表的意思为禁止查看ID为12345678的APP。
以上两条语句相结合,则代表:授予子账号查看除ID为12345678的APP外的其它所有APP的权限。

RAM权限控制语法还有条件表达式等多种强大功能,详情请参见权限策略概览

权限迁移说明

EDAS内置限体系可以实现对子账号授予EDAS角色、应用管理权限和资源组管理权限。为了减少您的学习成本,方便您对云产品进行统一权限配置,EDAS现将权限控制迁移至RAM,详情请参见将EDAS内置授权切换为RAM授权。此前EDAS主账号如果要对子账号进行权限控制,需要登录EDAS控制台,为子账号分配EDAS的权限和资源。迁移至RAM后,主账号在EDAS控制台无法再为子账号授权,需要登录到RAM控制台为子账号授予EDAS的权限。

图 3. EDAS内置权限控制示意图
迁移前EDAS权限控制示意图
图 4. RAM权限控制示意图:
迁移后EDAS权限控制示意图:

子账号授权方式说明

EDAS目前处于EDAS内置权限与RAM权限共存的过渡状态,建议您尽快将子账号的权限控制迁移至RAM。目前您的子账号所使用的鉴权方式参照以下规则:
  • 未使用过EDAS内置权限的子账号,直接使用RAM鉴权,不再开放EDAS内置鉴权。
  • 使用过EDAS内置权限的子账号:
    • 拥有RAM中AliyunEDASFullAccess权限的子账号:直接使用RAM鉴权,不再开放EDAS内置鉴权。
    • 使用过EDAS内置鉴权的子账号,建议手动切换为RAM鉴权,如果不做任何改动,可继续使用EDAS内置鉴权。

一键生成RAM权限策略

为方便您将EDAS内置权限控制切换到RAM的权限控制中,EDAS提供了权限自动转换功能。该功能可以将子账号的EDAS内置权限转为RAM权限策略,您只用将生成的权限策略添加到该子账号的RAM权限中,即可拥有与此前相匹配的EDAS权限。

EDAS内置权限与RAM权限并不完全匹配,因此您的新旧权限自动转换是无法等效替换的。EDAS提供了权限策略转换功能,可将EDAS内置权限转换为尽量一致的RAM权限。其中,子账号拥有的EDAS的资源(应用和集群)默认会赋给RAM的所有权限点使用。

表 1. 权限转换对照表
EDAS权限 RAM权限 RAM资源
Super Admin(All privileges) edas:* acs:edas:*:*:*
代理主账号 edas:ManageSystem acs:edas:*:*:*
系统管理-操作日志 edas:ReadOperationLog acs:edas:*:*:*
应用管理-编辑命名空间 edas:ManageNamespace acs:edas:*:*:namespace/${namespaceId}
应用管理-查询命名空间 edas:ReadNamespace acs:edas:*:*:namespace/${namespaceId}
资源管理-创建集群 edas:CreateCluster acs:edas:*:*:namespace/*
资源管理-查看集群 edas:ReadCluster acs:edas:*:*:namespace/${namespaceId}
资源管理-管理和删除集群 edas:ReadCluster

edas:ManageCluster

acs:edas:*:*:namespace/*/cluster/${clusterId}
应用管理-创建应用 edas:CreateApplication acs:edas:*:*:namespace/*
应用管理-部署、启动、扩容和删除应用 edas:ManageApplication

edas:ReadApplication

acs:edas:*:*:namespace/*/application/${applicationId}
应用管理-查看应用信息 edas:ReadApplication acs:edas:*:*:namespace/*/application/${applicationId}
应用管理-配置容器和编辑应用JVM参数 edas:ConfigApplication

edas:ReadApplication

acs:edas:*:*:namespace/*/application/${applicationId}
应用管理-设置日志路径 edas:ManageAppLog

edas:ReadApplication

acs:edas:*:*:namespace/*/application/${applicationId}