云应用 定义应用权限策略

云应用支持软件进程在运行时角色 调用云 API,通过定义该角色的权限策略,可精细控制进程所拥有的云权限,满足客户对权限管控的需要。典型场景。

相关产品
云应用 产品页,含版本规格、价格与购买入口。

一、概述

·校验软件 LICENSE 状态。

·在应用中访问对象存储 COS 桶,限制只能访问指定的存储桶(比如用户安装时选择的存储桶)。

·在应用中对运行资源实施巡检,自动重启故障节点。

二、方案说明

你只需要在 package.yaml 文件中定义权限策略语法,即可控制应用的权限范围。

三、声明方式

在 package.yaml 文件中通过 role.policy 声明权限策略,语法和 CAM 权限策略一致,详情参见 CAM 权限策略语法结构。以下是一个示例:

args: – name: app_cos label: 选择存储桶 widget: cos-bucket-selectrole: policy: version: "2.0" statement: # 权限 1:支持 LICENSE 校验 – action: – cloudapp:DescribeLicense resource: "*" effect: allow # 权限 2:支持重启应用实例标签下的 CVM – action: – cvm:RebootInstances resource: "*" condition: "for_any_value:string_equal": "qcs:tag": – "CloudappId&${var.cloudapp_id}" effect: "allow" # 权限 3:支持访问安装时选中的 COS 存储桶 – action: – "cos:*" resource: – "qcs::cos:${var.app_cos.region}:uid/${var.app_cos.app_id}:${var.app_cos.bucket}/*" – "qcs::cos:${var.app_cos.region}:uid/${var.app_cos.app_id}:${var.app_cos.bucket}/" effect: allow

注意:通过 role.policy 声明权限策略遵循「所见即所得」的原则,运行时角色具有的所有权限都需要在 package.yaml 中显性声明。

四、在策略语法中使用变量

在策略中支持使用两类变量:系统变量 和 安装参数,上述示例中:

·权限 2 的示例中,使用了 var.cloudapp_id 系统变量,实现按标签授权。

·权限 3 的示例中,使用了 var.app_cos 安装参数,实现资源级授权。

五、升级到新的策略语法

注意:说明:

原来的版本通过 scopes.cloudAPI 声明运行时角色具有的权限,示例如下:

scopes: cloudAPI: – cvm:DescribeInstances

以上的声明语法升级后如下:

role: policy: version: "2.0" statement: – action: – cvm:DescribeInstances – cloudapp:DescribeLicense resource: "*" effect: allow

升级过程中需要注意:

·老版本默认添加 cloudapp:DescribeLicense 接口到权限策略,无需显性声明。新版本中,运行时角色的权限仅包含显性声明的接口,你需要在 role.policy 中显性声明 cloudapp:DescribeLicense,否则应用无法 对接 License。

·云应用 License 检查接口已升级,如果应用内校验接口已升级,请声明 DescribeLicense,若应用内还在使用 VerifyLicense 接口,则继续声明成 VerifyLicense。

·使用新的语法之后,原来的 scopes.cloudAPI 字段需要删除。

六、完整示例

可以参见 自定义应用权限策略 演示说明。

赞 (0)
上一篇 4天前
下一篇 4天前