標籤可用於標識雲資源,實現資源的分類管理;存取控制RAM可基於權限原則,系統管理使用者身份,控制雲資源的訪問和操作許可權。標籤和RAM結合,將標籤作為權限原則的匹配條件,可以實現雲資源的精微調權限管理。您可以使用標籤對叢集資源做分類,並匹配對應的權限原則,實現叢集資源的精微調權限管理,使不同的使用者可以擁有不同的ACK叢集的存取權限。
基於標籤控制RAM使用者權限(即標籤鑒權)的邏輯如下:
前提條件
已建立RAM使用者,具體操作,請參見建立RAM使用者。
應用情境樣本
本文操作步驟以下面情境為樣本,說明如何使用標籤鑒權。
操作步驟
本步驟將使用阿里雲帳號(主帳號)建立一個自訂權限原則UseTagAccessRes(規定了RAM使用者需要指定標籤test:foo
後方可訪問和操作ACK叢集),並將自訂權限原則UseTagAccessRes授權給RAM使用者userTest。
使用阿里雲帳號(主帳號)登入RAM控制台。
說明阿里雲帳號(主帳號)對帳號中的資源具有完全系統管理權限,您也可以在RAM中建立一個RAM使用者,授予AdministratorAccess許可權,充當帳號管理員,該管理員可以對帳號下所有雲資源進行管控操作。更多資訊,請參見建立帳號管理員。
建立自訂權限原則UseTagAccessRes。
具體操作,請參見建立自訂權限原則。如下樣本中,您可以在策略(
Condition
)中為雲資源設定多個標籤條件來限制操作許可權。支援的標籤鑒權條件如下:標籤鑒權條件
說明
acs:RequestTag
限制在請求中必須傳入特定的標籤。
如果API請求中沒有標籤參數,則不能使用
acs:RequestTag
,否則會導致鑒權失敗。acs:ResourceTag
限制指定的資源必須包含特定的標籤。
如果API請求中沒有資源ID參數,則不能使用
acs:ResourceTag
,否則會導致鑒權失敗。以下為不同應用情境下對應的自訂權限原則內容。
重要以下列舉的自訂權限原則內容僅作為樣本原則範本提供,請您根據實際需求遵循許可權最小化原則配置權限原則。
不允許建立未綁定標籤
test:foo
的叢集,僅允許在建立叢集操作時,帶上請求標籤test:foo
。{ "Statement": [ { "Effect": "Allow", "Action": "cs:CreateCluster", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/test": "foo" } } }, { "Action": [ "cs:DescribeAddons", "cs:DescribeKubernetesVersionMetadata" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "vpc:Describe*", "vpc:List*", "log:List*", "log:Describe*", "cs:Get*", "cs:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
不允許操作其他使用者建立的叢集(未綁定標籤
test:foo
的資源)。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } } ] }
支援某些查詢介面,同時可以查看您已綁定標籤
test:foo
的叢集。{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "cs:DescribeClustersV1", "cs:GetClusters" ], "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } }, { "Action": [ "cs:DescribeClusterAddonsVersion", "cs:DescribeClusterUserKubeconfig", "cs:DescribeClusterNodePools", "cs:DescribeClusterNodes", "cs:DescribeClusterLogs", "cs:DescribeClusterNodePoolDetail", "cs:DescribeEvents", "cs:DescribeClusterDetail", "cs:DescribeClusterAddonsUpgradeStatus", "cs:DescribeClusterNamespaces", "cs:DescribeAddons", "log:List*", "log:Describe*" ], "Effect": "Allow", "Resource": "*" } ] }
不允許修改標籤,防止標籤被修改。
{ "Version": "1", "Statement": [{ "Effect": "Deny", "Action": [ "cs:UntagResources", "cs:ListTagResources", "cs:TagResources", "cs:ModifyClusterTags" ], "Resource": "*" }] }
不允許對未綁定標籤
test:foo
的叢集進行RBAC授權。{ "Statement": [{ "Effect": "Allow", "Action": "cs:Get*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } }, { "Action": [ "ram:Get*", "ram:List*", "cs:DescribeAddons", "cs:DescribeKubernetesVersionMetadata", "cs:DescribeUserPermission", "cs:GrantPermission" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ram:AttachPolicyToUser", "ram:AttachPolicyToRole" ], "Effect": "Allow", "Resource": [ "acs:ram:*:*:policy/xxxxxx", "acs:*:*:*:user/*" ] } ], "Version": "1" }
將自訂權限原則授權給目標RAM使用者或組。
具體操作,請參見為RAM使用者授權。本步驟將自訂權限原則UseTagAccessRes授權給RAM使用者userTest。
說明如果您將自訂權限原則UseTagAccessRes授權已存在的RAM使用者,請注意RAM使用者多個權限原則產生的許可權問題。
執行結果
授權RAM使用者只能訪問和操作已綁定標籤test:foo
的資源後,該RAM使用者訪問及操作各資源的結果如下:
建立ACK叢集
建立ACK叢集時,在建立流程中叢集配置頁簽的進階選項配置標籤
test:foo
,會建立成功。建立ACK叢集時,不指定標籤
test:foo
,會有以下錯誤提示。
查看ACK叢集
登入Container Service管理主控台,在左側導覽列選擇叢集。
查看叢集列表中的叢集。
如果叢集中都沒有
test:foo
標籤,則叢集列表為空白,無法查看任何叢集。若對指定叢集添加
test:foo
標籤後,則在叢集列表中可以看到該叢集。
修改標籤
不允許修改標籤,若強制修改標籤時會有以下錯誤提示。
授權管理
登入Container Service管理主控台,在左側導覽列選擇授權管理。
在授權管理頁面,單擊RAM使用者頁簽,在需要授權的RAM使用者右側單擊系統管理權限,進入許可權管理頁面。
在許可權管理頁面選擇叢集時,在下拉式清單中僅顯示具有
test:foo
標籤的叢集。