k8s 許可權控制
阿新 • • 發佈:2022-04-20
K8s中許可權控制的API資源包括四個:
- Role 作用域 namespace
- ClusterRole 作用域 叢集
- RoleBinding
- ClusterRoleBinding
role
- kubectl create role developer --verb=list --resource=pods
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [""] # "" 指定核心 API 組 resources: ["pods"] verbs: ["get", "watch", "list"]
- ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# 此處的 "namespace" 被省略掉是因為 ClusterRoles 是沒有名稱空間的。
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
- RoleBinding
apiVersion: rbac.authorization.k8s.io/v1 # 此角色繫結允許 "jane" 讀取 "default" 名字空間中的 Pods kind: RoleBinding metadata: name: read-pods namespace: default subjects: # 你可以指定不止一個“subject(主體)” - kind: User name: jane # "name" 是不區分大小寫的 apiGroup: rbac.authorization.k8s.io roleRef: # "roleRef" 指定與某 Role 或 ClusterRole 的繫結關係 kind: Role # 此欄位必須是 Role 或 ClusterRole name: pod-reader # 此欄位必須與你要繫結的 Role 或 ClusterRole 的名稱匹配 apiGroup: rbac.authorization.k8s.io
- ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1 # 這個叢集角色繫結允許 "manager" 組中的任何使用者讀取任意名稱空間中 "secrets"。 kind: ClusterRoleBinding metadata: name: read-secrets-global subjects: - kind: Group name: manager # 名稱區分大小寫 apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: secret-reader apiGroup: rbac.authorization.k8s.io