您可以按需為RAM用戶和RAM角色賦予不同的權限,僅具有權限的RAM用戶和RAM角色才可以在ASM控制臺上進行創建網格實例、更新服務網格功能配置等操作,避免因暴露阿里云賬號密鑰而造成安全風險。本文以RAM用戶為例,介紹如何為RAM用戶和RAM角色進行RAM授權。
前提條件
已創建RAM用戶和RAM角色。具體操作,請參見創建RAM用戶和創建可信實體為阿里云賬號的RAM角色。
已了解授權策略語言的基本結構和語法。更多信息,請參見權限策略語法和結構。
背景信息
RAM用戶和RAM角色的使用場景不同,授予的權限也不同,具體區別如下:
如果RAM用戶和RAM角色只需要服務網格的操作權限,不涉及集群的操作,您只需要授予RAM用戶服務網格權限。具體操作,請參見授予RAM用戶和RAM角色系統策略和授予RAM用戶和RAM角色自定義策略。
如果RAM用戶和RAM角色需要服務網格和集群的操作權限(例如添加或刪除網格內的ACK集群),您需要授予RAM用戶服務網格和對應集群的權限。具體操作,請參見授予RAM用戶和RAM角色系統策略、授予RAM用戶和RAM角色自定義策略和授予RAM用戶集群權限。
授予RAM用戶和RAM角色系統策略
ASM默認已創建AliyunASMReadOnlyAccess和AliyunASMFullAccess策略,您直接授權使用即可。以下為系統策略的詳細介紹:
AliyunASMReadOnlyAccess
只讀管理阿里云服務網格(ASM)的權限,僅看服務網格狀態等只讀接口權限,無法對服務網格進行變更操作。
AliyunASMFullAccess
管理阿里云服務網格(ASM)的權限,RAM用戶擁有該授權后,對于鏡像資源的權限等同于阿里云賬號,可以做任意操作。
以下以授予AliyunASMReadOnlyAccess權限策略為例,介紹如何授予RAM用戶系統策略。關于RAM用戶授權和RAM角色授權的更多信息,請參見為RAM用戶授權和為RAM角色授權。
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇
。在用戶頁面,單擊目標RAM用戶操作列的添加權限。
您也可以選中多個RAM用戶,單擊用戶列表下方的添加權限,為RAM用戶批量授權。
在新增授權面板,為RAM用戶添加權限。
選擇資源范圍。
賬號級別:權限在當前阿里云賬號內生效。
資源組級別:權限在指定的資源組內生效。
重要指定資源組授權生效的前提是該云服務及資源類型已支持資源組,詳情請參見支持資源組的云服務。資源組授權示例,請參見使用資源組限制RAM用戶管理指定的ECS實例。
選擇授權主體。
授權主體即需要添加權限的RAM用戶。系統會自動選擇當前的RAM用戶。
在所有策略類型下單擊系統策略,在文本框中輸入AliyunASMReadOnlyAccess,然后單擊AliyunASMReadOnlyAccess。
說明每次最多綁定5條策略,如需綁定更多策略,請分次操作。
單擊確認新增授權。
單擊關閉。
授予RAM用戶和RAM角色自定義策略
如果您想對權限進行細粒度控制,您可以自定義策略,然后授予RAM用戶和RAM角色自定義策略權限。
創建授予訪問ASM實例的權限策略
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在權限策略頁面,單擊創建權限策略。
在創建權限策略頁面,單擊腳本編輯頁簽。
輸入您的授權策略內容,然后單擊繼續編輯基本信息。
通過改變
Statement
中的Action
字段,可以實現API的細粒度鑒權。本文以授予受限訪問權限策略為例,受限訪問權限策略包括除RBAC授權之外的服務網格的所有RAM權限,擁有該權限的RAM用戶不可以對其他用戶進行RBAC授權,但擁有除此之外的其他所有權限。關于權限策略語法結構的詳情,請參見權限策略語法和結構。{ "Statement": [ { "Effect": "Allow", "Action": [ "servicemesh:Add*", "servicemesh:CRBatchDeletion", "servicemesh:Create*", "servicemesh:Delete*", "servicemesh:Describe*", "servicemesh:Enable*", "servicemesh:Disable*", "servicemesh:Get*", "servicemesh:InvokeApiServer", "servicemesh:List*", "servicemesh:Modify*", "servicemesh:Re*", "servicemesh:Run*", "servicemesh:Set*", "servicemesh:Sync*", "servicemesh:Update*", "servicemesh:Upgrade*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "log:ListLogStores", "log:ListDashboard", "log:GetDashboard", "log:ListSavedSearch", "log:ListProject" ], "Resource": "*" }, { "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/audit-*" }, { "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/istio-*" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "servicemesh.aliyuncs.com" } } } ], "Version": "1" }
在基本信息區域輸入策略名稱,本文設置為ASMPolicy1,然后單擊確定。
授予RAM用戶和RAM角色權限策略
本文以授予RAM用戶權限為例,關于RAM角色權限的具體操作,請參見為RAM角色授權。
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇
。在用戶頁面,單擊目標RAM用戶操作列的添加權限。
您也可以選中多個RAM用戶,單擊用戶列表下方的添加權限,為RAM用戶批量授權。
在添加權限對話框,設置授權范圍為整個云賬號,系統會自動填入當前的RAM用戶為授權主體,在選擇權限下單擊自定義策略,輸入創建的權限策略名稱ASMPolicy1,單擊ASMPolicy1,然后單擊確定。
自定義策略場景示例
場景一:授予單個網格實例的管理權限
您可以使用以下腳本創建擁有單個網格實例管理權限的策略,授予RAM用戶或RAM角色該權限策略后,RAM用戶或RAM角色只能管理指定ID的網格實例。
創建權限策略時,請將以下腳本中的<ServicemeshId>
替換成實際需要授權的網格實例ID。
{
"Statement": [
{
"Effect": "Allow",
"Action": "servicemesh:*",
"Resource": "acs:servicemesh:*:*:servicemesh/<ServicemeshId>"
},
{
"Effect": "Allow",
"Action": "servicemesh:DescribeServiceMeshes",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-<ServicemeshId>"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/istio-<ServicemeshId>"
}
],
"Version": "1"
}
場景二:授予使用ASM控制臺管理Istio資源的讀寫權限
ASM默認提供的AliyunASMReadOnlyAccess系統策略可以授予RAM用戶或RAM角色只讀管理阿里云服務網格ASM的權限,但被授予此權限的RAM用戶或RAM角色無法管理網格中的Istio資源。
您可以使用以下腳本創建擁有Istio資源讀寫權限的策略,授予RAM用戶或RAM角色該權限策略后,RAM用戶或RAM角色可以正常使用ASM控制臺管理網格中的Istio資源,同時無法對網格的其它部分(例如功能設置等)進行任何變更。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"servicemesh:List*",
"servicemesh:Describe*",
"servicemesh:Get*",
"servicemesh:InvokeApiServer"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"log:ListLogStores",
"log:ListDashboard",
"log:GetDashboard",
"log:ListSavedSearch"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-*"
}
],
"Version": "1"
}
場景三:授予對其它用戶或角色進行RBAC授權的權限
您可以使用以下腳本創建擁有對其它用戶或角色進行RBAC授權的權限策略,授予RAM用戶或RAM角色該權限策略后,RAM用戶或RAM角色可以使用ASM控制臺管理其它RAM角色或RAM用戶的RBAC權限,同時無法操作或查看任何網格實例。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"servicemesh:DescribeUserPermissions",
"servicemesh:GrantUserPermissions",
"servicemesh:DescribeServiceMeshes",
"servicemesh:DescribeUsersWithPermissions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ims:ListUserBasicInfos",
"Resource": "*"
}
],
"Version": "1"
}