全部產品
Search
文件中心

Auto Scaling:通過標籤鑒權精細化管理Auto Scaling

更新時間:Jun 30, 2024

Auto Scaling對伸縮組進行分類管理並控制其存取權限,既可以精細地授權某個伸縮組許可權,也可以對帶有某個標籤的伸縮組進行分組授權。本文為您介紹如何通過標籤鑒權控制RAM使用者的許可權,實現不同使用者能夠擁有不同的訪問和控制許可權,提高管理效率,同時降低資訊泄露風險。

背景資訊

  • 標籤是雲資源的標識,可以協助您從不同維度對具有相同特徵的雲資源進行分類、搜尋和彙總。更多資訊,請參見標籤

  • 存取控制RAM可基於權限原則,系統管理使用者身份,控制雲資源的訪問和操作。更多資訊,請參見什麼是存取控制

通過標籤和存取控制RAM結合,並將標籤作為權限原則的匹配條件,您可以實現對Auto Scaling的精細化管理。

基於標籤控制RAM使用者權限(即標籤鑒權)的邏輯如下:

不支援標籤鑒權的API介面說明

為某RAM使用者授予標籤鑒權的權限原則後,該RAM使用者調用下列API介面時不支援使用標籤鑒權管理Auto Scaling。

介面

不支援標籤鑒權

DescribeRegions

定時任務未綁定伸縮組時:

  • CreateScheduledTask

  • ModifyScheduledTask

  • DescribeScheduledTasks

  • DeleteScheduledTask

警示任務未綁定伸縮組時:

  • CreateAlarm

  • DescribeAlarms

  • ModifyAlarm

  • EnableAlarm

  • DeleteAlarm

樣本情境說明

本文以下列情境作為樣本,說明如何?標籤鑒權。

假如已建立2個伸縮組用於遊戲開發時使用,且各伸縮組標籤(Tag)包含環境和專案兩個維度,即environment和team。您需要控制某RAM使用者對下列伸縮組擁有不同的特定許可權,伸縮組詳情如下所示:

伸縮組

伸縮組名稱

伸縮組的標籤

伸縮組1

asg-001

  • 標籤1:environment:test,其中標籤鍵為environment,標籤值為test

  • 標籤2:team:game1,其中標籤鍵為team,標籤值為game1

伸縮組2

asg-002

  • 標籤1:environment:dev,其中標籤鍵為environment,標籤值為dev

  • 標籤2:team:game2,其中標籤鍵為team,標籤值為game2

具體情境如下所示:

  • 情境1:不允許建立不帶標籤的伸縮組,僅當建立時為伸縮組1綁定environment:testteam:game1標籤後,伸縮組1才可以建立成功。

  • 情境2:查詢伸縮組時,只允許查看伸縮組1(即綁定environment:testteam:game1標籤)資源。

  • 情境3:只允許操作伸縮組1(即綁定environment:testteam:game1標籤)的資源功能,不允許操作伸縮組2(即綁定environment:devteam:game2標籤)資源。

操作步驟

說明

操作前,請您確保已建立RAM使用者。若未建立請您先建立RAM使用者,具體操作,請參見建立RAM使用者

  1. 建立2個伸縮組。

    具體操作,請參見配置伸縮組。其中,伸縮組詳情請參見樣本情境說明

  2. 登入RAM控制台

  3. 建立自訂策略。

    具體操作,請參見建立自訂權限原則

    您可以在策略(Condition)中為雲資源設定多個標籤條件來限制對Auto Scaling資源的操作許可權。支援的標籤鑒權條件如下所示:

    標籤鑒權條件

    說明

    acs:RequestTag

    限制在請求中必須傳入特定的標籤。

    如果API請求中沒有標籤參數,則不能使用acs:RequestTag,否則會導致鑒權失敗。

    acs:ResourceTag

    限制指定的資源必須包含特定的標籤。

    如果API請求中沒有資源ID參數,則不能使用acs:ResourceTag,否則會導致鑒權失敗。

    整體樣本如下所示:

    {
        "Version": "1",
        "Statement": [
             {
               "Effect": "Allow",
               "Action": "ess:Create*",
               "Resource": "*",
               "Condition": {
                       "StringEquals": {
                            "acs:RequestTag/environment": "test",
                            "acs:RequestTag/team": "game1"
                       }
                  }
             },
             {
                "Effect": "Allow",
                "Action": "ess:Describle*",
                "Resource": "*",
                "Condition": {
                        "StringEquals": {
                        "acs:RequestTag/environment": "test",
                        "acs:RequestTag/team": "game1"
                        }
                  }
             },
             {
                "Action": "ess:*",
                "Effect": "Allow",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:ResourceTag/environment": "test",
                        "acs:ResourceTag/Team": "game1"
                      }
                  }
             },
             {
                "Effect": "Allow",
                "Action": [
                       "ess:Describe*",
                       "ess:List*",
                       "ess:DescribeRegions",
                       "ess:CreateScheduledTask",
                       "ess:ModifyScheduledTask",
                       "ess:DescribeScheduledTasks",
                       "ess:DeleteScheduledTask",
                       "ess:CreateAlarm",
                       "ess:DescribeAlarms",
                       "ess:ModifyAlarm",
                       "ess:EnableAlarm",
                       "ess:DeleteAlarm"
                    ],
        "Resource": "*"
          }
       ]
    }
    • 情境1:不允許建立不帶標籤的伸縮組1

      即僅當建立時為伸縮組1綁定environment:testteam:game1標籤後,伸縮組1才可以建立成功。

      對應的自定權限原則如下所示:

      {
          "Effect": "Allow",
          "Action": "ess:Create*",
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "acs:RequestTag/environment": "test",
                  "acs:RequestTag/team": "game1"
              }
          }
      }
    • 情境2:只允許查詢繫結標籤的伸縮組1

      即伸縮組1綁定environment:testteam:game1標籤後,查詢伸縮組時只能查詢到伸縮組1的資源。

      對應的自定權限原則如下所示:

      {
          "Effect": "Allow",
          "Action": "ess:Describle*",
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "acs:RequestTag/environment": "test",
                  "acs:RequestTag/team": "game1"
              }
          }
      }
    • 情境3:只允許操作伸縮組1,不允許操作伸縮組2

      即伸縮組1綁定了environment:testteam:game1標籤,而伸縮組2綁定environment:devteam:game2標籤。

      對應的自定權限原則如下所示:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ess:*",
                  "Effect": "Allow",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/environment": "test",
                          "acs:ResourceTag/Team": "game1"
                      }
                  }
              },
              {
                  "Action": "ess:*",
                  "Effect": "Deny",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/environment": "dev",
                          "acs:ResourceTag/team": "game2"
                      }
                  }
              },      
              {
                 "Effect": "Allow",
                 "Action": [
                         "ess:DescribeRegions",
                         "ess:CreateScheduledTask",
                         "ess:ModifyScheduledTask",
                         "ess:DescribeScheduledTasks",
                         "ess:DeleteScheduledTask",
                         "ess:CreateAlarm",
                         "ess:DescribeAlarms",
                         "ess:ModifyAlarm",
                         "ess:EnableAlarm",
                         "ess:DeleteAlarm"
                      ],
          "Resource": "*"
            }
         ]
      }
  4. 將自訂策略授權給您希望控制訪問的RAM使用者。

    具體操作,請參見為RAM使用者授權

  5. 驗證權限原則是否生效。

    • 建立伸縮組1驗證情境1

      • 伸縮組1已綁定標籤environment:testteam:game1),伸縮組1可成功建立。

      • 沒有設定標籤或者設定了其他標籤,則提示無許可權建立。資源層級鑒權執行結果

    • 查詢伸縮組驗證情境2

      • 指定查詢伸縮組1(已綁定標籤environment:testteam:game1),但查詢時未篩選標籤選項,則可以查詢到該伸縮組資訊。

      • 指定查詢除伸縮組1外的某個未綁定標籤environment:testteam:game1的伸縮組,則查詢結果為空白。

      • 沒有指定具體某伸縮組,僅搜尋environment:testteam:game1標籤,則查詢出來所有帶該標籤的伸縮組。

    • 刪除伸縮組來驗證情境3

      • 刪除的伸縮組1已綁定標籤environment:testteam:game1,則可以刪除該伸縮組。

      • 刪除的伸縮組2未綁定標籤environment:testteam:game1或設定了其他標籤,則提示無許可權刪除該伸縮組。資源層級鑒權執行結果

相關文檔