日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用自定義RBAC限制集群內資源操作

當容器服務控制臺預置的ClusterRole無法滿足您的權限要求時,您可以通過自定義ClusterRole和Role實現更精細化的RBAC權限配置,使您能夠根據業務需求和安全要求靈活定制權限策略。本文將為您介紹如何自定義RBAC權限配置。

自定義RBAC權限策略說明

您可以根據以下資源的策略說明,自定義創建Role和ClusterRole的YAML清單,來實現對ACK集群資源的精細訪問控制。

Role(命名空間角色)

以下YAML示例定義了一個名為my-role的Role,賦予其在default命名空間中對Pod資源的讀取權限。

   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     namespace: default
     name: my-role 
   rules:                               # 權限規則的列表。
   - apiGroups: [""]                    # 資源所屬的API組。
     resources: ["pods"]                # 定義pod資源類型。
     verbs: ["get", "list"]             # 定義執行的get、list權限策略。

ClusterRole(集群角色)

以下YAML示例定義了一個名為my-clusterrole的ClusterRole,賦予其對集群中的Pods和Services資源的讀取權限。

說明

ClusterRole是集群維度的資源,YAML中若指定命名空間參數視為無效。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# namespace: default                     
  name: my-clusterrole
rules:                                 # 權限規則的列表。
  - apiGroups: [""]                    # 資源所屬的API組。
    resources: ["pods"]                # 定義pod資源類型。
    verbs: ["get", "list"]             # 定義執行的get、list權限策略。
  - apiGroups: [""]
    resources: ["services"]
    verbs: ["get", "list"]

您可以根據以下常見資源類型的策略說明,為不同資源創建自定義RBAC權限,以實現對RAM用戶或角色在集群資源上更精細的訪問控制。

常見資源類型的策略說明

  • 讀取權限

    • get:讀取指定資源的詳細信息。

    • list:獲取資源集合的列表。

    • watch:監控資源的變化,實時接收更新。

  • 寫入權限

    • create:創建新的資源實例。

    • update:修改已存在的資源。

    • patch:對已存在的資源進行部分修改。

    • delete:刪除指定的資源。

資源名稱

資源類型(resources

所屬API組(apiGroups

權限策略(verbs

Pods

resources: ["pods"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete", "exec", "proxy"]

Service

resources: ["services"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

ConfigMaps

resources: ["configmaps"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Secrets

resources: ["secrets"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

PersistentVolumes

resources: ["persistentvolumes"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

PersistentVolumeClaim

resources: ["persistentvolumeclaims"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

NameSpaces

resources: ["namespaces"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Deployments

resources: ["deployments"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

DaemonSet

resources: ["daemonsets"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

StatefulSet

resources: ["statefulsets"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Ingresses

resources: ["ingresses"]

apiGroups: ["networking.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Networkpolicies

resources: ["networkpolicies"]

apiGroups: ["networking.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Jobs

resources: ["jobs"]

apiGroups: ["batch"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

CronJobs

resources: ["cronjobs"]

apiGroups: ["batch"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

StorageClasses

resources: ["storageclasses"]

apiGroups: ["storage.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

HorizontalPodAutoscalers

resources: ["horizontalpodautoscalers"]

apiGroups: ["autoscaling"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

操作步驟

image

您可以通過控制臺或kubectl使用自定義RBAC權限。

重要

當前容器服務 Kubernetes 版控制臺操作方式僅支持自定義ClusterRole角色與集群內RBAC權限的綁定,如果您需要使用自定義Role角色進行權限綁定,可使用kubectl命令完成。

控制臺

步驟一:創建自定義RBAC權限

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇安全管理 > 角色

  3. 角色頁面,單擊Cluster Role頁簽。然后單擊創建

  4. 創建YAML面板輸入自定義策略的YAML內容,單擊確定即可創建ClusterRole。

    此步驟以ClusterRole(集群角色)的YAML為例,創建完成后,可在Cluster Role頁簽查看自定義權限my-clusterrole

12

步驟二:使用自定義RBAC權限進行授權

  1. 登錄容器服務管理控制臺,在左側導航欄選擇授權管理

  2. 授權管理頁面配置管理權限。

    • 為RAM用戶授權

      單擊RAM 用戶頁簽,在RAM用戶列表中,單擊目標RAM用戶右側的管理權限,進入權限管理頁面,您也可以選擇多個目標RAM用戶進行批量授權。

    • 為RAM角色授權

      單擊RAM 角色頁簽,輸入RAM 角色名稱,然后單擊管理權限,進入權限管理頁面。

      說明

      RAM角色支持手動輸入,也支持在下拉列表中選擇。您可以單擊RAM角色右側空白框,將會顯示已有的RAM角色列表,然后從列表中選擇已有的RAM角色進行授權。

  3. 單擊+添加權限,在添加權限框中,選擇已創建ClusterRole的集群和需要授權的命名空間,然后在權限管理中選擇自定義,接著在右邊的下拉框中,選擇my-clusterrole,然后單擊提交授權

13

kubectl

步驟一:創建自定義RBAC權限

  1. 使用以下示例應用的YAML內容,創建名為my-clusterrole.yaml文件。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: my-clusterrole
      namespace: default
    rules:
      - apiGroups: [""]
        resources: ["pods"]
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources: ["services"]
        verbs: ["get", "list", "watch"]
  2. 執行以下命令,部署ClusterRole。

    kubectl apply -f  my-clusterrole.yaml

步驟二:獲取授權對象ID

步驟三:使用自定義RBAC權限授權

  1. 使用以下示例應用的YAML內容,創建名為my-clusterrole-binding.yaml文件。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: my-clusterrole-binding
    subjects:
    - kind: User
      name: "20811XXXXXXXXX2288"  # 步驟二中獲取授權對象的UserId或RoleId。
    roleRef:
      kind: ClusterRole
      name: my-clusterrole
      apiGroup: rbac.authorization.k8s.io
  2. 執行以下命令,部署ClusterRoleBinding。

    kubectl apply -f  my-clusterrole-binding.yaml

目標RAM用戶被授予自定義RBAC權限后,通過獲取目標集群KubeConfig并通過kubectl工具連接集群,以驗證其權限。