Serverless应用引擎SAE(Serverless App Engine)的权限管理通过阿里云的访问控制RAM(Resource Access Management)实现,避免多用户共享阿里云账号密码或访问密钥(AccessKey ID和AccessKey Secret),从而降低安全风险。本文介绍如何基于RAM在SAE中创建权限策略以及进行授权配置。

前提条件

了解权限策略语言的基本结构和语法。具体信息,请参见权限策略语法和结构权限策略基本元素

RAM权限策略

权限指在某种条件下允许或拒绝对某些资源执行某些操作;权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的资源集、操作集以及授权条件。权限策略是描述权限集的一种简单语言规范。

在RAM中,权限策略是一种资源实体。SAE支持以下权限策略。

  • 系统权限策略:统一由阿里云创建,您只能使用不能修改,策略的版本更新由阿里云维护,适用于粗粒度地控制RAM用户权限。
  • 自定义权限策略:您可以自主创建、更新和删除,策略的版本更新由您自己维护,适用于细粒度地控制RAM用户权限。

系统策略

当您首次以RAM用户的身份登录SAE控制台时,SAE会弹出欢迎使用Serverless应用引擎SAE对话框,提示您需要为RAM用户授权,使RAM用户可以访问相应的阿里云资源。

db_sae_welcome_page

您需要为RAM用户授予以下系统策略。

权限策略名称说明
AliyunSAEFullAccess管理SAE的权限,授权后才能执行应用管理相关的操作。若不需要SAE Full权限,可以通过SAE权限助手进行细粒度定制化权限设置。
AliyunSLBReadOnlyAccess只读访问SLB的权限,授权后才能使用SLB的相关功能。
AliyunACMFullAccess管理ACM的权限,授权后才能使用SAE内置的分布式配置管理的功能。
AliyunECSReadOnlyAccess只读ECS的权限,授权后才能在创建应用时选择已有的安全组列表。
AliyunOOSReadOnlyAccess只读OOS的权限,授权后才能使用SAE的批量定时启停应用的功能。
AliyunBSSReadOnlyAccess只读BSS的权限,授权后才能在SAE概览页查看购买的资源包的余量。
AliyunARMSReadOnlyAccess只读ARMS的权限,授权后才能使用SAE内置的应用监控管理功能。
AliyunContainerRegistryReadOnlyAccess只读容器镜像服务的权限,授权后才能在SAE应用部署镜像时,选择容器镜像服务企业版。
AliyunALBReadOnlyAccess只读访问应用型负载均衡服务(ALB)的权限。
AliyunYundunCertReadOnlyAccess只读访问云盾证书服务的权限。
AliyunEventBridgeReadOnlyAccess只读EB的权限,授权后才能使用创建更新Job的功能。
说明 AliyunSAEFullAccess表示拥有对SAE所有资源的所有操作权限。如果您需要限制RAM用户拥有更细粒度的权限,例如命名空间级别、应用级别和关联产品等,请参见自定义策略

自定义策略

如果系统策略无法满足需求,您可以通过创建自定义策略实现更细粒度的权限管理。

SAE权限助手能够协助您对SAE的权限进行可视化配置,生成对应的权限语句,无需手动编辑自定义脚本,并通过RAM控制台创建相应的自定义策略并授权给RAM用户。

鉴权规则

资源描述如下。

资源类型授权策略中的资源描述
applicationacs:sae:${regionid}:${accountid}:application/${namespaceid}/${appid}}

参数说明如下。

参数说明
$regionid地域ID,可用*代替。
$accountid云账号数字ID,可用*代替。
$namespaceid命名空间ID,其中由于默认命名空间ID为空,采用_default进行转义。
说明 命名空间ID仅允许输入小写英文字母或数字。
$appid应用ID,可用*代替。

示例如下。

以华东2(上海)地域为例。

  • 命名空间ID为test,应用ID为0c815215-46a1-46a2-ba1e-0102a740****的资源描述。
    acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****
  • 命名空间(默认)的资源描述。
    acs:sae:cn-shanghai:*:application/_default/*

权限策略示例

  • 场景一:命名空间级别的授权配置

    场景描述:授权产品读权限和特定命名空间及所属应用写权限。

    例如允许使用RAM用户操作默认命名空间和命名空间ID为test的命名空间及其所属应用的资源。

    ResourceAction描述
    acs:sae:cn-shanghai:*sae:Query*名称以Query开头的API可以对华东2(上海)地域下所有相关资源进行操作。
    sae:List*名称以List开头的API可以对华东2(上海)地域下所有相关资源进行操作。
    sae:Describe*名称以Describe开头的API可以对华东2(上海)地域下所有相关资源进行操作。
    sae:*Ingress*名称中包含Ingress的API可以对华东2(上海)地域下所有相关资源进行操作。
    sae:*ChangeOrder*名称中包含ChangeOrder的API可以对华东2(上海)地域下所有相关资源进行操作。
    sae:*Pipeline*名称中包含Pipeline的API可以对华东2(上海)地域下所有相关资源进行操作。
    acs:sae:cn-shanghai:*:application/test/*sae:*可以对华东2(上海)地域下命名空间ID为test的命名空间与所有应用资源进行操作。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "sae:Query*",
                    "sae:List*",
                    "sae:Describe*",
                    "sae:*Ingress*",
                    "sae:*ChangeOrder*",
                    "sae:*Pipeline*"
                ],
                "Resource": "acs:sae:cn-shanghai:*:*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "sae:*"
                ],
                "Resource": [
                    "acs:sae:cn-shanghai:*:application/test/*"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 场景二:应用级别的授权配置

    场景描述:授权产品读权限和特定应用写权限。

    例如允许使用RAM用户操作如下应用。

    应用命名空间应用ID
    应用1test0c815215-46a1-46a2-ba1e-102a740****
    应用2默认e468a92b-1529-4d20-8ab1-9d1595dc****
    ResourceAction描述
    acs:sae:cn-shanghai:*:*sae:Query*名称以Query开头的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    sae:List*名称以List开头的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    sae:Describe*名称以Describe开头的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    sae:*Ingress*名称中包含Ingress的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    sae:*ChangeOrder*名称中包含ChangeOrder的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    sae:*Pipeline*名称中包含Pipeline的API可以对华东2(上海)地域下所有命名空间与应用资源进行操作。
    acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****sae:*可以对华东2(上海)地域下命名空间ID为test的命名空间与应用1的所有资源进行操作。
    acs:sae:cn-shanghai:*:application/_default/e468a92b-1529-4d20-8ab1-9d1595dc****可以对华东2(上海)地域下默认命名空间与应用2的所有资源进行操作。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "sae:Query*",
                    "sae:List*",
                    "sae:Describe*",
                    "sae:*Ingress*",
                    "sae:*ChangeOrder*",
                    "sae:*Pipeline*"
                ],
                "Resource": "acs:sae:cn-shanghai:*:*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "sae:*"
                ],
                "Resource": [
                    "acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****",
                    "acs:sae:cn-shanghai:*:application/_default/e468a92b-1529-4d20-8ab1-9d1595dc****"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • 场景三:与SAE相关联云产品授权

    由于业务需要,应用在SAE运行时会调用类似ECS、SLB、ARMS等其他云产品的业务接口,因此RAM授权时应对相关产品的权限进行配置。例如添加只读访问ECS的权限(AliyunECSReadOnlyAccess)、只读访问SLB的权限(AliyunSLBReadOnlyAccess)和只读访问ARMS的权限(AliyunARMSReadOnlyAccess)。