全部產品
Search
文件中心

Alibaba Cloud Service Mesh:為RAM使用者和RAM角色授權

更新時間:Jul 30, 2024

您可以按需為RAM使用者和RAM角色賦予不同的許可權,僅具有許可權的RAM使用者和RAM角色才可以在ASM控制台上進行建立網格執行個體、更新Service Mesh功能配置等操作,避免因暴露阿里雲帳號密鑰而造成安全風險。本文以RAM使用者為例,介紹如何為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角色授權

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

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

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

    image

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

  4. 新增授權面板,為RAM使用者添加許可權。

    1. 選擇資源範圍。

    2. 選擇授權主體。

      授權主體即需要添加許可權的RAM使用者。系統會自動選擇當前的RAM使用者。

    3. 所有策略類型下單擊系統策略,在文字框中輸入AliyunASMReadOnlyAccess,然後單擊AliyunASMReadOnlyAccess

      說明

      每次最多綁定5條策略,如需綁定更多策略,請分次操作。

    4. 單擊確認新增授權

  5. 單擊關閉

授予RAM使用者和RAM角色自訂策略

如果您想對許可權進行細粒度控制,您可以自訂策略,然後授予RAM使用者和RAM角色自訂策略許可權。

建立授予訪問ASM執行個體的權限原則

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

  2. 在左側導覽列,選擇許可權管理 > 權限原則

  3. 權限原則頁面,單擊建立權限原則

  4. 建立權限原則頁面,單擊指令碼編輯頁簽。

  5. 輸入您的授權策略內容,然後單擊繼續編輯基本資料

    通過改變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"
    }
  6. 基本資料地區輸入策略名稱稱,本文設定為ASMPolicy1,然後單擊確定

授予RAM使用者和RAM角色權限原則

本文以授予RAM使用者權限為例,關於RAM角色許可權的具體操作,請參見為RAM角色授權

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

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

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

    image

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

  4. 添加許可權對話方塊,設定授權範圍整個雲帳號,系統會自動填入當前的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"
}