全部產品
Search
文件中心

Elastic Container Instance:通過標籤實現RAM使用者鑒權

更新時間:Jul 06, 2024

本文介紹如何基於標籤控制RAM使用者權限,實現不同的使用者可以擁有不同雲資源的訪問和操作許可權。

背景資訊

標籤可用於標識雲資源,實現分類管理資源;存取控制RAM可基於權限原則,控制雲資源的訪問和操作許可權。結合標籤和RAM,將標籤作為權限原則的匹配條件,可以實現雲資源精微調權限管理。

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

標籤鑒權邏輯

說明

支援綁定標籤的ECI資源套件括ECI執行個體、鏡像緩衝和虛擬節點;僅支援在建立或者更新ECI資源時為其綁定標籤。更多資訊,請參見使用標籤管理ECI執行個體

配置樣本

樣本情境說明

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

假設您需要控制某一RAM使用者只能操作特定(假設綁定了env:test標籤)的ECI資源,如下圖:標籤鑒權

具體需求包括:

  • 需求1:不允許建立不帶標籤的ECI資源,僅當建立時為ECI資源綁定env:test標籤才可以建立成功。

  • 需求2:只允許操作自身建立(即綁定env:test標籤)的ECI資源,不允許操作其他ECI資源。

  • 需求3:查詢ECI資源時,只允許查看自身建立(即綁定env:test標籤)的ECI資源。

步驟一:配置自訂權限原則並授權

  1. 使用阿里雲帳號登入RAM控制台

  2. 在左側導覽列選擇許可權管理>權限原則

  3. 權限原則頁面,單擊建立權限原則

  4. 完成自訂策略配置。

    1. 單擊匯入策略頁簽。

    2. 在彈出的對話方塊的右側篩選項中選擇系統策略,然後搜尋並選中AliyunECIFullAccess,單擊匯入

      AliyunECIFullAccess為系統預設的管理ECI資源的許可權,包括操作ECI資源、查詢相關資源(安全性群組、VPC等資源)、建立ECI服務關聯角色等許可權。

    3. 單擊指令碼編輯頁簽。

    4. 在編輯框中修改權限原則內容,然後單擊繼續編輯基本資料

      說明

      權限原則是一組存取權限的集合。結構包括版本號碼和授權語句列表,每條授權語句包括授權效果(Effect)、操作(Action)、資源(Resource)以及條件(Condition,可選項)。更多資訊,請參見權限原則文法和結構權限原則基本元素

      在權限原則的Condition中,您可以增加需要匹配標籤的條件來限制操作許可權。支援的標籤條件關鍵字如下:

      標籤條件關鍵字

      說明

      acs:RequestTag

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

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

      acs:ResourceTag

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

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

      說明

      設計權限原則時,您可以根據各操作介面特性(API請求是否需要指定資源ID、是否支援傳入標籤),結合實際業務需求,來設定acs:RequestTagacs:ResourceTag。更多資訊,請參見API介面鑒權說明

      根據樣本情境中的需求,設計權限原則如下:

      需求

      權限原則

      不允許建立不帶標籤的ECI資源,僅當建立時為ECI資源綁定env:test標籤才可以建立成功

      {
         "Effect": "Allow",
         "Action": "eci:Create*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:RequestTag/env": "test"
          }
         }
        }

      只允許操作綁定了env:test標籤的ECI資源,不允許操作其他資源

      {
         "Effect": "Allow",
         "Action": "eci:*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:ResourceTag/env": "test"
          }
         }
        }

      查詢ECI資源時,只允許查看綁定了env:test標籤的ECI資源。

      {
         "Effect": "Allow",
         "Action": "eci:Describe*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:RequestTag/env": "test"
          }
         }
        }

      結合AliyunECIFullAccess已有的權限原則,完整權限原則樣本如下:

      {
       "Version": "1",
       "Statement": [{
         "Effect": "Allow",
         "Action": "eci:Create*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:RequestTag/env": "test"
          }
         }
        },
        {
         "Effect": "Allow",
         "Action": "eci:*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:ResourceTag/env": "test"
          }
         }
        },
        {
         "Effect": "Allow",
         "Action": "eci:Describe*",
         "Resource": "*",
         "Condition": {
          "StringEquals": {
           "acs:RequestTag/env": "test"
          }
         }
        },
        {
         "Action": [
          "ecs:DescribeSecurityGroups"
         ],
         "Resource": "*",
         "Effect": "Allow"
        },
        {
         "Action": [
          "vpc:DescribeVSwitches",
          "vpc:DescribeVpcs",
          "vpc:DescribeEipAddresses"
         ],
         "Resource": "*",
         "Effect": "Allow"
        },
        {
         "Action": "ram:CreateServiceLinkedRole",
         "Resource": "*",
         "Effect": "Allow",
         "Condition": {
          "StringEquals": {
           "ram:ServiceName": [
            "eci.aliyuncs.com",
            "vnode.eci.aliyuncs.com"
           ]
          }
         }
        }
       ]
      }
      說明

      如果您通過OpenAPI操作ECI資源,則使用AliyunECIFullAccess的許可權即可;如果您通過ECI控制台操作ECI資源,則除了AliyunECIFullAccess的許可權外,還需添加額外許可權。更多資訊,請參見為RAM使用者授權

    5. 輸入權限原則名稱,單擊確定

  5. 將自訂權限原則授予RAM使用者。

    1. 在左側導覽列選擇身份管理>使用者

    2. 建立RAM使用者。

      請根據自身管理需求建立相應的RAM使用者。具體操作,請參見建立RAM使用者。如果已有RAM使用者,可跳過該步驟。

    3. 為RAM使用者授權。

      為RAM使用者授予新建立的自訂權限原則,具體操作,請參見為RAM使用者授權

步驟二:驗證權限原則是否生效

  1. 使用RAM使用者登入OpenAPI平台

  2. 測試權限原則是否生效。

    以ECI執行個體為例進行測試:

    • 建立ECI執行個體

      • 設定了env:test標籤,則可以建立。

      • 沒有設定標籤或者設定了其他標籤,則無法建立,提示沒有許可權。

    • 刪除ECI執行個體

      • 刪除的執行個體綁定了env:test標籤,則可以刪除。

      • 刪除的執行個體沒有綁定env:test標籤,則無法刪除,提示沒有許可權。

    • 查詢ECI執行個體

      • 指定執行個體(該執行個體綁定了env:test標籤)但沒有設定標籤,則查詢出指定執行個體的資訊。

      • 指定執行個體(該執行個體沒有綁定env:test標籤),則查詢結果為空白。

      • 沒有指定執行個體,僅設定env:test標籤,則查詢出帶有env:test標籤的所有執行個體資訊。

      • 沒有指定執行個體也沒有設定標籤,則查詢結果為空白。

API介面鑒權說明

為某一RAM使用者授予含有標籤鑒權的權限原則後,該RAM使用者調用各API介面時的鑒權情況如下表所示:

介面

鑒權說明

CreateContainerGroup、CreateImageCache等建立介面

該類介面無需指定資源ID,則匹配acs:RequestTag

  • 沒有傳入標籤,或者傳入的標籤不包含授權標籤,則鑒權不通過。

  • 傳入完全符合的標籤,或者傳入的標籤包含了授權標籤,則鑒權通過。

DescribeContainerGroups、DescribeImageCaches等查詢介面

該類介面按需指定資源ID或傳入標籤,則匹配acs:ResourceTagacs:RequestTag

  • 傳入資源ID和標籤,如果指定資源綁定的標籤能夠匹配acs:ResourceTag,或者傳入的標籤能夠匹配acs:RequestTag,則鑒權通過,反之則鑒權不通過。

  • 傳入資源ID,沒有傳入標籤,如果指定資源綁定的標籤能夠匹配acs:ResourceTag,則鑒權通過,反之則鑒權不通過。

  • 沒有傳入資源ID,傳入標籤,如果傳入的標籤能夠匹配acs:RequestTag,則鑒權通過,反之則鑒權不通過。

  • 沒有傳入資源ID,也沒有傳入標籤,則鑒權不通過。

說明

查詢介面在鑒權不通過時,返回結果為空白,並不會報錯。

UpdateContainerGroup、UpdateImageCache等更新介面

該類介面必須指定資源ID,則匹配acs:ResourceTag

  • 不傳入標籤,如果指定資源綁定的標籤能夠匹配,則鑒權通過,反之則鑒權不通過。

  • 傳入標籤(即更新標籤),如果指定資源綁定的標籤能夠匹配,且同時具備所傳入標籤的許可權,則鑒權通過,反之則鑒權不通過。

說明

更新標籤時,RAM使用者需要分別具有更新前後的標籤許可權。即授權時,需要授予使用者兩個自訂權限原則,分別包含更新前後的標籤條件限制。

RestartContainerGroup、ExecContainerCommand等其他動作介面

該類介面必須指定資源ID,則匹配acs:ResourceTag

  • 如果指定資源綁定的標籤不能匹配,則鑒權不通過。

  • 如果指定資源綁定的標籤能夠匹配,則鑒權通過。