WAF++ WAF++

WAF-SOV-050 – Key Ownership & Management Defined

Beschreibung

Für alle Datenklassen MUSS das Schlüsseleigentümer-Modell explizit definiert und technisch durchgesetzt sein: Provider-Managed Keys (PMK), Customer-Managed Keys (CMK), Bring Your Own Key (BYOK) oder Hold Your Own Key (HYOK).

Key Rotation und Löschung MÜSSEN durch dokumentierte Verfahren geregelt sein. Alle Daten at rest MÜSSEN verschlüsselt sein; die Nutzung von provider-verwalteten Standardschlüsseln erfordert eine explizite Genehmigung für sensitive Datenklassen.

Rationale

Wenn ein Cloud-Provider die Verschlüsselungsschlüssel kontrolliert, hat er theoretisch die Möglichkeit, Daten zu entschlüsseln – unabhängig vom geografischen Standort der Daten. Echte Datensouveränität erfordert Souveränität über die Schlüssel, die diese Daten schützen.

CMK/BYOK stellt sicher, dass selbst wenn ein Provider rechtlich gezwungen wird, Daten herauszugeben, diese kryptografisch unzugänglich bleiben ohne das vom Kunden verwaltete Schlüsselmaterial. Key Rotation und sichere Löschung sind entscheidend für die Begrenzung des Schadensradius bei einer Schlüsselkompromittierung.

Bedrohungskontext

Risiko Beschreibung

Provider-kontrollierte Schlüssel

Provider oder Strafverfolgungsbehörden können über PMK-Schlüssel auf Daten zugreifen.

Unverschlüsselte Daten at rest

Storage Services nutzen provider-standardmäßige Verschlüsselung ohne CMK.

Schlüsselmaterial in Source Code

Key Material in Terraform State, Umgebungsvariablen oder Anwendungscode exponiert.

Deaktivierte Key Rotation

Fehlende automatische Key Rotation erhöht den Schadensradius bei Schlüsselkompromittierung.

Fehlende Deletion Policy

Veraltetes Schlüsselmaterial bleibt nach Datenlöschung persistent; DSGVO Art. 17 nicht erfüllbar.

Regulatorisches Mapping

Framework Controls

DSGVO

Art. 32 – Sicherheit der Verarbeitung (Verschlüsselung); Art. 17 – Recht auf Löschung (kryptografische Löschung via Key Deletion)

BSI C5:2020

CRY-01 – Kryptografie-Richtlinie; CRY-02 – Schlüsselverwaltung

EUCS (ENISA)

CRY-01 – Encryption at rest; CRY-03 – Key Management; SOV-03 – Customer key control

ISO 27001:2022

A.8.24 – Einsatz von Kryptografie; A.8.25 – Sicherer Entwicklungslebenszyklus

GAIA-X

Sovereign Cloud – Kryptografische Selbstbestimmung

Anforderung

  • Das Schlüsseleigentümer-Modell MUSS pro Datenklasse in der Data-Residency-Policy definiert sein

  • Für PII-, Gesundheits- und Finanzdaten: CMK oder BYOK ist Pflicht; PMK explizit verboten

  • enable_key_rotation = true MUSS auf allen KMS-Schlüsseln gesetzt sein

  • deletion_window_in_days MUSS explizit auf mindestens 14 Tage gesetzt sein

  • S3-Buckets mit souveränen Daten MÜSSEN aws:kms (nicht AES256) verwenden

  • Alle EBS-Volumes und RDS-Instanzen MÜSSEN verschlüsselt sein

  • Schlüsselmaterial DARF NICHT in Terraform State, Umgebungsvariablen oder Code gespeichert werden

Implementierungsanleitung

  1. Schlüsseleigentümer-Modell per Datenklasse definieren: In der Data-Residency-Policy festlegen, welche Datenklassen CMK, BYOK oder PMK erfordern.

  2. CMK für sensitive Daten: aws_kms_key / azurerm_key_vault_key / google_kms_crypto_key mit enable_key_rotation = true erstellen.

  3. BYOK/HYOK für kritische Daten: Schlüsselmaterial in einem HSM außerhalb der Cloud-Provider-Kontrolle speichern (z.B. Thales, Utimaco).

  4. Deletion Window setzen: deletion_window_in_days >= 14 erzwingen, um versehentliche Schlüsselzerstörung zu verhindern.

  5. Schlüsselmaterial schützen: Niemals in Terraform State, Umgebungsvariablen oder Anwendungscode speichern.

  6. IAM Key Policies: Zugriff auf Schlüssel auf notwendige Services und Principals beschränken.

  7. Key Access Logging: CloudTrail für KMS aktivieren; Alerts auf ungewöhnliche Entschlüsselungsmuster konfigurieren.

  8. Kryptografische Löschung testen: DSGVO Art. 17 Compliance durch Löschung des Schlüssels und Verifikation der Datenunerreichbarkeit testen.

Reifegrad-Abstufung

Level Bezeichnung Kriterien

1

Verschlüsselung mit provider-verwalteten Schlüsseln

Daten at rest sind verschlüsselt; Provider-Managed Keys werden als Standard verwendet.

2

CMK für sensitive Datenklassen

KMS CMKs für PII-, Finanz- und Gesundheitsdaten; Key Rotation aktiviert.

3

Vollständige Key-Sovereignty-Posture

Kein PMK für sensitive Datenklassen; Key Policies schränken Zugriff auf notwendige Principals ein; Key Deletion Policy definiert und getestet.

4

BYOK/HYOK für kritische Daten mit HSM-Backing

Kritische Datenklassen nutzen BYOK oder HYOK mit externem HSM; Schlüsselmaterial nie dem Cloud-Provider exponiert; Key Access Monitoring mit Anomalie-Erkennung.

5

Automatisierte Key Governance mit kryptografischer Löschfähigkeit

Kryptografische Löschung für DSGVO Art. 17 getestet; vollständig automatisierter und auditierbarer Key Lifecycle; HSM Key Ceremonies jährlich dokumentiert und auditiert.

Terraform Checks

waf-sov-050.tf.aws.kms-key-rotation-enabled

Prüft: KMS-Schlüssel müssen enable_key_rotation = true setzen.

Compliant Non-Compliant
resource "aws_kms_key" "sovereign" {
  description             = "Sovereign data encryption key"
  enable_key_rotation     = true
  deletion_window_in_days = 30
  policy = data.aws_iam_policy_document.kms_policy.json
}
resource "aws_kms_key" "data" {
  description = "Data key"
  # ❌ enable_key_rotation defaults to false
}

waf-sov-050.tf.aws.kms-key-deletion-window

Prüft: deletion_window_in_days muss explizit gesetzt und >= 14 Tage sein.

Compliant Non-Compliant
resource "aws_kms_key" "sovereign" {
  enable_key_rotation     = true
  deletion_window_in_days = 30  # ✅ >= 14
}
resource "aws_kms_key" "data" {
  deletion_window_in_days = 7
  # ❌ Zu kurz – kein ausreichendes Review-Fenster
}

waf-sov-050.tf.aws.s3-bucket-kms-encryption

Prüft: S3-Buckets mit souveränen Daten müssen aws:kms (nicht AES256) verwenden.

Compliant Non-Compliant
resource "aws_s3_bucket_server_side_encryption_configuration" "sovereign" {
  bucket = aws_s3_bucket.data.id
  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm     = "aws:kms"
      kms_master_key_id = aws_kms_key.sovereign.arn
    }
    bucket_key_enabled = true
  }
}
resource "aws_s3_bucket_server_side_encryption_configuration" "data" {
  bucket = aws_s3_bucket.data.id
  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "AES256"
      # ❌ Provider-Managed Key – nicht sovereign
    }
  }
}

waf-sov-050.tf.aws.ebs-volume-encrypted

Prüft: EBS-Volumes müssen encrypted = true setzen.

Compliant Non-Compliant
resource "aws_ebs_volume" "data" {
  availability_zone = "eu-central-1a"
  size              = 100
  encrypted         = true
  kms_key_id        = aws_kms_key.sovereign.arn
}
resource "aws_ebs_volume" "data" {
  availability_zone = "eu-central-1a"
  size              = 100
  # ❌ encrypted defaults to false
}

waf-sov-050.tf.aws.rds-storage-encrypted

Prüft: RDS-Instanzen müssen storage_encrypted = true setzen.

Compliant Non-Compliant
resource "aws_db_instance" "sovereign" {
  storage_encrypted = true
  kms_key_id        = aws_kms_key.rds.arn
  # ...
}
resource "aws_db_instance" "db" {
  # ❌ storage_encrypted defaults to false
}

waf-sov-050.tf.azurerm.key-vault-soft-delete

Prüft: Azure Key Vault muss Soft Delete und Purge Protection aktiviert haben.

Compliant Non-Compliant
resource "azurerm_key_vault" "sovereign" {
  name                       = "kv-sovereign-prod"
  location                   = var.azure_location
  resource_group_name        = azurerm_resource_group.main.name
  sku_name                   = "premium"
  soft_delete_retention_days = 90
  purge_protection_enabled   = true  # ✅
}
resource "azurerm_key_vault" "kv" {
  name     = "kv-prod"
  sku_name = "standard"
  # ❌ purge_protection_enabled defaults to false
}

Evidenz

Typ Pflicht Beschreibung

IaC

✅ Pflicht

KMS-Key-Ressourcen mit enable_key_rotation = true und explizitem Deletion-Window.

IaC

✅ Pflicht

Verschlüsselungskonfigurationen für alle Datenressourcen (S3, RDS, EBS) mit CMK-ARN-Referenz.

Config

Optional

KMS-Key-Policy-Export mit eingeschränktem Principal-Zugriff.

Process

Optional

Key-Rotation-Zeitplan und Löschverfahren-Dokumentation.

Logs

Optional

CloudTrail/KMS-Zugriffslogs mit Key-Nutzungsmustern.