什么是标签鉴权
假设某公司购买了阿里云的资源,需要对各个部门使用阿里云弹性伸缩服务进行权限的细分,因为阿里云存在访问控制服务,很容易我们就想到通过对子账户的权限设置可以达到对各个子账户的权限控制,如果公司需要分组管理资源,或者按照各个部门的职能进行对资源的权限控制,单纯的通过,限制子账户的操作,已经不能解决实际问题,所以访问控制提供标签鉴权来对资源进行分组授权
场景假设
某公司购买了阿里云资源,为了保证阿里云资源能最大的节省使用成本,公司开通了阿里云弹性伸缩服务,其中一一部分资源归属于team1 团队,一部分资源归属于team2 团队,如何对team1 和team 2 使用的子账户进行权限分配,达到各个团队只能管理属于自己团队的资源
思路分析
要想达到权限分配能达到预期效果必须满足以下几点:
- 各个团队在新建自己的弹性伸缩服务必须带上自己团队的标签才能新建
- 各个团队只能操作带有自己团队标签的弹性伸缩服务
前期准备
准备伸缩组资源
准备数个弹性伸缩组,部分带上team: team1 的标签,部分带上team:team2 的标签
- 为各个团队准备如下策略
团队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"
}
给各自团队的子账户授权
如何为子账户授权详情请见子账户授权帮助文档
验证控制台效果
创建资源必须带团队的标签
不带团队标签创建,预期失败
带团队标签创建,预期成功
操作的资源必须含有团队的标签
操作其他团队的资源,预期不成功
操作自己团队的资源,预期成功