全部產品
Search
文件中心

Container Service for Kubernetes:自訂RAM授權策略

更新時間:Feb 28, 2024

本文檔介紹如何建立自訂授權策略。下面以授予RAM使用者或RAM角色(即子帳號)查詢、擴容和刪除叢集的許可權為例進行說明。

前提條件

在建立自訂授權策略時,您需要瞭解授權策略語言的基本結構和文法。更多資訊,請參見權限原則基本元素

背景資訊

Container ServiceACK提供的系統授權策略的授權粒度比較粗,如果這種粗粒度授權策略不能滿足您的需要,那麼您可以建立自訂授權策略。例如,您想控制對某個具體的叢集的操作許可權,您必須使用自訂授權策略才能滿足這種細粒度要求。

在進行RAM使用者或RAM角色的叢集RBAC授權前,您需要完成對叢集管控能力的RAM授權。您可以根據需要授予RAM使用者或RAM角色對於目的地組群的讀寫策略:

  • 讀策略:用於查看叢集配置、kubeconfig等基本資料。

  • 寫策略:包含叢集伸縮、升級、刪除、添加節點等叢集管控能力。

在提交RBAC授權前,您需要確保目的地組群已經被授予RAM唯讀許可權,策略參考如下。

{
  "Statement": [
    {
      "Action": [
        "cs:Get*",
        "cs:List*",
        "cs:Describe*"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cs:*:*:cluster/<yourclusterID>"
      ]
    }
  ],
  "Version": "1"
}

當您完成RAM授權後,需要完成叢集內Kubernetes資源模型訪問的RBAC授權。具體操作,請參見配置RAM使用者或RAM角色RBAC許可權

建立自訂授權策略

  1. 使用具有RAM許可權的帳號登入Resource Access Management控制台

  2. 單擊左側導覽列的許可權管理 > 權限原則

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

  4. 建立權限原則頁面,單擊指令碼編輯頁簽。在策略文檔中編寫您的授權策略內容。

    {
     "Statement": [{
         "Action": [
             "cs:Get*",
             "cs:List*",
             "cs:Describe*",
             "cs:ScaleCluster",
             "cs:DeleteCluster"
         ],
         "Effect": "Allow",
         "Resource": [
             "acs:cs:*:*:cluster/叢集ID"
         ]
     }],
     "Version": "1"
    }

    其中:

    • Action處填寫您所要授與權限。

      說明

      所有的Action均支援萬用字元。

    • Resource有以下配置方式。

      • 授予單叢集許可權

        "Resource": [
             "acs:cs:*:*:cluster/叢集ID"
         ]
      • 授予多個叢集許可權

        "Resource": [
             "acs:cs:*:*:cluster/叢集ID",
             "acs:cs:*:*:cluster/叢集ID"
         ]
      • 授予所有叢集的許可權

        "Resource": [
             "*"
         ]

        其中,叢集ID需要替換為您要授權的真實的叢集ID。

  5. 編寫完成後,單擊繼續編輯基本資料,填寫名稱,然後單擊確定

  6. 返回權限原則頁面,在搜尋方塊中搜尋策略名稱備忘,可以看到您授權的自訂的策略。

相關參考

為RAM使用者或RAM角色授權不支援限制叢集的OpenAPI的操作許可權

部分OpenAPI不支援限制叢集的授權(例如,DescribeEvents),若您需要給RAM使用者或RAM角色授權這些OpenAPI不支援限制叢集的OpenAPI的操作許可權,請勿在Resource中限定叢集ID。

例如,當前RAM權限原則如下:

{
    "Statement": [
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}

若您需要授權不支援限制叢集的OpenAPI DescribeEvents ,其對應的RAM action為cs:DescribeEvents,修改後的RAM權限原則如下所示:

{
    "Statement": [
        {
            "Action": [
                "cs:DescribeEvents"
            ],
            "Effect": "Allow",
            "Resource": [
              "*"
            ]
        },
        {
            "Action": [
                "cs:Get*",
                "cs:List*",
                "cs:Describe*"
            ],
            "Effect": "Allow",
            "Resource": [
                "acs:cs:*:*:cluster/c2e63856bcd714197****"
            ]
        }
    ],
    "Version": "1"
}