全部產品
Search
文件中心

Microservices Engine:註冊配置中心授權

更新時間:Jul 30, 2024

MSE支援阿里雲帳號給RAM使用者授予MSE的操作許可權,避免因暴露阿里雲帳號密鑰造成的安全風險。本文介紹如何建立RAM使用者並授予RAM使用者權限,授權後您就可以通過RAM使用者使用MSE。

使用情境

某企業開通了微服務引擎MSE服務,由於員工工作職責不同,對資源操作要求的權限也不同,現有如下需求:

  • 鑒於安全或信任原因,不希望將雲帳號密鑰直接透露給員工,期望可以為員工相應的帳號授予許可權。

  • 使用者帳號只能在授權的前提下操作資源,不需要進行獨立的計量計費,所有開銷均計入企業帳號名下。

  • 隨時可以撤銷使用者帳號的許可權,也可以隨時刪除其建立的使用者帳號。

  • MSE作為一個託管型產品,有開發和營運兩個角色,其中營運人員負責叢集的管理、命名空間和許可權的管理,而開發人員負責配置和服務管理。

使用說明

本文檔內容涉及圖中引擎管控鏈路的存取權限的配置和使用,即阿里雲帳號授予RAM使用者權限後,被授予該許可權的RAM使用者擁有對控制台(OpenAPI)的相關操作許可權。

投影片1.JPG

說明

關於引擎直連鏈路的訪問鑒權配置和使用,即Nacos Client可以通過RAM使用者訪問MSE的Nacos的具體操作,請參見授權SDK訪問

步驟一:建立RAM使用者

使用阿里雲帳號登入RAM控制台並建立RAM使用者。

  1. 使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台

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

  3. 使用者頁面,單擊建立使用者

  4. 建立使用者頁面的使用者帳號資訊地區,設定使用者基本資料。

    • 登入名稱稱:可包含英文字母、數字、半形句號(.)、短劃線(-)和底線(_),最多64個字元。

    • 顯示名稱:最多包含128個字元或漢字。

    • 標籤:單擊edit,然後輸入標籤鍵和標籤值。為RAM使用者綁定標籤,便於後續基於標籤的使用者管理。

    說明

    單擊添加使用者,可以大量建立多個RAM使用者。

  5. 訪問方式地區,選中控制台訪問OpenAPI 呼叫訪問

    • 控制台訪問:完成對登入安全的基本設定,包括自動產生或自訂登入密碼、是否要求下次登入時重設密碼以及是否要求開啟多因素認證。

      說明

      自訂登入密碼時,密碼必須滿足您在身份管理 > 設定中設定的密碼複雜度規則。關於如何設定密碼複雜度規則,請參見設定RAM使用者密碼強度

    • OpenAPI 呼叫訪問:自動為RAM使用者產生存取金鑰(AccessKey),支援通過API或其他開發工具訪問阿里雲。

    說明

    為了保障帳號安全,建議僅為RAM使用者選擇第一種登入方式,避免RAM使用者離開組織後仍可以通過存取金鑰訪問阿里雲資源。

  6. 單擊確定

步驟二:為RAM使用者添加許可權

在使用RAM使用者之前,需要為其添加相應許可權。

  1. 使用Resource Access Management員登入RAM控制台

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

  3. 使用者頁面,單擊目標RAM使用者操作列的添加許可權

    image

    您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。

  4. 新增授權面板,選擇權限原則。在文字框中輸入要添加的權限原則,單擊搜尋到的權限原則,然後單擊確認新增授權

    • 系統權限原則(粗粒度授權

      微服務引擎MSE目前支援兩種粗粒度的系統權限原則。

      權限原則名稱

      說明

      AliyunMSEFullAccess

      管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有控制台所有功能的操作許可權。

      AliyunMSEReadOnlyAccess

      微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

      說明

      建議給營運人員授予AliyunMSEFullAccess權限原則,由營運人員去建立和刪除資源。給開發人員授予AliyunMSEReadOnlyAccess權限原則,可以查看這些資源,但是不能刪除和建立。如果想更細粒度地控制開發人員的許可權,您可使用以下自訂權限原則。

    • 自訂權限原則(細粒度授權

      說明
      • 如果您需要更細粒度地授權,您可以通過建立自訂策略來進行存取控制。

      • 關於Nacos註冊中心相關鑒權粒度和配置說明,請參見註冊中心細粒度鑒權;關於Nacos配置中心相關鑒權粒度和配置說明,請參見配置中心細粒度鑒權

      為了方便您自訂RAM權限原則,本文提供了微服務引擎MSE版的授權映射表。

      Action

      許可權說明

      是否為唯讀類許可權

      CreateCluster

      建立叢集

      DeleteCluster

      刪除叢集

      QueryClusterDetail

      查詢叢集詳情

      RestartCluster

      重啟叢集

      RetryCluster

      重試叢集

      UpdateCluster

      更新叢集

      CreateNacosConfig

      建立Nacos配置

      DeleteNacosConfig

      刪除Nacos配置

      DeleteNacosConfigs

      大量刪除Nacos配置

      GetNacosConfig

      查看Nacos配置

      GetNacosHistoryConfig

      查看Nacos配置歷史

      UpdateNacosConfig

      更新Nacos配置

      UpdateNacosInstance

      更新執行個體

      DeleteNacosService

      刪除服務

      CreateNacosService

      建立服務

      UpdateNacosService

      更新服務

      CreateNacosInstance

      建立執行個體

      UpdateNacosCluster

      更新服務叢集

      以下介面僅支援授權到帳號層級,無法支援按執行個體許可權篩選展示。

      Action

      許可權說明

      是否為唯讀類許可權

      ListClusters

      查看叢集列表

      以下介面僅支援授權到執行個體層級,無法支援細粒度的許可權篩選展示。

      Action

      許可權說明

      是否為唯讀類許可權

      ListNacosConfigs

      查看Nacos配置列表

      ListNacosHistoryConfigs

      查看Nacos配置歷史列表

      ListAnsServices

      查看所有服務

      ListAnsServiceClusters

      查看某服務的叢集

      ListAnsInstances

      查看某服務的執行個體

    樣本一:授予RAM使用者對執行個體mse-cn-0pp1j8om80a的讀寫權限。

    說明

    本文的mse-cn-0pp1j8om80a指的是InstanceId而非ClusterId。

    {
      "Statement": [
        {
          "Action": "mse:ListClusters",
          "Resource": "acs:mse:*:*:*",
          "Effect": "Allow"
        },
        {
          "Action": "mse:*",
          "Resource": "acs:mse:*:*:instance/mse-cn-0pp1j8om80a",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    樣本二:授予RAM使用者對所有執行個體的讀許可權。

     {
      "Statement": [
        {
            "Action": [
            "mse:List*",
            "mse:Query*",
            "mse:Get*"
          ],
          "Resource": "acs:mse:*:*:*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    樣本三:授予RAM使用者對執行個體mse-cn-0pp1j8om80a中命名空間3fd98c48-a709-4061-bba1-e341d79d681b的配置讀寫權限。

    該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下三個層次的許可權:

    1. 擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。

    2. 擁有這個叢集的所有讀許可權,這樣可以進入這個執行個體看到所有的資源。

    3. 擁有這個命名空間下面的配置建立和修改的許可權。

    {
        "Version": "1",
        "Statement": [{
                "Action": [
                    "mse:ListClusters"
                ],
                "Resource": [
                    "acs:mse:*:*:*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:List*",
                    "mse:Query*",
                    "mse:Get*"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/mse-cn-0pp1j8om8"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:CreateNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b"
                ],
                "Effect": "Allow"
            }
        ]
    }

    樣本四:授予RAM使用者對執行個體mse-cn-0pp1j8om80a中指定DataId的配置讀寫權限。

    該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下幾個層次的許可權:

    1. 擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。

    2. 擁有這個叢集的所有讀許可權,這樣進入這個執行個體可以看到所有的資源。

    3. 擁有這個命名空間下面的配置建立和修改的許可權。

    4. 擁有這個Group下面的配置建立和修改的許可權。

    5. 資源取值來源:acs:mse:*:*:instance/${instanceId}/${namespaceId}/${groupId}/${dataId}

    {
        "Version": "1",
        "Statement": [{
                "Action": [
                    "mse:ListClusters"
                ],
                "Resource": [
                    "acs:mse:*:*:*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:List*",
                    "mse:Query*",
                    "mse:Get*"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/mse-cn-0pp1j8om8"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "mse:CreateNacosConfig",
                    "mse:UpdateNacosConfig"
                ],
                "Resource": [
    
                    "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b/DEFAULT_GROUP/prod.yaml"
                ],
                "Effect": "Allow"
            }
        ]
    }

    樣本五:授予RAM使用者對執行個體mse-cn-0pp1j8om80a中指定服務的配置讀寫權限。

    該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下幾個層次的許可權:

    1. 擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。

    2. 擁有這個叢集的所有讀許可權,這樣進入這個執行個體可以看到所有的資源。

    3. 擁有這個命名空間下的配置建立和修改許可權。

    4. 擁有這個Group下面的配置建立和修改的許可權。

    5. 資源取值來源:acs:mse:*:*:instance/${instanceId}/${namespaceId}/${groupId}/${serviceName}

      {
          "Version": "1",
          "Statement": [{
                  "Action": [
                      "mse:ListClusters"
                  ],
                  "Resource": [
                      "acs:mse:*:*:*"
                  ],
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "mse:List*",
                      "mse:Query*",
                      "mse:Get*"
                  ],
                  "Resource": [
                      "acs:mse:*:*:instance/mse-cn-0pp1j8om8"
                  ],
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "mse:CreateNacosConfig",
                      "mse:UpdateNacosConfig"
                  ],
                  "Resource": [
      
                      "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b/DEFAULT_GROUP/test-service"
                  ],
                  "Effect": "Allow"
              }
          ]
      }
  5. 新增授權面板,確認授權成功後,單擊關閉

後續操作

使用阿里雲帳號建立好RAM使用者後,即可將RAM使用者的登入名稱稱及密碼或者AccessKey資訊分發給其他使用者。其他使用者可以按照以下步驟使用RAM使用者登入控制台或調用API。

  • 登入控制台

    1. 開啟RAM使用者登入頁面。

    2. RAM 使用者登入頁面,輸入RAM使用者名稱,單擊下一步。輸入RAM使用者密碼,然後單擊登入

      說明

      RAM使用者登入名稱稱的格式為<$username>@<$AccountAlias><$username>@<$AccountAlias>.onaliyun.com<$AccountAlias>為帳號別名,如果沒有設定帳號別名,則預設值為阿里雲帳號的ID。

    3. 在子使用者頁面上單擊有許可權的產品,即可存取控制台。

  • 調用API

    使用RAM使用者的AccessKey調用API。在代碼中使用RAM使用者的AccessKey ID和AccessKey Secret即可。