RAM系統策略僅控制ACK One集群資源的操作權限(例如創建實例、查看實例列表等),若RAM用戶或RAM角色需要操作指定集群內的K8s資源,例如,創建GitOps Application和Argo Workflow等,還需要獲取指定ACK One集群及其命名空間的操作權限即RBAC權限。本文為您介紹如何為RAM用戶或RAM角色授予RBAC權限。
注意事項
您需要使用阿里云(主賬號)、集群創建者或已具有集群管理員權限的RAM用戶,為指定的RAM用戶或RAM角色授權,普通RAM用戶無授權操作的權限。
前提條件
授予RBAC權限前,您需要先為RAM用戶或RAM角色授予ACK One集群的操作權限,具體操作,請參見為RAM用戶或RAM角色授予系統權限策略。
若通過CLI方式授權,需要安裝阿里云CLI并配置憑證,且CLI版本為3.0.159及以上。具體操作,請參見安裝阿里云CLI和配置憑證。
ACK One支持的RBAC權限
多集群艦隊RBAC權限
RBAC權限 | RBAC權限 |
admin(管理員) | 具有集群范圍和所有命名空間下資源的讀寫權限。 |
dev(開發人員) | 具有所選命名空間下的資源讀寫權限。 |
gitops-dev(GitOps開發人員) | 具有argocd命名空間下應用資源的讀寫權限。 |
集群范圍資源列表
Kind
apiVersion
Namespace
v1
Managedcluster
cluster.open-cluster-management.io
MseIngressConfig
mse.alibabacloud.com/v1alpha1
IngressClass
networking.k8s.io/v1
命名空間下資源列表
Kind
apiVersion
Deployment
apps/v1
Service
v1
Ingress
networking.k8s.io/v1
ConfigMap
v1
Secret
v1
StatefulSet
apps/v1
PersistentVolumeClaim
v1
ServiceExport
multicluster.x-k8s.io/v1alpha1
ServiceImport
multicluster.x-k8s.io/v1alpha1
HorizontalPodAutoscaler
autoscaling/v1
Application
ApplicationSet
Appproject
argoproj.io
Workflow
argoproj.io
Application
core.oam.dev
argocd命名空間下應用資源
Kind
apiVersion
Application
argoproj.io
工作流集群RBAC權限
RBAC權限 | RBAC權限 |
admin(管理員) | 具有集群范圍和所有命名空間下資源的讀寫權限。 |
dev(開發人員) | 具有所選命名空間下的資源讀寫權限。 |
集群范圍資源列表
Kind
apiVersion
Namespace
v1
PersistentVolumes
v1
ImageCaches
eci.alibabacloud.com
命名空間下資源列表
Kind
apiVersion
ConfigMap
v1
Secret
v1
ServiceAccount
v1
PersistentVolumeClaim
v1
Pod
v1
Workflow
WorkflowTemplate
CronWorkflow
argoproj.io
EventSource
EventBus
Sensor
argoproj.io
注冊集群RBAC權限
請參見注冊集群預置角色權限。
為RAM用戶或RAM角色授予艦隊的RBAC權限
通過控制臺授權
登錄ACK One控制臺。
在左側導航欄選擇
。在權限管理頁面選擇艦隊頁簽,然后選擇RAM 用戶頁簽。
在RAM用戶列表中找到要授權的RAM用戶,然后在其操作列單擊管理授權。
在彈出的操作框中選擇授權角色和命名空間,然后單擊確定。
通過CLI授權
授予Fleet實例管理員admin權限
aliyun adcp GrantUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType cluster --RoleName admin
授予Fleet實例命名空間dev權限
aliyun adcp GrantUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType namespace --Namespace default --RoleName dev
授予Fleet實例argocd命名空間gitops-dev權限
aliyun adcp GrantUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType namespace --Namespace argocd --RoleName gitops-dev
字段 | 類型 | 是否必選 | 備注 |
UserId | string | 是 | RAM用戶ID。 |
ClusterId | string | 是 | 授權目標Fleet實例ID。 |
RoleType | string | 是 | 授權類型,取值:
說明 |
RoleName | string | 是 | 預置的角色名稱,取值:
|
Namespace | string | 否 | 命名空間名稱。 說明
|
為RAM用戶或RAM角色授予工作流集群的RBAC權限
通過CLI授權
授予工作流集群管理員admin權限
aliyun adcp GrantUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType cluster --RoleName admin
授予工作流集群命名空間dev權限
aliyun adcp GrantUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType namespace --Namespace default --RoleName dev
字段 | 類型 | 是否必選 | 備注 |
UserId | string | 是 | RAM用戶ID。 |
ClusterId | string | 是 | 授權目標工作流集群ID。 |
RoleType | string | 是 | 授權類型,取值:
說明
|
RoleName | string | 是 | 預置的角色名稱,取值:
|
Namespace | string | 否 | 命名空間名稱。 說明 授權維度為命名空間維度時必須填寫。 授權維度為Fleet實例時無需填寫。 |
相關操作
更新RAM用戶RBAC權限
aliyun adcp UpdateUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476****** --RoleType cluster --RoleName dev
查詢RAM用戶RBAC權限
aliyun adcp DescribeUserPermissions --UserId 1159648454******
取消RAM用戶RBAC權限
aliyun adcp DeleteUserPermission --UserId 1159648454****** --ClusterId c6caf48c192f7476******