507 Kubernetes Authorization and RBAC [0.5 PT]

Updated . Posted . Visible to the public.

Ziele

  • Du verstehst, welche Aufgaben der Kubernetes API Server übernimmt.
  • Du weißt, wie der API Server in das Management des Cluster States involviert ist.
  • Du weißt, auf welchem Port der API Server per Default hört und welches Protokoll gesprochen wird.
  • Du weißt, dass der API Server ein self signed Certificate verwendet und wie du diesem auf einem anderen System vertrauen kannst
  • Du kennst die 3 default Plugins für Authentifizierung am API server
  • Du weißt, wie die Authentifizierung und Role Zuweisung mit Client Certificates funktioniert.
  • Du weißt, wie eine Node dem Cluster beitreten kann und authentifiziert wird.
  • Du weißt, wofür ServiceAccounts da sind.
  • Du weißt, wie Kubernetes die Permissions für den ServiceAccount in den Container einbindet.
  • Wie werden Client Certificates und ServiceAccounts Permissions zugewiesen?
  • Du kennst den Unterschied zwischen Role und ClusterRole.

Inhalte

Aufgaben

  1. Besprich die ClusterRole aus Anhang A mit deinem Mentor.

  2. Besprich das RoleBinding aus Anhang B mit deinem Mentor.

  3. Erstelle eine Grafik, die zeigt wie RBAC funktioniert. Teil der Grafik sollte sein:

    • ClusterRole
    • Role
    • ClusterRoleBinding
    • RoleBinding
    • ServiceAccount
    • Client Certificate

    Es sollte ersichtlich sein, wie Permissions jeweils auf Namespaces begrenzt werden können.

Anhang A

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-reader
rules:
- apiGroups: ["", "apps"]
  resources: ["pods", "deployments", "statefulsets"]
  verbs: ["get", "watch", "list"]

Anhang B

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: sample
subjects:
- kind: ServiceAccount
  name: read-pods
  namespace: sample
roleRef:
  kind: ClusterRole
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
Claus-Theodor Riegg
Last edit
Matthias Bruhse
License
Source code in this card is licensed under the MIT License.
Posted by Claus-Theodor Riegg to DevOps Curriculum (2023-01-30 11:11)