权限策略和示例

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用户可以访问相应的阿里云资源。

image.png

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

权限策略名称

说明

AliyunSAEFullAccess

管理SAE的权限,授权后才能执行应用管理相关的操作。若不需要SAE Full权限,可以通过SAE权限助手进行细粒度定制化权限设置。

AliyunSLBReadOnlyAccess

只读访问SLB的权限,授权后才能使用SLB的相关功能。

AliyunACMFullAccess

管理ACM的权限,授权后才能使用SAE内置的分布式配置管理的功能。

AliyunECSReadOnlyAccess

只读ECS的权限,授权后才能在创建应用时选择已有的安全组列表。

AliyunOOSReadOnlyAccess

只读OOS的权限,授权后才能使用SAE的批量定时启停应用的功能。

AliyunBSSReadOnlyAccess

只读BSS的权限,授权后才能在SAE概览页查看购买的资源包的余量。

AliyunARMSReadOnlyAccess

只读ARMS的权限,授权后才能使用SAE内置的应用监控管理功能。

AliyunRAMReadOnlyAccess

只读RAM的权限,授权后才能查询RAM用户拥有的权限列表,提示需要配置的权限。

AliyunCloudMonitorReadOnlyAccess

只读云监控的权限,授权后才能使用SAE内置的基础监控功能。

AliyunContainerRegistryReadOnlyAccess

只读容器镜像服务的权限,授权后才能在SAE应用部署镜像时,选择容器镜像服务企业版。

AliyunALBReadOnlyAccess

只读访问应用型负载均衡服务(ALB)的权限。

AliyunYundunCertReadOnlyAccess

只读访问云盾证书服务的权限。

AliyunEventBridgeReadOnlyAccess

只读EB的权限,授权后才能使用创建更新Job的功能。

说明

AliyunSAEFullAccess表示拥有对SAE所有资源的所有操作权限。如果您需要限制RAM用户拥有更细粒度的权限,例如命名空间级别、应用级别和关联产品等,请参见自定义策略

自定义策略

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

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

鉴权规则

资源描述如下。

资源类型

授权策略中的资源描述

application

acs: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的命名空间及其所属应用的资源。

    Resource

    Action

    描述

    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

    应用1

    test

    0c815215-46a1-46a2-ba1e-102a740****

    应用2

    默认

    e468a92b-1529-4d20-8ab1-9d1595dc****

    Resource

    Action

    描述

    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)。