預設情況下,RAM使用者或RAM角色沒有使用雲端服務OpenAPI的任何許可權,您需要為RAM使用者或RAM角色授予系統策略許可權或自訂權限原則許可權後,才能使用Container ServiceACK的OpenAPI。本文介紹如何為RAM使用者或RAM角色進行叢集以及雲資源維度授權。
使用系統策略授權
系統策略授權用於指定全域資源的讀寫存取控制。當RAM使用者或RAM角色需要阿里雲帳號下所有叢集的營運系統管理權限時,建議使用系統策略進行快捷授權。Container ServiceACK的常用系統策略如下表所示:
系統策略中Full層級的許可權為高風險許可權,請謹慎授予,以免造成安全風險。
阿里雲帳號(主帳號)對帳號中的資源具有完全系統管理權限,您也可以在RAM中建立一個RAM使用者,授予AdministratorAccess許可權,充當帳號管理員,該管理員可以對帳號下所有雲資源進行管控操作。更多資訊,請參見建立RAM使用者作為帳號管理員。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在使用者頁面,單擊目標RAM使用者操作列的添加許可權。
您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。
在新增授權面板,為RAM使用者添加許可權。
選擇資源範圍。
帳號層級:許可權在當前阿里雲帳號內生效。
資源群組層級:許可權在指定的資源群組內生效。
重要指定資源群組授權生效的前提是該雲端服務及資源類型已支援資源群組,詳情請參見支援資源群組的雲端服務。資源群組授權樣本,請參見使用資源群組限制RAM使用者管理指定的ECS執行個體。
選擇授權主體。
授權主體即需要添加許可權的RAM使用者。系統會自動選擇當前的RAM使用者。
選擇需要授予的系統權限原則。
單擊確認新增授權。
單擊關閉。
使用自訂策略授權
自訂策略授權用於對目標RAM使用者或RAM角色實現細粒度的雲資源存取控制。不同的雲資源可能存在不同的安全性和存取控制要求,如果您需要對使用者進行精細化的雲資源存取控制,例如,限制某使用者對某個具體叢集的操作許可權,您可以建立自訂授權策略滿足這種細粒度要求。另外,如果目標RAM使用者或RAM角色有基於SDK的二次開發需求,還可實現API層級的許可權控制。關於RAM支援的授權項,請參見授權資訊。
在建立自訂授權策略時,您需要瞭解授權策略語言的基本結構和文法。更多資訊,請參見權限原則基本元素。
步驟一:建立自訂授權策略
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在權限原則頁面,單擊建立權限原則。
在建立權限原則頁面,單擊指令碼編輯頁簽,輸入您的權限原則內容。
{ "Statement": [{ "Action": [ "cs:Get*", "cs:List*", "cs:Describe*", "cs:ScaleCluster", "cs:DeleteCluster" ], "Effect": "Allow", "Resource": [ "acs:cs:*:*:cluster/叢集ID" ] }], "Version": "1" }
參數
說明
Action
所需授與權限,所有的Action均支援萬用字元。
Resource
有以下配置方式,其中,
叢集ID
需要替換為您的實際叢集ID。授予單叢集許可權
"Resource": [ "acs:cs:*:*:cluster/叢集ID" ]
授予多個叢集許可權
"Resource": [ "acs:cs:*:*:cluster/叢集ID", "acs:cs:*:*:cluster/叢集ID" ]
授予所有叢集的許可權
"Resource": [ "*" ]
編寫完成後,單擊繼續編輯基本資料,填寫名稱,然後單擊確定。
返回權限原則頁面,在搜尋方塊中搜尋策略名稱或備忘,可以看到您授權的自訂策略。
步驟二:為RAM使用者或RAM角色授予自訂權限原則
關於自訂授權的具體操作和系統策略授權操作方法一樣,當選擇權限原則時,需選擇您已建立的自訂策略。具體操作,請參見使用系統策略授權。
自訂策略授權樣本
樣本1:授予指定叢集的唯讀許可權
{
"Statement": [
{
"Action": [
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Effect": "Allow",
"Resource": [
"acs:cs:*:*:cluster/<yourclusterID>" # 目的地組群ID。
]
}
],
"Version": "1"
}
樣本2:授予指定OSS Bucket的讀取許可權
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketTagging",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl"
],
"Resource": "acs:oss:*:*:myphotos/*"
}
]
}
樣本3:授權不支援限制叢集的OpenAPI的操作許可權
部分OpenAPI不支援限制叢集的授權(例如,DescribeEvents),如果您需要給RAM使用者或RAM角色授權這些OpenAPI不支援限制叢集的OpenAPI的操作許可權,請勿在Resource中限定叢集ID。修改前後的RAM權限原則對比如下:
修改前RAM權限原則 | 修改後RAM權限原則 |
|
|
後續操作
RAM授權後,您需要繼續完成叢集內Kubernetes資源訪問的RBAC授權,才能對叢集內部資源進行操作。具體授權,請參見使用RBAC授予叢集內資源操作許可權。
如需提升ACK叢集內應用訪問其他雲端服務的安全性,您可以通過RRSA配置ServiceAccount的RAM許可權實現Pod許可權隔離,請參見通過RRSA配置ServiceAccount的RAM許可權實現Pod許可權隔離。
如需精細化RAM授權,請參見通過標籤實現精微調權限管理、手動收斂ACK託管版叢集的Worker RAM角色許可權。
授權過程問題,請參見授權管理FAQ。