WAF++ WAF++
Back to WAF++ Homepage

WAF-SEC-130 – Data Classification & Protection by Category

Beschreibung

Alle Cloud-Datenspeicher (S3-Buckets, RDS-Instanzen, DynamoDB-Tabellen, ElastiCache-Cluster) MÜSSEN mit einem data-classification-Tag versehen sein, der die Datenschutzstufe angibt: public, internal, confidential oder restricted. Ressourcen mit Klassifizierung confidential oder restricted MÜSSEN mit kundenverwalteten KMS-Schlüsseln (CMK) verschlüsselt sein – AWS-verwaltete Standardschlüssel sind nicht ausreichend. S3-Buckets MÜSSEN Block-Public-Access konfiguriert haben (block_public_acls und block_public_policy = true). Ein organisationales Data-Classification-Register MUSS im Repository verfügbar sein.

Rationale

Ohne Datenklassifizierung werden alle Daten identisch behandelt – entweder alles maximal abgesichert (unnötig teuer und friction-intensiv) oder alle Daten mit demselben niedrigen Schutzniveau (zu wenig für sensible Daten). Klassifizierung ermöglicht proportionalen, nachweisbaren Schutz: Öffentliche Daten benötigen keine CMK-Verschlüsselung; personenbezogene oder Geschäftsgeheimnisse benötigen die stärksten Schutzmaßnahmen. Tags als Klassifizierungsmechanismus ermöglichen automatische Compliance-Prüfungen. Der data-classification-Tag ist der Startpunkt für alle datenschutzbezogenen Sicherheitsentscheidungen.

Bedrohungskontext

Risiko Beschreibung

Versehentliche Exposition sensibler Daten

Ohne Klassifizierung sind S3-Buckets mit PII oder Geschäftsgeheimnissen von öffentlich zugänglichen Buckets nicht zu unterscheiden.

Falsche Verschlüsselungsstufe

Hochsensible Daten mit AWS-Default-Keys haben schwächere Zugangskontrolle als mit CMK; der Cloud-Provider kann theoretisch zugreifen.

DSGVO-Verstoß durch fehlende Differenzierung

Art. 25 DSGVO erfordert Privacy by Design; ohne Klassifizierung ist Data Protection by Design nicht umsetzbar.

Audit-Failure durch mangelnde Nachvollziehbarkeit

Auditoren erwarten eine nachvollziehbare Zuordnung von Schutzmaßnahmen zu Datenkategorien; ohne Klassifizierung ist das nicht möglich.

Anforderung

  • Alle Datenspeicher-Ressourcen MÜSSEN einen data-classification-Tag mit einem der erlaubten Werte haben: public, internal, confidential, restricted.

  • Ressourcen mit confidential oder restricted MÜSSEN einen kms_key_id-Verweis auf einen CMK haben.

  • Alle S3-Buckets MÜSSEN block_public_acls = true und block_public_policy = true konfiguriert haben (via aws_s3_bucket_public_access_block).

  • RDS-Instanzen DÜRFEN NICHT publicly_accessible = true sein.

  • Ein Data-Classification-Register (data-classification-register.yml oder äquivalent) MUSS im Repository verfügbar und aktuell gehalten werden.

Implementierungsanleitung

  1. Klassifizierungsschema definieren: Vier Stufen (public/internal/confidential/restricted) mit konkreten Beispieldaten und Schutzanforderungen pro Stufe dokumentieren.

  2. Data-Classification-Register erstellen: YAML-Datei im Repository mit Mapping: Datentyp → Klassifizierung → Storage-Ressource → verantwortliches Team.

  3. Tags in Terraform setzen: data-classification-Tag zu allen aws_s3_bucket, aws_db_instance, aws_dynamodb_table, aws_elasticache_cluster-Ressourcen.

  4. S3 Block Public Access: aws_s3_bucket_public_access_block-Ressource für alle Buckets mit allen vier Flags auf true.

  5. RDS public access deaktivieren: publicly_accessible = false in allen aws_db_instance-Ressourcen.

  6. CMK für confidential/restricted: In Terraform-Variable-Validation oder CI-Check prüfen, dass Ressourcen mit diesen Tags einen CMK-ARN haben.

  7. Amazon Macie aktivieren (optional): Automatisierte PII-Discovery für S3-Buckets via aws_macie2_account.

Reifegrad-Abstufung

Level Bezeichnung Kriterien

1

Keine Datenklassifizierung

Keine Klassifizierungsrichtlinie; alle Daten gleich behandelt; keine Data-Classification-Tags; öffentliche S3-Buckets ohne Kontrolle.

2

Klassifizierungsrichtlinie dokumentiert

Klassifizierungsschema dokumentiert; manuelle Umsetzung; keine technische Durchsetzung.

3

Tags erzwungen; grundlegender Schutz implementiert

data-classification-Tags auf allen Datenspeichern CI-seitig erzwungen; S3 Block Public Access überall aktiv; RDS nicht öffentlich.

4

Automatisierte Compliance nach Klassifizierung

CMK-Prüfung für confidential/restricted automatisiert; Data-Classification-Register gepflegt; Amazon Macie aktiv.

5

Dynamisches DLP und DSGVO-Art.-30-Dokumentation*

Echtzeitbasierte DLP-Erkennung; automatisch generiertes Art.-30-Verarbeitungsverzeichnis aus Data-Classification-Register; vollständige Datenherkunft.

Terraform Checks

waf-sec-130.tf.aws.s3-block-public-access

Prüft: Alle S3-Buckets müssen Block-Public-Access aktiviert haben.

Compliant Non-Compliant
resource "aws_s3_bucket" "data" {
  bucket = "myapp-prod-data"
  tags = {
    "data-classification" = "confidential"
    owner                 = "platform-team"
    environment           = "production"
  }
}

resource "aws_s3_bucket_public_access_block" "data" {
  bucket                  = aws_s3_bucket.data.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}
resource "aws_s3_bucket" "data" {
  bucket = "myapp-prod-data"
  # data-classification Tag fehlt – WAF-SEC-130 Violation
}
# aws_s3_bucket_public_access_block fehlt
# WAF-SEC-130 Violation: kein Public-Access-Block

Remediation: aws_s3_bucket_public_access_block-Ressource mit allen vier Flags auf true für jeden S3-Bucket erstellen. Alle Datenspeicher-Ressourcen mit data-classification-Tag versehen.


waf-sec-130.tf.aws.rds-not-publicly-accessible

Prüft: RDS-Instanzen dürfen nicht öffentlich zugänglich sein.

Compliant Non-Compliant
resource "aws_db_instance" "app" {
  identifier         = "app-prod-db"
  engine             = "postgres"
  instance_class     = "db.t3.medium"
  allocated_storage  = 100
  publicly_accessible = false
  tags = {
    "data-classification" = "confidential"
  }
}
resource "aws_db_instance" "app" {
  identifier          = "app-prod-db"
  engine              = "postgres"
  instance_class      = "db.t3.medium"
  allocated_storage   = 100
  publicly_accessible = true
  # WAF-SEC-130 Violation: Datenbank öffentlich zugänglich
}

Remediation: publicly_accessible = false zu allen aws_db_instance- und aws_rds_cluster-Ressourcen setzen. Zugriff aus Anwendungen erfolgt über private VPC-Netzwerke.

Evidenz

Typ Pflicht Beschreibung

Governance

✅ Pflicht

Data-Classification-Register mit Zuordnung Datentyp → Klassifizierung → Storage-Ressource.

IaC

✅ Pflicht

Terraform-Konfiguration aller Datenspeicher mit data-classification-Tag und aws_s3_bucket_public_access_block.

Config

Optional

Amazon Macie Aktivierungs-Screenshot und aktueller Findings-Bericht für S3-Buckets.

Process

Optional

Jährlicher Data-Classification-Review mit Nachweis, dass Register aktuell ist.

Regulatorisches Mapping

Framework Controls

ISO 27001:2022

A.5.15 – Threat intelligence; A.5.16 – Threat classification; A.5.24 – Information security incident management; A.5.25 – Assessment and decision on information security events; A.5.26 – Response to information security incidents; A.5.27 – Learning from information security incidents; A.5.28 – Collection of evidence; A.8.16 – Technology use identification and monitoring; A.8.21 – Telecommunications and network security

ISO 27017

CLD.5.1 – Information security in cloud services; CLD.5.2 – Access control in cloud services

ISO 27018

A.2 – Purpose legitimacy and PII protection; A.10 – Confidentiality and security of PII

GDPR

Art. 5(1)(c) – Data minimisation; Art. 5(1)(f) – Integrity and confidentiality; Art. 9 – Special categories of personal data; Art. 25 – Data protection by design and by default; Art. 32 – Security of processing

BSI C5:2020

IDM-01 – Identity and access management policy; IDM-02 – Role management; IDM-03 – User lifecycle management; COM-01 – Network and service security; COM-02 – Cloud monitoring

EUCS (ENISA)

IAM-01 – Identity and access management; IAM-02 – Access rights management; IAM-03 – Privileged access management

NIST SP 800-53

AC-1 – Policy and procedures; AC-2 – Account management; AC-3 – Access enforcement; AC-6 – Least privilege; IA-2 – Identification and authentication; SI-4 – Information system monitoring

FedRAMP

AC-1, AC-2, AC-3, AC-6, IA-2 (Moderate/High baseline)

HIPAA

§ 164.308(a)(4) – Access management; § 164.312(a) – Access control; § 164.312(d) – Information system activity review

PCI DSS v4.0

Req 7 – Restrict access to cardholder data; Req 8 – Identify and authenticate access; Req 8.3 – Non-service accounts

SOC 2 Type II

CC6.1 – Logical access security software; CC6.2 – Logical access security management; CC6.6 – Secure configuration

CSRD

ESRS E1 – Climate change; ESRS G1 – Governance

NIST CSF 2.0

GV.AC – Identity management and access control; DE.CM – Configuration management

CIS Controls v8

CIS 4 – Secure Configuration; CIS 4.4 – Access control; CIS 4.5 – Least privilege

TISAX

Information security – Access rights management

ANSSI SecNumCloud

Domain – Identity and access management; Domain – Security monitoring

BIO

BIO – Identificatie en authenticatie; BIO – Toegangsbeheer

ENS High

org.3 – Políticas de acceso; op.exp.5 – Monitorización de la configuración

UK NCSC CAF

B1 – Access control; B2 – Secure configuration

CMMC 2.0

AC.L2-3.1.1 – Access control policy; AC.L2-3.5.1 – Access enforcement

IRAP

ISM – Identity and access management; ISM – Access control

CCCS PBMM

AC-6 – Least privilege; AC-7 – Unsuccessful logon attempts

MAS TRM

Ch.4 – Identity and access management; Ch.8 – Security monitoring

ISMAP

Access control and identity management

FISC

Operational measures – Access control

Verwandte Controls