1. 程式人生 > 實用技巧 >K8S之rbac

K8S之rbac

一、簡介:

RBAC 使⽤ rbac.authorization.k8s.io API Group 來實現授權決策,允許管理員通過 Kubernetes API 動態配置策略,要啟⽤ RBAC ,需要在 apiserver 中新增引數 --authorization-mode=RBAC ,

如果使⽤的 kubeadm 安裝的叢集,1.6 版本以上的都預設開啟了 RBAC ,可以通過檢視 Master 節點上 apiserver 的靜態 Pod 定義⽂件:

$cat  /etc/kubernetes/manifests/kube-apiserver.yaml
     --authorization-mode=Node,RBAC ...

二、Role示例

下面是一個位於 "default" 名字空間的 Role 的示例,可用來授予對pods的讀訪問許可權

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" 標明 core API 組
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

檢視所有的role:kubectlgetrole

三、ClusterRole 示例

下面是一個 ClusterRole 的示例,可用來為任一特定名字空間中的Secret授予讀訪問許可權, 或者跨名字空間的訪問許可權(取決於該角色是如何繫結的):

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  # "namespace" 被忽略,因為 ClusterRoles 不受名字空間限制
  name: secret-reader
rules:
- apiGroups: [""]
  # 在 HTTP 層面,用來訪問 Secret 物件的資源的名稱為 "secrets"
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]