問題
如何建立通路控制 (RAM) 政策來授予子賬号(sub User)在指定的标簽(TAG)下 建立和管理 ECS 中 資源(支援标簽的資源)的權限? 該政策必須限制在标簽(TAG)級别權限,以便 RAM 子賬号可以建立包含特定标簽的 ECS 資源,并管理帶有标簽ECS資源。
場景描述
使用指定标簽(TAG)為子賬号(RAM User)限定通路ECS資源的邊界,這裡指支援标簽的ECS資源:執行個體/磁盤/網卡/安全組/快照/鏡像。
簡述
控制對ECS資源,比如ECS執行個體建立必須帶某個标簽TAG,否則不可以建立,具體操作如下所示
- 建立RAM政策:建立一個 RAM 政策,以授予對任何帶該特定标簽(TAG)的通路權限(主要針對ECS)。
- 授權使用者:将該 RAM 政策附加到您希望通路具備該标簽(TAG)的使用者或組。
-
資源準備:有權限的賬号建立VPC執行個體及VSW執行個體,建立完成後打上特定标簽(TAG)。
注: 下述政策沒有給出建立VPC/VSW的權限,需要可以自行添加建立權限政策。
- 安全組強制标簽建立:不帶特定标簽(TAG)建立安全組,建立不成功;帶特定标簽(TAG)建立安全組,建立成功。
- 獨立磁盤強制标簽建立:不帶特定标簽(TAG)建立磁盤:建立不成功;帶特定标簽(TAG)建立磁盤,建立成功。
- 執行個體強制标簽建立:不帶特定标簽(TAG)建立執行個體:建立不成功;帶特定标簽(TAG)建立執行個體:執行個體建立需要依賴帶特定标簽(TAG)的VPC/VSwitch/安全組,同時執行個體上也打上帶特定标簽(TAG),方可建立成功。
- 快照強制标簽建立:不帶特定标簽(TAG)建立快照:建立不成功;帶特定标簽(TAG)建立快照,建立成功。
- 自定義鏡像強制标簽建立:不帶特定标簽(TAG)建立自定義鏡像:建立不成功;帶特定标簽(TAG)建立自定義鏡像,建立成功。
- 輔助網卡強制标簽建立:不帶特定标簽(TAG)建立輔助網卡:建立不成功;帶特定标簽(TAG)建立輔助網卡,建立成功。
解決方法
建立RAM政策
在
通路控制台或者 或者使用
RAM API CreatePolicy建立政策
政策如下:
- 允許部分ECS查詢接口(标簽查詢接口3個,建立需要資源查詢接口若幹個)、VPC查詢接口( "vpc:DescribeVpcs","vpc:DescribeVSwitches")、支付訂單接口("bss:PayOrder")
- 不允許操作TAG相關接口
- 除以上外,必須帶有特定标簽(key=owner value=zhangsan)的資源才有權限查詢或者操作相關資源的權限。這裡因為使用到VPC的資源(vpc及Vswitch)也現在其必須要特定的标簽才能使用。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:tag/owner": "zhangsan"
}
}
},
{
"Effect": "Allow",
"Action": "ecs:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"vpc:tag/owner": "zhangsan"
}
}
},
{
"Action": [
"ecs:DescribeTagKeys",
"ecs:ListTagResources",
"ecs:DescribeTags",
"ecs:DescribeKeyPairs",
"ecs:DescribeImages",
"ecs:DescribeSecurityGroups",
"ecs:DescribeLaunchTemplates",
"ecs:DescribeDedicatedHosts",
"ecs:DescribeDedicatedHostTypes",
"ecs:ecs:DescribeAutoSnapshotPolicyEx",
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"bss:PayOrder"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"ecs:RemoveTags",
"ecs:UntagResources",
"ecs:AddTags",
"ecs:TagResources"
],
"Resource": "*"
}
],
"Version": "1"
}
授權使用者
将已建立的 RAM 政策附加到您希望控制通路的使用者或組。您可以使用
RAM 管理控制台、阿裡雲 CLI、阿裡雲 API
AttachPolicyToUser AttachPolicyToGroup來添加 RAM 政策。
VPC資源準備
本文沒有給VPC建立的權限。使用有VPC建立權限的賬号,進入
VPC控制台建立VPC

使用API
TagResources給建立出來的VPC/VSwitch都打上強制标簽(key=owner value=zhangsan),當然其他标簽(key=env, value=test)也可以同時加上,基于本文的RAM政策不影響通路權限。
安全組強制标簽建立
ECS(雲伺服器)控制台點選 網絡與安全 - 點選 安全組 在安全組清單頁面點選 建立安全組 填入對應的參數。
注意此處VPC資源必須是帶有特定标簽的VPC執行個體(key=owner value=zhangsan)否則也會沒有權限。
如果建立安全組不帶特定标簽(key=owner value= zhangsan)時,點選建立。
建立失敗
如果建立安全組帶特定标簽(key=owner value= zhangsan)時,點選建立。
建立成功,彈出提醒框
點選檢視安全組清單,沒有看到建立出來的安全組
在标簽指定特定的标簽(key=owner value=zhangsan)
也可以點選全局标簽設定
出現沒有權限報錯:我們對于VPC停機不收費查詢沒有在權限裡是以報錯,本文跟此配置無關,直接點選确定。
設定特定的标簽(key=owner value=zhangsan)點選确認
确認後特定标簽在控制台全局範圍生效。
在不選擇該特定标簽過濾的情況下也可以在控制台看到安全組資源。
獨立磁盤強制标簽建立
不帶上特定的标簽(key=owner value=zhangsan )點選建立。
建立
帶上特定的标簽(key=owner value=zhangsan 如下圖紅框位置)點選建立。
建立成功
設定全局變量後,可以直接查詢磁盤清單
執行個體強制标簽建立
點選 執行個體與鏡像 - 點選 執行個體 在執行個體清單頁面點選 建立執行個體 填入對應的參數。
注意此處VPC資源(VPC和VSwitch)以及ECS安全組必須是帶有特定标簽(key=owner value=zhangsan)否則也會因為沒有權限建立失敗。
選擇相關參數,帶上特定的标簽(key=owner value=zhangsan 如下圖紅框位置)點選建立。
建立成功,跳轉到支付頁面
支付完成後,開始建立資源
已設定全局标簽後,檢視執行個體清單
執行個體相關磁盤
執行個體相關網卡也可以支援檢視。
如果不帶上特定的标簽(key=owner value=zhangsan 如下圖紅框位置)點選建立,建立失敗。
快照強制标簽建立
帶上特定的标簽(key=owner value=zhangsan )點選建立。
建立成功,設定全局标簽後,檢視快照清單。
自定義鏡像強制标簽建立
建立成功。設定全局标簽後,查詢鏡像清單。
輔助網卡強制标簽建立
建立成功,設定完全局标簽後,查詢網卡清單
建立失敗。
後記
阿裡雲ECS資源已存在,可以基于ECS控制台-标簽 選擇标簽編輯器或者基于OOS(運維編排)快速給存量的資源打上指定的标簽。後續我也會有相關的如果在事後做到強制标簽。