MSE支持阿里云賬號給RAM用戶授予MSE的操作權限,避免因暴露阿里云賬號密鑰造成的安全風險。本文介紹如何創建RAM用戶并授予RAM用戶權限,授權后您就可以通過RAM用戶使用MSE。
使用場景
某企業開通了微服務引擎MSE服務,由于員工工作職責不同,對資源操作所需權限也不同,現有如下需求:
鑒于安全或信任原因,不希望將云賬號密鑰直接透露給員工,期望可以為員工相應的賬號授予權限。
用戶賬號只能在授權的前提下操作資源,不需要進行獨立的計量計費,所有開銷均計入企業賬號名下。
隨時可以撤銷用戶賬號的權限,也可以隨時刪除其創建的用戶賬號。
MSE作為一個托管型產品,有開發和運維兩個角色,其中運維人員負責集群的管理、命名空間和權限的管理,而開發人員負責配置和服務管理。
使用說明
本文檔內容涉及圖中引擎管控鏈路的訪問權限的配置和使用,即阿里云賬號授予RAM用戶權限后,被授予該權限的RAM用戶擁有對控制臺(OpenAPI)的相關操作權限。
關于引擎直連鏈路的訪問鑒權配置和使用,即Nacos Client可以通過RAM用戶訪問MSE的Nacos的具體操作,請參見授權SDK訪問。
步驟一:創建RAM用戶
使用阿里云賬號登錄RAM控制臺并創建RAM用戶。
使用阿里云賬號(主賬號)或RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在用戶頁面,單擊創建用戶。
在創建用戶頁面的用戶賬號信息區域,設置用戶基本信息。
登錄名稱:可包含英文字母、數字、半角句號(.)、短劃線(-)和下劃線(_),最多64個字符。
顯示名稱:最多包含128個字符或漢字。
標簽:單擊,然后輸入標簽鍵和標簽值。為RAM用戶綁定標簽,便于后續基于標簽的用戶管理。
說明單擊添加用戶,可以批量創建多個RAM用戶。
在訪問方式區域,選中控制臺訪問或使用永久 AccessKey 訪問。
控制臺訪問:完成對登錄安全的基本設置,包括自動生成或自定義登錄密碼、是否要求下次登錄時重置密碼以及是否要求開啟多因素認證。
說明自定義登錄密碼時,密碼必須滿足您在設置RAM用戶密碼強度。
中設置的密碼復雜度規則。關于如何設置密碼復雜度規則,請參見使用永久 AccessKey 訪問:自動為RAM用戶生成訪問密鑰(AccessKey),支持通過API或其他開發工具訪問阿里云。
說明為了保障賬號安全,建議僅為RAM用戶選擇第一種登錄方式,避免RAM用戶離開組織后仍可以通過訪問密鑰訪問阿里云資源。
單擊確定。
步驟二:為RAM用戶添加權限
在使用RAM用戶之前,需要為其添加相應權限。
使用RAM管理員登錄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即可。