概述
校验软件 LICENSE 状态
在应用中访问对象存储 COS 桶,限制只能访问指定的存储桶(比如用户安装时选择的存储桶)。
在应用中对运行资源实施巡检,自动重启故障节点。
方案说明
您只需要在
package.yaml
文件中定义权限策略语法,即可控制应用的权限范围。声明方式
args:- name: app_coslabel: 选择存储桶widget: cos-bucket-selectrole:policy:version: "2.0"statement:# 权限 1:支持 LICENSE 校验- action:- cloudapp:VerifyLicenseresource: "*"effect: allow# 权限 2:支持重启应用实例标签下的 CVM- action:- cvm:RebootInstancesresource: "*"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
声明的权限依然生效。新的权限声明语法提供了更精细的权限控制,强烈建议您升级到新的声明语法,通过
role.policy
来声明权限策略。原来的版本通过
scopes.cloudAPI
声明运行时角色具有的权限,示例如下:scopes:cloudAPI:- cvm:DescribeInstances
以上的声明语法升级后如下:
role:policy:version: "2.0"statement:- action:- cvm:DescribeInstances- cloudapp:VerifyLicenseresource: "*"effect: allow
升级过程中需要注意:
老版本默认添加
cloudapp:VerifyLicense
接口到权限策略,无需显性声明。新版本中,运行时角色的权限仅包含显性声明的接口,您需要在 role.policy
中显性声明 cloudapp:VerifyLicense
,否则应用无法 对接 License。使用新的语法之后,原来的
scopes.cloudAPI
字段需要删除。完整示例