通過標(biāo)簽實現(xiàn)精細(xì)化權(quán)限管理
標(biāo)簽可用于標(biāo)識云資源,實現(xiàn)資源的分類管理;訪問控制RAM可基于權(quán)限策略,管理用戶身份,控制云資源的訪問和操作權(quán)限。標(biāo)簽和RAM結(jié)合,將標(biāo)簽作為權(quán)限策略的匹配條件,可以實現(xiàn)云資源的精細(xì)化權(quán)限管理。您可以使用標(biāo)簽對集群資源做分類,并匹配對應(yīng)的權(quán)限策略,實現(xiàn)集群資源的精細(xì)化權(quán)限管理,使不同的用戶可以擁有不同的ACK集群的訪問權(quán)限。
基于標(biāo)簽控制RAM用戶權(quán)限(即標(biāo)簽鑒權(quán))的邏輯如下:
前提條件
已創(chuàng)建RAM用戶,具體操作,請參見創(chuàng)建RAM用戶。
應(yīng)用場景示例
本文操作步驟以下面場景為示例,說明如何使用標(biāo)簽鑒權(quán)。
操作步驟
本步驟將使用阿里云賬號(主賬號)新建一個自定義權(quán)限策略UseTagAccessRes(規(guī)定了RAM用戶需要指定標(biāo)簽test:foo
后方可訪問和操作ACK集群),并將自定義權(quán)限策略UseTagAccessRes授權(quán)給RAM用戶userTest。
使用阿里云賬號(主賬號)登錄RAM控制臺。
說明阿里云賬號(主賬號)對賬號中的資源具有完全管理權(quán)限,您也可以在RAM中創(chuàng)建一個RAM用戶,授予AdministratorAccess權(quán)限,充當(dāng)賬號管理員,該管理員可以對賬號下所有云資源進(jìn)行管控操作。更多信息,請參見創(chuàng)建賬號管理員。
創(chuàng)建自定義權(quán)限策略UseTagAccessRes。
具體操作,請參見創(chuàng)建自定義權(quán)限策略。如下示例中,您可以在策略(
Condition
)中為云資源設(shè)置多個標(biāo)簽條件來限制操作權(quán)限。支持的標(biāo)簽鑒權(quán)條件如下:標(biāo)簽鑒權(quán)條件
說明
acs:RequestTag
限制在請求中必須傳入特定的標(biāo)簽。
如果API請求中沒有標(biāo)簽參數(shù),則不能使用
acs:RequestTag
,否則會導(dǎo)致鑒權(quán)失敗。acs:ResourceTag
限制指定的資源必須包含特定的標(biāo)簽。
如果API請求中沒有資源ID參數(shù),則不能使用
acs:ResourceTag
,否則會導(dǎo)致鑒權(quán)失敗。以下為不同應(yīng)用場景下對應(yīng)的自定義權(quán)限策略內(nèi)容。
重要以下列舉的自定義權(quán)限策略內(nèi)容僅作為示例策略模板提供,請您根據(jù)實際需求遵循權(quán)限最小化原則配置權(quán)限策略。
不允許創(chuàng)建未綁定標(biāo)簽
test:foo
的集群,僅允許在創(chuàng)建集群操作時,帶上請求標(biāo)簽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" }
不允許操作其他用戶創(chuàng)建的集群(未綁定標(biāo)簽
test:foo
的資源)。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } } ] }
支持某些查詢接口,同時可以查看您已綁定標(biāo)簽
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": "*" } ] }
不允許修改標(biāo)簽,防止標(biāo)簽被修改。
{ "Version": "1", "Statement": [{ "Effect": "Deny", "Action": [ "cs:UntagResources", "cs:ListTagResources", "cs:TagResources", "cs:ModifyClusterTags" ], "Resource": "*" }] }
不允許對未綁定標(biāo)簽
test:foo
的集群進(jìn)行RBAC授權(quán)。{ "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" }
將自定義權(quán)限策略授權(quán)給目標(biāo)RAM用戶或組。
具體操作,請參見為RAM用戶授權(quán)。本步驟將自定義權(quán)限策略UseTagAccessRes授權(quán)給RAM用戶userTest。
說明如果您將自定義權(quán)限策略UseTagAccessRes授權(quán)已存在的RAM用戶,請注意RAM用戶多個權(quán)限策略產(chǎn)生的權(quán)限問題。
執(zhí)行結(jié)果
授權(quán)RAM用戶只能訪問和操作已綁定標(biāo)簽test:foo
的資源后,該RAM用戶訪問及操作各資源的結(jié)果如下:
創(chuàng)建ACK集群
創(chuàng)建ACK集群時,在創(chuàng)建流程中集群配置頁簽的高級選項配置標(biāo)簽
test:foo
,會創(chuàng)建成功。創(chuàng)建ACK集群時,不指定標(biāo)簽
test:foo
,會有以下錯誤提示。
查看ACK集群
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
查看集群列表中的集群。
如果集群中都沒有
test:foo
標(biāo)簽,則集群列表為空,無法查看任何集群。若對指定集群添加
test:foo
標(biāo)簽后,則在集群列表中可以看到該集群。
修改標(biāo)簽
不允許修改標(biāo)簽,若強(qiáng)制修改標(biāo)簽時會有以下錯誤提示。
授權(quán)管理
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇授權(quán)管理。
在授權(quán)管理頁面,單擊RAM用戶頁簽,在需要授權(quán)的RAM用戶右側(cè)單擊管理權(quán)限,進(jìn)入權(quán)限管理頁面。
在權(quán)限管理頁面選擇集群時,在下拉列表中僅顯示具有
test:foo
標(biāo)簽的集群。