Zum Inhalt

Policy as Code

Policy as Code ermöglicht die automatische Durchsetzung von Sicherheitsrichtlinien und Best Practices in der ayedo Software Delivery Plattform mittels Kyverno.

Relevante Vorschriften

Obwohl "Policy-as-Code" nicht explizit in Regulierungen genannt wird, wird die technische Durchsetzung von Richtlinien als wichtige Strategie angesehen, um Compliance-Verletzungen zu reduzieren und den Compliance-Aufwand zu minimieren.

GDPR Art. 32

GDPR Artikel 32 fordert:

Unter Berücksichtigung des Stands der Technik [...] treffen der Verantwortliche und der Auftragsverarbeiter [...] geeignete technische und organisatorische Maßnahmen [...] sowie ein Verfahren zur regelmäßigen Überprüfung, Bewertung und Evaluierung der Wirksamkeit der technischen und organisatorischen Maßnahmen zur Gewährleistung der Sicherheit der Verarbeitung. [Hervorhebung hinzugefügt]

BSI IT-Grundschutz

APP.4.4.A13: Zugriffsschutz

Der Zugriff auf die Management-Funktionen der Control Plane SOLLTE beschränkt werden. Die Ressourcen der Workload-Cluster SOLLTEN ausschließlich aus entsprechenden Namespaces zugewiesen werden. [Hervorhebung hinzugefügt]

APP.4.4.A14: Verwendung von Admission Controllern

Admission Controller SOLLTEN aktiviert werden. Die Funktion der Admission Controller SOLLTE über Richtlinien (engl. Policies) geeignet konfiguriert werden.

Mapping zu Norm-Controls

ISO 27001 Annex A 5.36 Compliance with Policies, Rules and Standards

Die Einhaltung der Informationssicherheitspolitik, themenspezifischen Richtlinien und Standards der Organisation sowie alle geltenden Sicherheitsanforderungen MUSS regelmäßig überprüft werden.

Implementierung in der ayedo SDP:

  • Kyverno Policies: Automatische Durchsetzung von Sicherheitsrichtlinien
  • Policy Violations Dashboard: Grafana-Dashboard zur Überwachung
  • Audit Mode: Policies können im Audit-Modus laufen (Warn statt Block)
  • Reporting: Automatische Compliance-Reports

ISO 27001 Annex A 5.1 Policies for Information Security

Informationssicherheitspolitiken MÜSSEN definiert, von der Führung genehmigt, veröffentlicht, kommuniziert und allen relevanten Mitarbeitern und externen Parteien zur Kenntnis gebracht werden.

Implementierung in der ayedo SDP:

  • ✅ Policies als Code in Git (Infrastructure as Code)
  • ✅ Review-Prozesse für Policy-Änderungen
  • ✅ Automatische Dokumentation der aktiven Policies

Policy as Code Dashboard

Die ayedo SDP stellt ein Policy as Code Dashboard in Grafana bereit, das einen Überblick über Policy-Verstöße und -Einhaltung bietet:

Dashboard-Inhalte:

  • Policy Violations: Aktuelle Verstöße gegen Policies
  • Blocked Requests: Anzahl der durch Policies blockierten Requests
  • Audit Mode Warnings: Policies im Audit-Modus
  • Policy by Type: Übersicht nach Policy-Kategorie
  • Compliance Rate: Prozentsatz der Policy-Einhaltung

Zugriff auf das Dashboard:

Das Dashboard ist über Grafana verfügbar: Kyverno Policy Reports

Kyverno Policies

Die ayedo SDP nutzt Kyverno für Policy-Enforcement.

Vorteile von Kyverno

  • Kubernetes-nativ: YAML-basierte Policy-Definition
  • Einfache Syntax: Keine spezielle Policy-Sprache notwendig
  • Admission Control: Validierung, Mutation und Generierung von Ressourcen
  • Audit Mode: Policies können im Warn-Modus laufen
  • Policy Reports: Automatische Reports über Policy-Status

Policy-Modi

Enforce Mode (Standard)

Policies im Enforce Mode blockieren nicht-konforme Ressourcen:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-labels
spec:
  validationFailureAction: Enforce
  rules:
    - name: check-for-labels
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Label 'app' is required"
        pattern:
          metadata:
            labels:
              app: "?*"

Audit Mode

Policies im Audit Mode loggen Verstöße, blockieren aber nicht:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-labels
spec:
  validationFailureAction: Audit  # Nur warnen, nicht blockieren
  rules:
    # ...

Kategorien von Policies

Security Policies

Verbot privilegierter Container

Verhindert, dass Container mit Root-Rechten laufen:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: disallow-privileged-containers
spec:
  validationFailureAction: Enforce
  rules:
    - name: privileged-containers
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Privileged containers are not allowed"
        pattern:
          spec:
            containers:
              - securityContext:
                  privileged: false

Compliance: ISO 27001 A.8.30, BSI APP.4.4.A10

Network Policies erforderlich

Erzwingt, dass jeder Namespace NetworkPolicies definiert hat:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-networkpolicies
spec:
  validationFailureAction: Enforce
  rules:
    - name: check-networkpolicy-exists
      match:
        any:
          - resources:
              kinds:
                - Namespace
      validate:
        message: "NetworkPolicy is required in each namespace"
        # Policy-Logik...

Compliance: ISO 27001 A.8.20, BSI APP.4.4.A19

Trusted Container Registries

Erlaubt nur Images aus vertrauenswürdigen Registries:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: restrict-image-registries
spec:
  validationFailureAction: Enforce
  rules:
    - name: validate-registries
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Images must be from harbor.example.com"
        pattern:
          spec:
            containers:
              - image: "harbor.example.com/*"

Compliance: ISO 27001 A.8.19, BSI APP.4.4.A8

Reliability Policies

Resource Requests erforderlich

Erzwingt, dass alle Pods CPU/Memory Requests definieren:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-requests-limits
spec:
  validationFailureAction: Enforce
  rules:
    - name: validate-resources
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "CPU and memory resource requests are required"
        pattern:
          spec:
            containers:
              - resources:
                  requests:
                    memory: "?*"
                    cpu: "?*"

Compliance: ISO 27001 A.8.6 (Kapazitätsplanung)

Minimum Replicas

Verhindert Single-Pod-Deployments in Production:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: minimum-replicas
spec:
  validationFailureAction: Enforce
  rules:
    - name: check-replicas
      match:
        any:
          - resources:
              kinds:
                - Deployment
              namespaces:
                - production
      validate:
        message: "Minimum 2 replicas required in production"
        pattern:
          spec:
            replicas: ">=2"

Compliance: ISO 27001 A.8.6, GDPR Art. 32 (Availability)

PodDisruptionBudget erforderlich

Erzwingt PodDisruptionBudgets für HA-Deployments:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-pdb
spec:
  validationFailureAction: Audit  # Nur Warnung
  rules:
    - name: check-pdb
      match:
        any:
          - resources:
              kinds:
                - Deployment
      validate:
        message: "PodDisruptionBudget recommended for HA"
        # ...

Compliance: ISO 27001 A.8.6, GDPR Art. 32 (Resilience)

Compliance Policies

Image Tag nicht "latest"

Verhindert Nutzung des "latest" Tags:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: disallow-latest-tag
spec:
  validationFailureAction: Enforce
  rules:
    - name: validate-image-tag
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Image tag 'latest' is not allowed"
        pattern:
          spec:
            containers:
              - image: "!*:latest"

Compliance: ISO 27001 A.8.19 (Change Management)

Backup Annotations

Erzwingt Backup-Annotations für PVCs:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-backup-annotations
spec:
  validationFailureAction: Audit
  rules:
    - name: check-backup-annotation
      match:
        any:
          - resources:
              kinds:
                - PersistentVolumeClaim
      validate:
        message: "Backup annotation is recommended"
        pattern:
          metadata:
            annotations:
              backup.velero.io/backup-volumes: "?*"

Compliance: ISO 27001 A.8.13 (Information Backup)

Policy Lifecycle

1. Policy Design

  • Risikoanalyse: Welche Risiken soll die Policy adressieren?
  • Compliance Mapping: Welche Norm-Controls werden erfüllt?
  • Impact Assessment: Welche Auswirkungen hat die Policy auf Entwickler?

2. Policy Implementation

  • YAML Definition: Policy als Kyverno ClusterPolicy oder Policy
  • Git Commit: Policy in Git-Repository einchecken
  • Review: Code Review durch Security/Compliance Team

3. Policy Testing

  • Audit Mode: Policy zunächst im Audit-Modus deployen
  • Monitoring: Policy Violations Dashboard beobachten
  • Developer Feedback: Feedback von Anwendungsentwickler einholen

4. Policy Enforcement

  • Enforce Mode: Policy auf Enforce umstellen
  • Documentation: Policy in Dokumentation aufnehmen
  • Communication: Entwickler über neue Policy informieren

5. Policy Review

  • Quarterly Review: Vierteljährliche Überprüfung aller Policies
  • Incident Analysis: Policy-Anpassung nach Security Incidents
  • Continuous Improvement: Policies basierend auf Feedback anpassen

Handling Non-Compliance

Für Plattform Administratoren

Wenn eine Policy wiederholt verletzt wird:

  1. Policy überprüfen: Ist die Policy korrekt definiert?
  2. Developer kontaktieren: Warum tritt die Verletzung auf?
  3. Risk Assessment: Ist die Policy zu strikt?
  4. Policy anpassen: Falls notwendig, Policy lockern oder Ausnahmen definieren

Für Anwendungsentwickler

Wenn eine Policy Ihr Deployment blockiert:

  1. Policy verstehen: Lesen Sie die Fehlermeldung
  2. Dokumentation: Konsultieren Sie die Policy-Dokumentation
  3. Anpassung: Passen Sie Ihr Deployment an die Policy an
  4. Ausnahme beantragen: Falls notwendig, kontaktieren Sie das Platform-Team

Policy Exceptions

In begründeten Fällen können Policy Exceptions gewährt werden:

apiVersion: kyverno.io/v1
kind: PolicyException
metadata:
  name: allow-privileged-for-gpu
  namespace: ml-workloads
spec:
  exceptions:
    - policyName: disallow-privileged-containers
      ruleNames:
        - privileged-containers
  match:
    any:
      - resources:
          namespaces:
            - ml-workloads
          names:
            - gpu-training-*

Wichtig: Exceptions müssen dokumentiert und regelmäßig überprüft werden!

Best Practices

Für Plattform Administratoren

  1. Audit Mode First: Neue Policies zunächst im Audit-Modus deployen
  2. Gradual Rollout: Policies schrittweise auf Namespaces ausrollen
  3. Documentation: Policies gut dokumentieren
  4. Developer Communication: Proaktiv mit Entwicklern kommunizieren
  5. Regular Reviews: Quartalsweise Policy-Reviews

Für Anwendungsentwickler

  1. Policy Awareness: Machen Sie sich mit Policies vertraut
  2. Early Testing: Testen Sie Deployments frühzeitig
  3. Resource Requests: Definieren Sie immer CPU/Memory Requests
  4. Security Best Practices: Folgen Sie Security Best Practices
  5. Feedback: Geben Sie Feedback zu Policies

Monitoring und Alerting

VictoriaMetrics Alerts

Automatische Alerts bei Policy-Verletzungen:

- alert: HighPolicyViolationRate
  expr: kyverno_policy_results_total{result="fail"} > 10
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "High rate of policy violations"
    description: "More than 10 policy violations in 5 minutes"

Grafana Dashboard

Das Kyverno Policy Reports Dashboard zeigt:

  • Policy Violation Trends
  • Top Violated Policies
  • Namespace-wise Compliance
  • Policy Enforcement vs. Audit Mode

Compliance-Checkliste

  • ✅ Kyverno installiert und konfiguriert
  • ✅ Basis-Policies deployed (Security, Reliability)
  • ✅ Policy as Code Dashboard in Grafana verfügbar
  • ✅ Alerting bei Policy-Verletzungen konfiguriert
  • ✅ Policy-Dokumentation erstellt
  • ✅ Developer-Training zu Policies durchgeführt
  • ✅ Quartalsweise Policy-Reviews geplant
  • ✅ Policy Exception-Prozess definiert

Weitere Informationen

Support

Bei Fragen zu Policy as Code: