Haven

Compliancy Checker

In deze sectie laten we zien hoe je met de Haven Compliancy Checker een bestaand cluster kan controleren op Haven Compliancy.

Voorbereiding

Zorg dat je kubectl hebt geïnstalleerd op je lokale computer. Daarnaast heb je cluster admin rechten nodig om het cluster te valideren op compliancy.

Installeren

De Compliancy Checker is onderdeel van de Haven CLI. We bieden de Haven CLI aan voor meerdere besturingssystemen, waaronder macOS, Linux en Windows.

Homebrew (macOS en Linux)

Gebruik je Homebrew, dan installeer je de Haven CLI in drie commando's:

$ brew tap commonground/haven https://gitlab.com/commonground/haven/homebrew-haven.git
$ brew trust commonground/haven
$ brew install commonground/haven/haven

Omdat de tap op GitLab staat in plaats van GitHub, geef je de URL van de repository één keer mee bij het tappen.

Vanaf Homebrew 6.0 weigert brew install een formule uit een tap van derden zolang je die tap niet expliciet vertrouwt; brew trust doet dat één keer per computer. Dat is een bewuste veiligheidsmaatregel van Homebrew: een formule is een script dat op jouw machine draait, dus vertrouw alleen taps waarvan je de herkomst kent. De tap hierboven wordt beheerd door het Haven-team en bevat uitsluitend de Haven CLI.

Daarna werkt alles zoals je van Homebrew gewend bent: met brew upgrade haal je de nieuwste versie op, en de autocompletion voor je shell wordt meteen geïnstalleerd.

Handmatig (alle besturingssystemen)

  1. Download de gewenste versie van de Haven CLI
  2. Pak de download uit (unzip haven-v12.9.0-darwin-arm64.zip)
  3. Verplaats de binary in de uitgepakte map naar het gewenste pad (mv _dist/darwin-arm64/haven /usr/local/bin/haven)

Checks uitvoeren

Start de Haven Compliancy Checker als volgt:

$ haven check

Binnen enkele ogenblikken toont het systeem de resultaten:

Schermafbeelding van de Compliancy Checker

Een cluster is Haven-compliant indien alle checks slagen, inclusief de CNCF checks. Zie ook haven check --help.

De basis

Een Haven Compliant cluster is de basis waarop verder gebouwd kan worden. Zorgvuldig beheer is doorlopend van belang voor de operatie en veiligheid, denk hierbij aan:

  1. Het up-to-date houden van het cluster.
  2. Het up-to-date houden van de deployments op het cluster.
  3. Goed beheer voeren op de toegangsrechten tot het cluster.

Ontwikkelaars zullen voorts het cluster in gebruik gaan nemen, voor hen hebben we ter illustratie ook de Ontwikkelen op Haven documentatie pagina's.

Clusters met een policy engine

De checker draait kortstondig een pod met hostPID en hostPath-mounts van /proc en /sys, in een eigen namespace (haven-check-<timestamp>). Dat is nodig om te lezen waar de checks over oordelen: de flags waarmee de apiserver draait en of de nodes SELinux of AppArmor afdwingen. De optionele CIS- en Kubescape-checks draaien jobs met dezelfde rechten.

Kyverno of Gatekeeper weigert zulke pods, waarna de betreffende checks falen. Zonder die rechten kan de checker de eigenschappen niet vaststellen, dus de oplossing is hem uit te zonderen. Alles wat de checker aanmaakt draagt daarvoor het label app.kubernetes.io/name: haven-compliancy-checker:

apiVersion: kyverno.io/v2
kind: PolicyException
metadata:
  name: haven-compliancy-checker
  namespace: kyverno
spec:
  match:
    any:
      - resources:
          kinds: [Pod]
          selector:
            matchLabels:
              app.kubernetes.io/name: haven-compliancy-checker
  exceptions:
    - policyName: disallow-host-namespaces
      ruleNames: ["*"]
    - policyName: disallow-host-path
      ruleNames: ["*"]

PolicyException moet in Kyverno wel aan staan; gaat het om je eigen policies, dan kan een exclude op hetzelfde label ook. Maak de uitzondering vlak voor de run aan en verwijder hem daarna weer: de checker heeft die rechten alleen tijdens haven check nodig.

Aan de slag met Haven?

In onze technische documentatie wordt de standaard toegelicht en beschreven hoe u Haven kunt installeren op uw huidige IT infrastructuur. Bovendien hebben we een handreiking programma van eisen beschikbaar gesteld om het inkopen van Haven te vereenvoudigen. Of neem contact met ons op, we helpen u graag op weg!