MSE支援阿里雲帳號給RAM使用者授予MSE的操作許可權,避免因暴露阿里雲帳號密鑰造成的安全風險。本文介紹如何建立RAM使用者並授予RAM使用者權限,授權後您就可以通過RAM使用者使用MSE。
使用情境
某企業開通了微服務引擎MSE服務,由於員工工作職責不同,對資源操作要求的權限也不同,現有如下需求:
鑒於安全或信任原因,不希望將雲帳號密鑰直接透露給員工,期望可以為員工相應的帳號授予許可權。
使用者帳號只能在授權的前提下操作資源,不需要進行獨立的計量計費,所有開銷均計入企業帳號名下。
隨時可以撤銷使用者帳號的許可權,也可以隨時刪除其建立的使用者帳號。
MSE作為一個託管型產品,有開發和營運兩個角色,其中營運人員負責叢集的管理、命名空間和許可權的管理,而開發人員負責配置和服務管理。
使用說明
本文檔內容涉及圖中引擎管控鏈路的存取權限的配置和使用,即阿里雲帳號授予RAM使用者權限後,被授予該許可權的RAM使用者擁有對控制台(OpenAPI)的相關操作許可權。
關於引擎直連鏈路的訪問鑒權配置和使用,即Nacos Client可以通過RAM使用者訪問MSE的Nacos的具體操作,請參見授權SDK訪問。
步驟一:建立RAM使用者
使用阿里雲帳號登入RAM控制台並建立RAM使用者。
使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在使用者頁面,單擊建立使用者。
在建立使用者頁面的使用者帳號資訊地區,設定使用者基本資料。
登入名稱稱:可包含英文字母、數字、半形句號(.)、短劃線(-)和底線(_),最多64個字元。
顯示名稱:最多包含128個字元或漢字。
標籤:單擊,然後輸入標籤鍵和標籤值。為RAM使用者綁定標籤,便於後續基於標籤的使用者管理。
說明單擊添加使用者,可以大量建立多個RAM使用者。
在訪問方式地區,選中控制台訪問或OpenAPI 呼叫訪問。
控制台訪問:完成對登入安全的基本設定,包括自動產生或自訂登入密碼、是否要求下次登入時重設密碼以及是否要求開啟多因素認證。
說明自訂登入密碼時,密碼必須滿足您在設定RAM使用者密碼強度。
中設定的密碼複雜度規則。關於如何設定密碼複雜度規則,請參見OpenAPI 呼叫訪問:自動為RAM使用者產生存取金鑰(AccessKey),支援通過API或其他開發工具訪問阿里雲。
說明為了保障帳號安全,建議僅為RAM使用者選擇第一種登入方式,避免RAM使用者離開組織後仍可以通過存取金鑰訪問阿里雲資源。
單擊確定。
步驟二:為RAM使用者添加許可權
在使用RAM使用者之前,需要為其添加相應許可權。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在使用者頁面,單擊目標RAM使用者操作列的添加許可權。
您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。
在新增授權面板,選擇權限原則。在文字框中輸入要添加的權限原則,單擊搜尋到的權限原則,然後單擊確認新增授權。
系統權限原則(粗粒度授權)
微服務引擎MSE目前支援兩種粗粒度的系統權限原則。
權限原則名稱
說明
AliyunMSEFullAccess
管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有控制台所有功能的操作許可權。
AliyunMSEReadOnlyAccess
微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。
說明建議給營運人員授予AliyunMSEFullAccess權限原則,由營運人員去建立和刪除資源。給開發人員授予AliyunMSEReadOnlyAccess權限原則,可以查看這些資源,但是不能刪除和建立。如果想更細粒度地控制開發人員的許可權,您可使用以下自訂權限原則。
自訂權限原則(細粒度授權)
為了方便您自訂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
的配置讀寫權限。該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下三個層次的許可權:
擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。
擁有這個叢集的所有讀許可權,這樣可以進入這個執行個體看到所有的資源。
擁有這個命名空間下面的配置建立和修改的許可權。
{ "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的配置讀寫權限。該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下幾個層次的許可權:
擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。
擁有這個叢集的所有讀許可權,這樣進入這個執行個體可以看到所有的資源。
擁有這個命名空間下面的配置建立和修改的許可權。
擁有這個Group下面的配置建立和修改的許可權。
資源取值來源:
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
中指定服務的配置讀寫權限。該情境是一個複雜的情境,要擁有這個細粒度許可權需要以下幾個層次的許可權:
擁有查看執行個體列表的許可權,這樣才能從叢集列表中看到對應叢集。
擁有這個叢集的所有讀許可權,這樣進入這個執行個體可以看到所有的資源。
擁有這個命名空間下的配置建立和修改許可權。
擁有這個Group下面的配置建立和修改的許可權。
資源取值來源:
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" } ] }
在新增授權面板,確認授權成功後,單擊關閉。
後續操作
使用阿里雲帳號建立好RAM使用者後,即可將RAM使用者的登入名稱稱及密碼或者AccessKey資訊分發給其他使用者。其他使用者可以按照以下步驟使用RAM使用者登入控制台或調用API。
登入控制台
開啟RAM使用者登入頁面。
在RAM 使用者登入頁面,輸入RAM使用者名稱,單擊下一步。輸入RAM使用者密碼,然後單擊登入。
說明RAM使用者登入名稱稱的格式為
<$username>@<$AccountAlias>
或<$username>@<$AccountAlias>.onaliyun.com
。<$AccountAlias>為帳號別名,如果沒有設定帳號別名,則預設值為阿里雲帳號的ID。在子使用者頁面上單擊有許可權的產品,即可存取控制台。
調用API
使用RAM使用者的AccessKey調用API。在代碼中使用RAM使用者的AccessKey ID和AccessKey Secret即可。