全部產品
Search
文件中心

Resource Access Management:使用標籤對ECS執行個體進行分組授權

更新時間:Jun 08, 2024

本文介紹了如何使用標籤對ECS執行個體進行分組並授權,以限制RAM使用者只能查看和管理被授權的ECS執行個體。

應用情境

假設您的阿里雲帳號(主帳號)購買了10個ECS執行個體,其中5個想要授權給developer團隊,另外5個授權給operator團隊。企業希望每個團隊只能查看和管理被授權的ECS執行個體,未被授權的ECS執行個體不允許查看。

解決方案

  • 按標籤標識不同團隊的ECS執行個體。

    規劃兩個標籤,分別用來標識developer團隊和operator團隊的ECS執行個體。

  • 將RAM使用者分組。

    規劃兩個RAM使用者組,分別對應developer團隊和operator團隊,然後將對應團隊的RAM使用者加入到對應的RAM使用者組。

  • 基於標籤鑒權對RAM使用者組進行授權。

    規劃兩個自訂權限原則,使用如下標籤鑒權Condition確定資源範圍。然後,將不同的權限原則授權給不同的RAM使用者組,RAM使用者組中的RAM使用者將繼承RAM使用者組的許可權。

    • acs:RequestTag/<tag-key>:請求中傳遞的標籤資訊。即使用者在調用API的時候,請求參數裡面必須攜帶的標籤。

    • acs:ResourceTag/<tag-key>:請求訪問的資源上綁定的標籤資訊。即使用者在操作某個資源的時候,資源上必須具備的標籤。

具體規劃資訊如下:

團隊

RAM使用者組

RAM權限原則

標籤

developer團隊

developer

policyForDevTeam

標籤鍵:team;標籤值:dev。

operator團隊

operator

policyForOpsTeam

標籤鍵:team;標籤值:ops。

操作步驟

您可以使用阿里雲帳號(主帳號)或具有許可權(AliyunRAMFullAccess和AliyunECSFullAccess)的RAM使用者完成下述操作。

  1. ECS控制台,為ECS執行個體建立並綁定標籤。

    為5個ECS執行個體綁定標籤team:dev,另外5個ECS執行個體綁定標籤team:ops。具體操作,請參見建立或綁定標籤

  2. RAM控制台,建立RAM使用者組。

    建立2個RAM使用者組:developer、operator,分別對應developer和operator團隊。具體操作,請參見建立RAM使用者組

  3. RAM控制台,建立RAM使用者並將其加入到對應的RAM使用者組。

    按需為每個團隊建立適量的RAM使用者,然後將RAM使用者分別加入到RAM使用者組developer或operator。具體操作,請參見建立RAM使用者為RAM使用者組添加RAM使用者

  4. RAM控制台,建立自訂權限原則。

    建立2個自訂權限原則:policyForDevTeam、policyForOpsTeam。具體操作,請參見建立自訂權限原則

    policyForDevTeam權限原則內容:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:RequestTag/team": [
                            "dev"
                        ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:ResourceTag/team": [
                            "dev"
                        ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:DescribeTags",
                    "ecs:ListTagResources"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": [
                    "ecs:DeleteTags",
                    "ecs:UntagResources",
                    "ecs:CreateTags",
                    "ecs:TagResources"
                ],
                "Resource": "*"
            }
        ]
    }

    policyForOpsTeam權限原則內容:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:RequestTag/team": [
                            "ops"
                        ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:ResourceTag/team": [
                            "ops"
                        ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:DescribeTags",
                    "ecs:ListTagResources"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": [
                    "ecs:DeleteTags",
                    "ecs:UntagResources",
                    "ecs:CreateTags",
                    "ecs:TagResources"
                ],
                "Resource": "*"
            }
        ]
    }

    權限原則說明:

    策略內容

    策略說明

    {
    	"Effect": "Allow",
    	"Action": "ecs:*",
    	"Resource": "*",
    	"Condition": {
    		"StringEquals": {
    			"acs:RequestTag/team": [
    				"dev"
    			]
    		}
    	}
    }

    允許通過標籤team:dev篩選對應的ECS執行個體。

    {
    	"Effect": "Allow",
    	"Action": "ecs:*",
    	"Resource": "*",
    	"Condition": {
    		"StringEquals": {
    			"acs:ResourceTag/team": [
    				"dev"
    			]
    		}
    	}
    }

    允許對綁定了標籤team:dev的ECS執行個體進行管理操作。

    {
    	"Effect": "Allow",
    	"Action": [
    		"ecs:DescribeTags",
    		"ecs:ListTagResources"
    	],
    	"Resource": "*"
    }

    允許查看ECS執行個體的所有標籤列表。

    說明

    如果您不需要查看所有標籤列表,可以刪除該條策略。刪除後,您可以通過手動輸入標籤鍵和標籤值的方式篩選ECS執行個體。

    {
    	"Effect": "Deny",
    	"Action": [
    		"ecs:DeleteTags",
    		"ecs:UntagResources",
    		"ecs:CreateTags",
    		"ecs:TagResources"
    	],
    	"Resource": "*"
    }

    不允許刪除、解除綁定、建立、綁定標籤。

    避免RAM使用者因修改標籤導致沒有許可權。

  5. 為RAM使用者組授權。

    為RAM使用者組developer授予自訂權限原則policyForDevTeam;為RAM使用者組operator授予自訂權限原則policyForOpsTeam。具體操作,請參見為RAM使用者組授權

    說明

    授權後RAM使用者將繼承對應RAM使用者組的許可權。

驗證結果

  1. 使用RAM使用者登入ECS控制台

  2. 在左側導覽列,選擇執行個體與鏡像 > 執行個體

  3. 在頂部功能表列左上方處,選擇地區。

  4. 執行個體頁面,單擊搜尋欄旁邊的標籤篩選,選擇對應的標籤鍵和標籤值。

    例如:在RAM使用者組developer中的RAM使用者,可以通過標籤team:dev篩選有許可權的ECS執行個體。標籤過濾

    重要

    只有當RAM使用者選擇了對應標籤後,RAM使用者才能查看到綁定了該標籤的ECS執行個體。否則,RAM使用者無法查看到任何ECS執行個體。

  5. 查看和管理有許可權的ECS執行個體。

更多資訊

使用標籤對Block Storage、快照、鏡像、安全性群組、彈性網卡、Dedicated Host、SSH金鑰組等ECS資源進行分組授權的方法與上述對執行個體分組授權的方法相同。