您可以按需為RAM使用者和RAM角色賦予不同的許可權,僅具有許可權的RAM使用者和RAM角色才可以在ASM控制台上進行建立網格執行個體、更新Service Mesh功能配置等操作,避免因暴露阿里雲帳號密鑰而造成安全風險。本文以RAM使用者為例,介紹如何為RAM使用者和RAM角色進行RAM授權。
前提條件
已建立RAM使用者和RAM角色。具體操作,請參見建立RAM使用者和建立可信實體為阿里雲帳號的RAM角色。
已瞭解授權策略語言的基本結構和文法。更多資訊,請參見權限原則文法和結構。
背景資訊
RAM使用者和RAM角色的使用情境不同,授與權限也不同,具體區別如下:
如果RAM使用者和RAM角色只需要Service Mesh的操作許可權,不涉及叢集的操作,您只需要授予RAM使用者Service Mesh許可權。具體操作,請參見授予RAM使用者和RAM角色系統策略和授予RAM使用者和RAM角色自訂策略。
如果RAM使用者和RAM角色需要Service Mesh和叢集的操作許可權(例如添加或刪除網格內的ACK叢集),您需要授予RAM使用者Service Mesh和對應叢集的許可權。具體操作,請參見授予RAM使用者和RAM角色系統策略、授予RAM使用者和RAM角色自訂策略和授予RAM使用者叢集許可權。
授予RAM使用者和RAM角色系統策略
ASM預設已建立AliyunASMReadOnlyAccess和AliyunASMFullAccess策略,您直接授權使用即可。以下為系統策略的詳細介紹:
AliyunASMReadOnlyAccess
唯讀管理阿里雲Service Mesh(ASM)的許可權,僅看Service Mesh狀態等唯讀介面許可權,無法對Service Mesh進行變更操作。
AliyunASMFullAccess
管理阿里雲Service Mesh(ASM)的許可權,RAM使用者擁有該授權後,對於鏡像資源的許可權等同於阿里雲帳號,可以做任意操作。
以下以授予AliyunASMReadOnlyAccess權限原則為例,介紹如何授予RAM使用者系統策略。關於RAM使用者授權和RAM角色授權的更多資訊,請參見為RAM使用者授權和為RAM角色授權。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇
。在使用者頁面,單擊目標RAM使用者操作列的添加許可權。
您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。
在新增授權面板,為RAM使用者添加許可權。
選擇資源範圍。
帳號層級:許可權在當前阿里雲帳號內生效。
資源群組層級:許可權在指定的資源群組內生效。
重要指定資源群組授權生效的前提是該雲端服務及資源類型已支援資源群組,詳情請參見支援資源群組的雲端服務。資源群組授權樣本,請參見使用資源群組限制RAM使用者管理指定的ECS執行個體。
選擇授權主體。
授權主體即需要添加許可權的RAM使用者。系統會自動選擇當前的RAM使用者。
在所有策略類型下單擊系統策略,在文字框中輸入AliyunASMReadOnlyAccess,然後單擊AliyunASMReadOnlyAccess。
說明每次最多綁定5條策略,如需綁定更多策略,請分次操作。
單擊確認新增授權。
單擊關閉。
授予RAM使用者和RAM角色自訂策略
如果您想對許可權進行細粒度控制,您可以自訂策略,然後授予RAM使用者和RAM角色自訂策略許可權。
建立授予訪問ASM執行個體的權限原則
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在權限原則頁面,單擊建立權限原則。
在建立權限原則頁面,單擊指令碼編輯頁簽。
輸入您的授權策略內容,然後單擊繼續編輯基本資料。
通過改變
Statement
中的Action
欄位,可以實現API的細粒度鑒權。本文以授予受限存取權限策略為例,受限存取權限策略包括除RBAC授權之外的Service Mesh的所有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角色授權。
使用Resource Access Management員登入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角色唯讀管理阿里雲Service MeshASM的許可權,但被授予此許可權的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"
}