Pod Security Policy (PSP) -> OPA

Pod Security Policy is een methode om de beveiliging binnen een Kubernetes pod af te dwingen. De PSP definitie bestaat uit een aantal condities waaraan voldaan moet worden om de pod door Kubernetes aan te laten maken en te ‘schedulen‘ op een beschikbare node.

PSP wordt ingesteld als een zogenaamde ‘admission-controller‘ en deze vormt een tussenlaag om de pods aan te maken volgens de gedefinieerde PSP.

De meeste clusters maken gebruik van RBAC (Role-Based Access Control) waarmee bepaald kan worden welke rechten gebruikers hebben op pods, zoals bv. list, get, create, edit, delete, maar dit geeft niet aan of binnen een pod gebruik gemaakt kan worden van bepaalde privileges.

Deprecated

Om meer controle te krijgen over de security aspects binnen Kubernetes zijn er echter betere manieren gevonden dan PSP en daarom zal PSP worden afgebouwd. Het is vanaf Kubernetes versie v1.21 deprecated en zal vanaf v1.25 niet meer aanwezig zijn.

OPA – Gatekeeper

Een alternatief voor PSP is OPA: Open-Policy Agent/Gatekeeper. Ook hiermee wordt een ‘Admission Controller‘ gebruikt als tussenlaag voor het aanmaken en/of wijzigen van resources. Voorbeelden van de ‘constraints‘ zijn o.a.:

  • Verplicht label op resources zoals namespaces en pods
  • Verplichte annotation op resources
  • Gebruik van toegestane image repo’s
  • Voorkom gebruik van dubbele domeinnamen in Ingresses
  • enz…

Er zijn vele ‘constraints‘ te bedenken en aan te maken binnen OPA’s gatekeeper. Voordat een constraint gebruikt kan worden dient er hiervoor een ‘template‘ te zijn. Met andere woorden, ’templates’ worden gebruikt om ‘constraints’ aan te maken.

Installatie

Gebruik Helm voor de installatie van OPA/Gatekeeper:

$ helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
$ helm install gatekeeper/gatekeeper --name-template=gatekeeper --namespace gatekeeper-system --create-namespace

of maak gebruik van de Apps/Marketplace optie binnen Rancher om OPA/Gatekeeper toe te voegen.