Serverless应用引擎的权限管理是通过阿里云的访问控制RAM(Resource Access Management)产品实现的。使用RAM可以让您避免与其他用户共享云账号密钥,即AccessKey(包含AccessKey ID和AccessKey Secret),按需为用户授予最小权限。本文介绍Serverless应用引擎在RAM中的权限策略和授权配置示例。

前提条件

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

背景信息

Serverless应用引擎支持以下RAM的权限策略:

系统策略

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

子账号授权提示

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

权限策略名称 说明
AliyunSAEFullAccess 管理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应用部署镜像时,选择容器镜像服务企业版。
说明 AliyunSAEFullAccess表示拥有对SAE所有资源的所有操作权限。如果您需要限制RAM用户拥有更细粒度的权限,例如命名空间级别、应用级别和关联产品等,请参见自定义策略

自定义策略

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

SAE权限助手能够协助您对SAE的权限进行可视化配置,生成对应的权限语句,并通过RAM控制台创建相应的自定义策略并授权给RAM用户。更多信息,请参见使用SAE权限助手创建权限策略创建自定义策略

鉴权规则

资源描述如下:

资源类型 授权策略中的资源描述
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)。