本文檔介紹如何建立自訂授權策略。下面以授予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許可權。
建立自訂授權策略
使用具有RAM許可權的帳號登入Resource Access Management控制台。
單擊左側導覽列的 。
在權限原則頁面,單擊建立權限原則。
在建立權限原則頁面,單擊指令碼編輯頁簽。在策略文檔中編寫您的授權策略內容。
{ "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。
編寫完成後,單擊繼續編輯基本資料,填寫名稱,然後單擊確定。
返回權限原則頁面,在搜尋方塊中搜尋策略名稱或備忘,可以看到您授權的自訂的策略。
相關參考
為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"
}