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用户可以访问相应的阿里云资源。
您需要为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 |
|
参数说明如下。
参数 | 说明 |
$regionid | 地域ID,可用 |
$accountid | 云账号数字ID,可用 |
$namespaceid | 命名空间ID,其中由于默认命名空间ID为空,采用 说明 命名空间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)。