启用标签细粒度资源权限管理

建议您对ECS资源使用tag进行分类管理,通过tag可以定位一类资源,对一类资源定义RAM Policy(及批量运维操作等)。如通过RAM Policy约束只能使用打了某个tag的镜像来创建ECS实例,实现分门别类的资源操作管控。

安全风险

使用标签来划分不同的资源,相比于资源组,标签是一种更加灵活的资源划分维度或者工具,比如可以按照地区、部门、环境分别给资源打上多个标签,同一个资源可以支持多个标签。如果从资源视角来看,可以把资源分成各个云产品,比如有 ECS 计算资源,有 OSS 存储资源,有 VPC 网络资源,从标签的视角,就可以更加贴近于用户的视角,可以把资源按照地区或者是部门或者是环境等多个维度来进行区分,在此基础上,可以基于标签来实现访问的控制。

最佳实践

您可以给同一业务属性的资源打上标签(Tag),然后在RAM权限策略中使用标签来约束资源,达到您按业务管理资源权限策略的目的。

例如,您有一组部署数据库的ECS实例,这组实例不允许绑定公网IP。那么您可以:

1)给这组ECS实例,打上标签,如function:database

2)在以下RAM策略示例中使用acs:ResourceTag/function:database进一步约束Resource。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",   #拒绝
      "Action": [
        "ecs:ModifyInstanceNetworkSpec",    #申请EIP
        ... ... #有内容省略
      ],
      "Resource": "acs:ecs:*:*:instance/*",   #所有ECS实例
      "Condition": {
        "StringEquals": {
          "acs:ResourceTag/function:database": ["*"]   #打了function:database Tag
        },
        "Bool": {
          "ecs:AssociatePublicIpAddress": ["true"]   #绑定公网IP
      }
    }
  ]
}

效果:打了function:database标签的ECS实例使用ModifyInstanceNetworkSpec修改网络配置时,禁止绑定公网IP。