开发者社区> 洛小蒙> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ECS基于标签动态进行资源权限管理

简介: 某上云企业希望进行权限动态管理,又不希望进行策略频繁变更的时候。可以基于标签进行授权,当添加标签的时候就有权限,删除标签的时候就没有权限。方便快捷的进行动态的权限管理。具体如何实现动态权限管理?本文将针对此问题进行介绍。
+关注继续查看

场景

某公司希望根据不同的角色对于资源进行管理。

  • datacenter成员: 授权访问带有project:datacenter的ECS所有资源。
  • bizcenter成员:授权访问带有project:bizcenter的ECS所有资源。
  • 资源生产者: 资源生产。
  • 资源授权管理者: 资源授权:对资源进行打标签, 需要资源具备权限则添加该标签,希望资源没有权限删除该标签就可以,不需要进行权限修改。

权限设计如下

datacenter成员

  • 子账号直接使用情况,具体到访问控制进行操作。
  • 属于该项目的成员所使用子账号通过授权下列权限就可以访问datacenter的资源。
  • 注意:在ecs控制台过滤资源时需要根据标签project:datacenter才能看到资源,默认情况没有筛选标签是看不到资源的。

授权策略设计如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "acs:ResourceTag/project": "datacenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:List*",
        "ecs:Describe*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "acs:RequestTag/project": "datacenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "tag:List*",
        "ecs:DescribeTags",
        "ecs:DescribeResourceByTags",
        "ecs:DescribeTagKeys",
        "ecs:ListTagResources",
        "ecs:DescribeRegions",
        "ecs:DescribeZones",
        "ecs:DescribeDisk*",
        "ecs:DescribeSecurityGroup*",
        "ecs:DescribeInstanceTypes",
        "ecs:DescribeSnapshot*",
        "ecs:DescribeNetworkInterface*",
        "actiontrail:LookupEvents"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:InvokeCommand",
        "ecs:RunCommand",
        "ecs:StopInvocation",
        "ecs:SendFile"
      ],
      "Resource": "acs:ecs:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "acs:ResourceTag/project": "datacenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:InvokeCommand",
        "ecs:RunCommand",
        "ecs:StopInvocation",
        "ecs:SendFile"
      ],
      "Resource": "acs:ecs:*:*:command/*"
    }
  ]
}

bizcenter成员

  • 子账号通过固定角色使用该权限
  • 访问控制 控制台-身份管理-角色-创建角色,名称为bizcenter-member
  • 注意:在ecs控制台过滤资源时需要根据标签project:bizcenter才能看到资源,默认情况没有筛选标签是看不到资源的。

授权策略设计如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "acs:ResourceTag/project": "bizcenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:List*",
        "ecs:Describe*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "acs:RequestTag/project": "bizcenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "tag:List*",
        "ecs:DescribeTags",
        "ecs:DescribeResourceByTags",
        "ecs:DescribeTagKeys",
        "ecs:ListTagResources",
        "ecs:DescribeRegions",
        "ecs:DescribeZones",
        "ecs:DescribeDisk*",
        "ecs:DescribeSecurityGroup*",
        "ecs:DescribeInstanceTypes",
        "ecs:DescribeSnapshot*",
        "ecs:DescribeNetworkInterface*",
        "actiontrail:LookupEvents"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:InvokeCommand",
        "ecs:RunCommand",
        "ecs:StopInvocation",
        "ecs:SendFile"
      ],
      "Resource": "acs:ecs:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "acs:ResourceTag/project": "bizcenter"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:InvokeCommand",
        "ecs:RunCommand",
        "ecs:StopInvocation",
        "ecs:SendFile"
      ],
      "Resource": "acs:ecs:*:*:command/*"
    }
  ]
}

  • bizcenter成员所使用子账号需要通过角色扮演bizcenter-member进行使用bizcenter的资源。

授权策略设计如下:

{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "acs:ram:*:*:role/bizcenter-member"
        }
    ],
    "Version": "1"
}

资源生产者

  • 如果资源生产者是资源管理者则使用AliyunECSFullAccess权限即可。
  • 如果资源生产者生产的资源必须带有标签project:anyValue,则权限如下。

授权策略设计如下:

{
    "Version": "1",
    "Statement": [
         {
            "Effect": "Allow",
            "Action": [
                "ecs:Run*",
                "ecs:Create*",
                "ecs:Purchase*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "acs:RequestTag/project": "*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:List*",
                "ecs:Describe*",
                "vpc:DescribeVpcs",
                "vpc:DescribeVSwitches",
                "bss:PayOrder"
            ],
            "Resource": "*"
        }
    ]
}

资源授权管理者

  • 如果资源授权管理者必须对资源打上标签project:anyValue标签,则权限如下:
  • 如何识别资源标签规范可以使用标签策略,确保资源都可以进行正确的标签。

授权策略设计如下:

{
    "Version": "1",
    "Statement": [
         {
            "Effect": "Allow",
            "Action": [
                "ecs:Tag*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "acs:RequestTag/project": "*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "tag:*",
                "ecs:Untag*",
                "ecs:List*",
                "ecs:Describe*"
            ],
            "Resource": "*"
        }
    ]
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
最通俗易懂的介绍什么是数据库 | 零基础自学SQL课程系列Day1
SQL课程今天开更~ 目录可以点击这里查看:SQL课程目录 第一课主要带大家建立SQL的认知。
25 0
cocopods 命令行执行命令时报错You don't have write permissions for the /Library/*
cocopods 命令行执行命令时报错You don't have write permissions for the /Library/*
481 0
EasyUI+JavaWeb奖助学金管理系统[5]-使用ApacheCommonDbUtils进行数据访问类开发
本文目录 1. 本章任务 2. 数据模型类开发 3. 数据访问类选型 4. 数据访问类开发 5. 测试验证
43 0
开源项目推荐:音视频项目之OBS/Shotcut/Openshot/Kdenlive/QtAV
开源项目推荐:音视频项目之OBS/Shotcut/Openshot/Kdenlive/QtAV
169 0
多多客开源版,微信开放平台的小程序SaaS 系统,基于doodoo.js,vue.js
多多客作为青否原班人马打造的小程序第三方平台,结合5年商城系统、近2年小程序SaaS平台研发及运营经验,将重点发力小程序个性化和各类营销玩法,联合服务商、开发者、经营专家,共建服务生态,服务百万商家。
1851 0
AgileEAS.NET平台视频会议培训第三辑-插件的安装、配置以及账户权限系统演练
一、视频会议培训回顾 在前一周我们做了两次视频会议培训,内容分别为AgileEAS.NET平台的整体结构及开源药店系统的搭建演俩、基于AgileEAS.NET的插件开发过程演示,以上内容在AgileEAS.NET平台视频会议培训第一辑-AgileEAS.NET平台介绍及药品系统的SAAS搭建演练、AgileEAS.NET平台视频会议培训第二辑-简单插件开发应用演练(速度下载)做了详细的介绍。
689 0
+关注
洛小蒙
coding is all about communication
59
文章
12
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载