Rbac

Kubernetes dla każdego – sztuka konteneryzacji

RBAC

kubectl create clusterrole <nazwa> --verb=create==resource=pod

Rola

Roli można użyć do przyznania dostępu tylko w ramach jednego namespace

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
  metadata:
  namespace: default
  name: pod-all
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "create", "list", "watch", "delete", "patch"]
kubectl get roles --all-namespaces
kubectl describe role/<RoleName> -n <Namespace>

ClusterRole

Nie ogranicza się do namespace, definiowany jest do całego klastra

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: service-get
rules:
- apiGroups: [""]
  resources: ["service"]
  verbs: ["get", "list", "watch"]

RoleBinding

Wiązanie zdefiniowanej wcześniej roli z konkretnym użytkownikiem lub grupą. Definiujemy tutaj również namespace którego to wiązanie będzie dotyczyć

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: crud-pods
  namespace: default
subjects:
  - kind: User
  name: cloudstate-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-all
  apiGroup: rbac.authorization.k8s.io
kubectl get rolebindings --all-namespaces
kubectl describe rolebinding/node-view -n kube-system

subjects może być typu Groups, User lub ServiceAccounts (więcej).

ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: delete-secrets-cluster
subjects:
  - kind: Group
  name: secret-remover
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-delete
  apiGroup: rbac.authorization.k8s.io