WAF-OPS-110 – GitOps-basierte Deployments müssen für Kubernetes-/Container-Workloads bevorzugt werden
Beschreibung
Kubernetes and container workloads SHOULD be deployed via GitOps controllers that reconcile desired state from Git. GitOps repositories MUST enforce peer review, branch protection, and signed commits. Controllers MUST report sync status, drift, and errors to observability systems. Manual imperative changes to clusters MUST be reconciled or rejected.
Begründung
| Risiko | Beschreibung |
|---|---|
Risk |
Imperative cluster changes bypass audit trails and create drift between environments. |
Risk |
Missing GitOps reconciliation leaves clusters in undocumented, non-reproducible states. |
Anforderungen
-
Kubernetes and container workloads SHOULD be deployed via GitOps controllers that reconcile desired state from Git.
-
GitOps repositories MUST enforce peer review, branch protection, and signed commits.
-
Controllers MUST report sync status, drift, and errors to observability systems.
-
Manual imperative changes to clusters MUST be reconciled or rejected.
Implementierungsleitfaden
-
Document the requirement in a version-controlled policy, ADR, or standard.
-
Assign ownership and establish a review cadence (e.g., quarterly).
-
Implement the required configuration as code in Terraform or equivalent IaC.
Reifegrade
| Level | Name | Kriterien |
|---|---|---|
L1 |
Ad hoc – control not consistently applied |
* Die Anforderung ist nicht einheitlich umgesetzt; Nachweis existiert nur punktuell oder fehlt. |
L2 |
Standardised – policy defined and communicated |
* Eine dokumentierte Policy oder ein Standard beschreibt die Anforderung. |
L3 |
Integrated – automated validation in CI/CD |
* Terraform-Checks oder IaC-Gates prüfen die Anforderung automatisch in CI/CD. |
L4 |
Auditable – metrics and exceptions tracked |
* Abdeckung, Ausnahmen und Qualitätsmetriken werden quartalsweise berichtet. |
L5 |
Optimised – continuous improvement based on data |
* Die Effektivität wird kontinuierlich gemessen und automatisch optimiert. |
Checks
waf-ops-110.tf.aws.eks-gitops-addon
Engine: terraform | Provider: aws | Automated: Ja
AWS EKS sollte GitOps-Agent über EKS Add-on oder Helm bereitstellen
AWS EKS sollte GitOps-Agent über EKS Add-on oder Helm bereitstellen
Scope: resource — aws_eks_addon, helm_release
Assertions:
* addon_name in ['fluxcd', 'argo-cd'] — EKS should have a GitOps add-on installed.
Remediation: AWS EKS sollte GitOps-Agent über EKS Add-on oder Helm bereitstellen
# Beispiel konform zu waf-ops-110.tf.aws.eks-gitops-addon
# Beispiel nicht konform zu waf-ops-110.tf.aws.eks-gitops-addon
waf-ops-110.tf.azurerm.gitops-extension
Engine: terraform | Provider: azurerm | Automated: Ja
Azure AKS sollte Flux-Erweiterung für GitOps verwenden
Azure AKS sollte Flux-Erweiterung für GitOps verwenden
Scope: resource — azurerm_kubernetes_cluster_extension
Assertions:
* extension_type in ['microsoft.flux'] — AKS should use microsoft.flux GitOps extension.
Remediation: Azure AKS sollte Flux-Erweiterung für GitOps verwenden
# Beispiel konform zu waf-ops-110.tf.azurerm.gitops-extension
# Beispiel nicht konform zu waf-ops-110.tf.azurerm.gitops-extension
waf-ops-110.config.gitops-policy
Engine: config | Provider: any | Automated: Nein
GitOps-Policy muss dokumentiert sein
GitOps-Policy muss dokumentiert sein
Scope: file — docs/devops/gitops-policy.md
Assertions:
* exists attribute_exists — GitOps policy must describe repository structure and reconciliation.
Remediation: GitOps-Policy muss dokumentiert sein
# Beispiel konform zu waf-ops-110.config.gitops-policy
# Beispiel nicht konform zu waf-ops-110.config.gitops-policy
Evidenz
-
Terraform-Konfiguration, die die Anforderung umsetzt.
-
Policy, ADR oder Standard, der die Anforderung dokumentiert.
-
Optionale Cloud-Konsolen- oder API-Ausgaben, die den Laufzeit-Zustand bestätigen.
Verwandte Controls
-
WAF-REL-110 == Regulatorisches Mapping
-
AWS Well-Architected Framework: OPS 5 – Operate as a unified whole
-
SRE Book (Google): Chapter 7 – The Evolution of Automation at Google
-
NIST CSF 2.0: PR.IP-01 – Baseline configurations