AutoScaling 标签鉴权使用场景实践

简介: 某公司购买了阿里云资源,为了保证阿里云资源能最大的节省使用成本,公司开通了阿里云弹性伸缩服务,其中一一部分资源归属于team1 团队,一部分资源归属于team2 团队,如何对team1 和team 2 使用的子账户进行权限分配,达到各个团队只能管理属于自己团队的资源。

什么是标签鉴权

假设某公司购买了阿里云的资源,需要对各个部门使用阿里云弹性伸缩服务进行权限的细分,因为阿里云存在访问控制服务,很容易我们就想到通过对子账户的权限设置可以达到对各个子账户的权限控制,如果公司需要分组管理资源,或者按照各个部门的职能进行对资源的权限控制,单纯的通过,限制子账户的操作,已经不能解决实际问题,所以访问控制提供标签鉴权来对资源进行分组授权

场景假设

某公司购买了阿里云资源,为了保证阿里云资源能最大的节省使用成本,公司开通了阿里云弹性伸缩服务,其中一一部分资源归属于team1 团队,一部分资源归属于team2 团队,如何对team1 和team 2 使用的子账户进行权限分配,达到各个团队只能管理属于自己团队的资源

思路分析

要想达到权限分配能达到预期效果必须满足以下几点:

  1. 各个团队在新建自己的弹性伸缩服务必须带上自己团队的标签才能新建
  2. 各个团队只能操作带有自己团队标签的弹性伸缩服务

前期准备

准备伸缩组资源

准备数个弹性伸缩组,部分带上team: team1 的标签,部分带上team:team2 的标签


  1. 为各个团队准备如下策略

团队1策略:

{

   "Statement": [

       {

           "Action": "*",

           "Condition": {

               "StringEquals": {

                   "acs:RequestTag/team": [

                       "team1"

                   ]

               }

           },

           "Effect": "Allow",

           "Resource": "*"

       },

       {

           "Action": "*",

           "Condition": {

               "StringEquals": {

                   "acs:ResourceTag/team": [

                       "team1"

                   ]

               }

           },

           "Effect": "Allow",

           "Resource": "*"

       },

       {

           "Action": [

               "*:List*",

               "*:Describe*",

               "ess:DescribeRegions",

               "ess:CreateScheduledTask",

               "ess:ModifyScheduledTask",

               "ess:DescribeScheduledTasks",

               "ess:DeleteScheduledTask",

                "ess:CreateAlarm",

                "ess:DescribeAlarms",

                "ess:ModifyAlarm",

                "ess:EnableAlarm",

                "ess:DeleteAlarm"

           ],

           "Effect": "Allow",

           "Resource": "*"

       }

   ],

   "Version": "1"

}


团队2策略:


{

   "Statement": [

       {

           "Action": "*",

           "Condition": {

               "StringEquals": {

                   "acs:RequestTag/team": [

                       "team2"

                   ]

               }

           },

           "Effect": "Allow",

           "Resource": "*"

       },

       {

           "Action": "*",

           "Condition": {

               "StringEquals": {

                   "acs:ResourceTag/team": [

                       "team2"

                   ]

               }

           },

           "Effect": "Allow",

           "Resource": "*"

       },

       {

           "Action": [

               "*:List*",

               "*:Describe*",

               "ess:DescribeRegions",

               "ess:CreateScheduledTask",

               "ess:ModifyScheduledTask",

               "ess:DescribeScheduledTasks",

               "ess:DeleteScheduledTask",

                "ess:CreateAlarm",

                "ess:DescribeAlarms",

                "ess:ModifyAlarm",

                "ess:EnableAlarm",

                "ess:DeleteAlarm"

           ],

           "Effect": "Allow",

           "Resource": "*"

       }

   ],

   "Version": "1"

}

给各自团队的子账户授权

如何为子账户授权详情请见子账户授权帮助文档

验证控制台效果

创建资源必须带团队的标签

不带团队标签创建,预期失败

带团队标签创建,预期成功


操作的资源必须含有团队的标签

操作其他团队的资源,预期不成功

操作自己团队的资源,预期成功


目录
相关文章
|
4月前
|
Kubernetes 监控 调度
在K8S中,DaemonSet类型资源特性?
在K8S中,DaemonSet类型资源特性?
|
4月前
|
Kubernetes 负载均衡 安全
【技术揭秘】阿里云容器服务Ingress高级玩法:如何轻松实现客户端原始IP透传,提升应用安全性与用户体验!
【8月更文挑战第17天】本文介绍如何在阿里云容器服务中配置Ingress以透传客户端原始IP地址。通过Ingress可实现HTTP负载均衡等功能。需在Ingress定义文件中添加特定注解,如`nginx.ingress.kubernetes.io/real-ip-header: X-Real-IP`。创建并应用Ingress配置后,后端服务可通过读取`X-Real-IP`头获取真实IP。此举有助于安全审计及流量分析。
133 2
|
4月前
|
Prometheus Kubernetes 监控
在K8S中,DaemonSet类型的资源特性有哪些?
在K8S中,DaemonSet类型的资源特性有哪些?
|
4月前
|
存储 Kubernetes API
在K8S中,静态、动态、自主式Pod有何区别?
在K8S中,静态、动态、自主式Pod有何区别?
|
4月前
|
Prometheus Kubernetes 监控
在k8S中,DaemonSet类型的资源特性有哪些?
在k8S中,DaemonSet类型的资源特性有哪些?
|
存储 Kubernetes Linux
【探索 Kubernetes|作业管理篇 系列 8】探究 Pod 的 API 对象属性级别与重要字段用法
【探索 Kubernetes|作业管理篇 系列 8】探究 Pod 的 API 对象属性级别与重要字段用法
118 1
|
Kubernetes 负载均衡 容器
Kubernetes LoadBalancer使用场景例子及配置步骤
Kubernetes 的 LoadBalancer 类型的服务用于将流量从集群外部的负载均衡器路由到集群内的服务。它通常用于公共云提供商(如 AWS、GCP、Azure)或者其他支持这种负载均衡机制的环境中。 以下是一个使用场景的例子:假设你在 Kubernetes 集群中部署了一个 web 应用程序,并希望将该应用程序暴露给外部用户,以便他们可以通过公共网络访问这个应用程序。你可以使用 LoadBalancer 类型的服务来实现这一目标。 下面是配置步骤: 1. 创建一个 `Service` 对象,并设置 `type: LoadBalancer`。 ```yaml apiVersio
2191 0
|
消息中间件 域名解析 Kubernetes
Kubernetes ExternalName的使用场景例子及配置步骤
Kubernetes 的 ExternalName 是一种用于将 Kubernetes 集群中的服务映射到集群外部服务的机制。它通常用于将集群内的服务与集群外部的服务进行互联,比如连接到外部数据库、消息队列或者其他无法直接暴露在集群中的服务。 以下是一个使用场景的例子:假设你的应用程序需要连接到一个名为 "external-service.example.com" 的外部服务,该服务可能是在 Kubernetes 集群之外运行的数据库或其他类型的服务。你可以使用 ExternalName 来将该外部服务暴露给 Kubernetes 集群内的其他服务。 下面是配置步骤: 1. 创建一个 `
1475 0
|
监控 Dubbo Linux
微服务 热点流控 规则-授权 系统规则 自定义返回
微服务 热点流控 规则-授权 系统规则 自定义返回
103 0
|
Kubernetes Cloud Native API
带你读《云原生应用开发:Operator原理与实践》——2.3.1 Kubernetes API 访问控制
带你读《云原生应用开发:Operator原理与实践》——2.3.1 Kubernetes API 访问控制