默認情況下,RAM用戶或RAM角色沒有使用云服務OpenAPI的任何權限,您需要為RAM用戶或RAM角色授予系統策略權限或自定義權限策略權限后,才能使用容器服務ACK的OpenAPI。本文介紹如何為RAM用戶或RAM角色進行集群以及云資源維度的授權。
使用系統策略授權
系統策略授權用于指定全局資源的讀寫訪問控制。當RAM用戶或RAM角色需要阿里云賬號下所有集群的運維管理權限時,建議使用系統策略進行快捷授權。容器服務ACK的常用系統策略如下表所示:
系統策略中Full級別的權限為高風險權限,請謹慎授予,以免造成安全風險。
系統策略名稱 | 說明 |
AliyunCSFullAccess | 當RAM用戶或RAM角色需要容器服務產品所有OpenAPI的訪問權限。 說明 此系統策略僅包含針對ACK產品的RAM授權。如您需要對ACK集群中的應用進行運維,還需要進行RBAC授權,請參見RBAC授權。 |
AliyunVPCReadOnlyAccess | 當RAM用戶或RAM角色在創建集群時選擇指定VPC。 |
AliyunECSReadOnlyAccess | 當RAM用戶或RAM角色為集群添加已有節點或查看節點詳細信息。 |
AliyunContainerRegistryFullAccess | 當RAM用戶或RAM角色需要全局管理阿里云賬號內的業務鏡像。 |
AliyunLogReadOnlyAccess | 當RAM用戶或RAM角色在創建集群時選擇已有Log Project存儲審計日志,或查看指定集群的配置巡檢。 |
AliyunAHASReadOnlyAccess | 當RAM用戶或RAM角色需要使用集群拓撲功能。 |
AliyunRAMFullAccess | 當RAM用戶或RAM角色需要負責阿里云賬號內的全局授權管理。 |
AliyunYundunSASReadOnlyAccess | 當RAM用戶或RAM角色需要查看指定集群的運行時安全監控。 |
AliyunARMSReadOnlyAccess | 當RAM用戶或RAM角色需要查看集群阿里云Prometheus插件的監控狀態。 |
AliyunKMSReadOnlyAccess | 當RAM用戶或RAM角色在創建Pro集群時啟用Secret落盤加密能力。 |
AliyunESSReadOnlyAccess | 當RAM用戶或RAM角色需要執行節點池的相關操作,例如查看、編輯和擴縮容等。 |
阿里云賬號(主賬號)對賬號中的資源具有完全管理權限,您也可以在RAM中創建一個RAM用戶,授予AdministratorAccess權限,充當賬號管理員,該管理員可以對賬號下所有云資源進行管控操作。更多信息,請參見創建RAM用戶作為賬號管理員。
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在用戶頁面,單擊目標RAM用戶操作列的添加權限。
您也可以選中多個RAM用戶,單擊用戶列表下方的添加權限,為RAM用戶批量授權。
在新增授權面板,為RAM用戶添加權限。
選擇資源范圍。
賬號級別:權限在當前阿里云賬號內生效。
資源組級別:權限在指定的資源組內生效。
重要指定資源組授權生效的前提是該云服務及資源類型已支持資源組,詳情請參見支持資源組的云服務。資源組授權示例,請參見使用資源組限制RAM用戶管理指定的ECS實例。
選擇授權主體。
授權主體即需要添加權限的RAM用戶。系統會自動選擇當前的RAM用戶。
選擇需要授予的系統權限策略。
單擊確認新增授權。
單擊關閉。
使用自定義策略授權
自定義策略授權用于對目標RAM用戶或RAM角色實現細粒度的云資源訪問控制。不同的云資源可能存在不同的安全性和訪問控制要求,如果您需要對用戶進行精細化的云資源訪問控制,例如,限制某用戶對某個具體集群的操作權限,您可以創建自定義授權策略滿足這種細粒度要求。另外,如果目標RAM用戶或RAM角色有基于SDK的二次開發需求,還可實現API級別的權限控制。關于RAM支持的授權項,請參見授權信息。
在創建自定義授權策略時,您需要了解授權策略語言的基本結構和語法。更多信息,請參見權限策略基本元素。
步驟一:創建自定義授權策略
使用RAM管理員登錄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授權,才能對集群內部資源進行操作。具體授權,請參見為RAM用戶或RAM角色授予RBAC權限。
如需提升ACK集群內應用訪問其他云服務的安全性,您可以通過RRSA配置ServiceAccount的RAM權限實現Pod權限隔離,請參見通過RRSA配置ServiceAccount的RAM權限實現Pod權限隔離。
如需精細化RAM授權,請參見通過標簽實現精細化權限管理、手動收斂ACK托管版集群的Worker RAM角色權限。
授權過程問題,請參見授權管理FAQ。