Erweiterte Header für AWS CloudFront konfigurieren

Origin-Agent-Cluster, X-DNS-Prefetch-Control und Cross-Origin-Isolation auf CloudFront einrichten — per Response Headers Policy, CloudFront Function und Terraform.

AWS CloudFront · Schritt für Schritt

Erweiterte Header auf AWS CloudFront

Erweiterte Header umfassen zusätzliche Defense-in-Depth-Maßnahmen: Origin-Agent-Cluster für Prozess-Isolation, X-DNS-Prefetch-Control für Privacy, X-Permitted-Cross-Domain-Policies gegen Flash/PDF-Angriffe und die Cross-Origin-Isolation-Header (COOP, COEP, CORP). Mit 4 von 166 Punkten im Wolf-Agents Web Security Check bewertet.

Auf AWS CloudFront konfigurieren Sie erweiterte Header über eine Response Headers Policy mit Custom Headers. Diese Policy wird der CloudFront Distribution zugewiesen und setzt die Header auf alle Responses. Für dynamische Logik (z.B. unterschiedliche Header pro Route) nutzen Sie eine CloudFront Function.

Wichtig: Die AWS-Managed SecurityHeadersPolicy enthält X-Content-Type-Options, X-Frame-Options und andere Basis-Header, aber keine erweiterten Header wie Origin-Agent-Cluster. Diese müssen manuell als Custom Headers konfiguriert werden.

1 Implementierung

Erweiterte Header auf CloudFront konfigurieren

Erstellen Sie eine Response Headers Policy mit Custom Headers per Terraform (empfohlen für Infrastructure as Code) oder über die AWS CLI. Alternativ setzt eine CloudFront Function die Header dynamisch im Viewer-Response Event.

terraform/advanced-headers.tf Terraform
# terraform/advanced-headers.tf
resource "aws_cloudfront_response_headers_policy" "advanced" {
  name    = "advanced-security-headers"
  comment = "Erweiterte Security Headers"

  custom_headers_config {
    # Prozess-Isolation (Spectre-Schutz)
    items {
      header   = "Origin-Agent-Cluster"
      value    = "?1"
      override = true
    }

    # DNS-Prefetch deaktivieren (Privacy)
    items {
      header   = "X-DNS-Prefetch-Control"
      value    = "off"
      override = true
    }

    # Cross-Domain-Policies blockieren
    items {
      header   = "X-Permitted-Cross-Domain-Policies"
      value    = "none"
      override = true
    }

    # Cross-Origin Opener Policy
    items {
      header   = "Cross-Origin-Opener-Policy"
      value    = "same-origin"
      override = true
    }

    # Cross-Origin Resource Policy
    items {
      header   = "Cross-Origin-Resource-Policy"
      value    = "same-origin"
      override = true
    }
  }
}

# Policy an Distribution anhängen
resource "aws_cloudfront_distribution" "main" {
  default_cache_behavior {
    response_headers_policy_id = aws_cloudfront_response_headers_policy.advanced.id
    # ... weitere Konfiguration
  }
}
functions/advanced-headers.js CloudFront Function
// CloudFront Function — Erweiterte Header dynamisch
// Event: Viewer Response
function handler(event) {
  var response = event.response;
  var headers = response.headers;

  // Erweiterte Security Headers setzen
  headers['origin-agent-cluster'] = {
    value: '?1'
  };
  headers['x-dns-prefetch-control'] = {
    value: 'off'
  };
  headers['x-permitted-cross-domain-policies'] = {
    value: 'none'
  };
  headers['cross-origin-opener-policy'] = {
    value: 'same-origin'
  };
  headers['cross-origin-resource-policy'] = {
    value: 'same-origin'
  };

  return response;
}
Policy vs. CloudFront Function

Die Response Headers Policy ist einfacher und performanter — sie wird von CloudFront direkt angewendet ohne Code-Ausführung. Eine CloudFront Function bietet bedingte Logik, z.B. unterschiedliche Header für /api/** und Frontend-Routen. Beide Ansätze können nicht gleichzeitig denselben Header setzen.

2 Verifizierung

Header verifizieren

Prüfen Sie die erweiterten Header per curl. Nach Änderungen an der Response Headers Policy erstellen Sie eine CloudFront-Invalidierung, um gecachte Responses ohne die neuen Header zu entfernen. Der Wolf-Agents Web Security Check analysiert alle Header-Kategorien.

Terminal Verifizieren
# Erweiterte Header prüfen
curl -sI https://ihre-domain.de | grep -iE "origin-agent|x-dns|x-permitted|cross-origin"

# Erwartete Ausgabe:
origin-agent-cluster: ?1
x-dns-prefetch-control: off
x-permitted-cross-domain-policies: none
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin

# CloudFront-Invalidierung nach Policy-Änderung
aws cloudfront create-invalidation \
  --distribution-id E1234567890 \
  --paths "/*"
AWS CLI Alternative
# AWS CLI — Response Headers Policy erstellen
aws cloudfront create-response-headers-policy \
  --response-headers-policy-config {
    "Name": "advanced-security-headers",
    "CustomHeadersConfig": {
      "Quantity": 5,
      "Items": [
        { "Header": "Origin-Agent-Cluster",
          "Value": "?1", "Override": true },
        { "Header": "X-DNS-Prefetch-Control",
          "Value": "off", "Override": true },
        { "Header": "X-Permitted-Cross-Domain-Policies",
          "Value": "none", "Override": true },
        { "Header": "Cross-Origin-Opener-Policy",
          "Value": "same-origin", "Override": true },
        { "Header": "Cross-Origin-Resource-Policy",
          "Value": "same-origin", "Override": true }
      ]
    }
  }

Häufige Fehler

COOP bricht OAuth-Popups

Cross-Origin-Opener-Policy: same-origin blockiert window.opener-Zugriff von OAuth-Popups (Google, GitHub Login). Verwenden Sie same-origin-allow-popups wenn Ihre Anwendung OAuth per Popup nutzt.

COEP blockiert externe Ressourcen

Cross-Origin-Embedder-Policy: require-corp blockiert Google Fonts, CDN-Assets und Analytics-Scripts, die kein CORS oder CORP setzen. Testen Sie gründlich oder nutzen Sie credentialless als Alternative.

Header in Policy UND Function gesetzt

Wenn sowohl die Response Headers Policy als auch eine CloudFront Function denselben Header setzen, wird der Wert der Policy verwendet (bei override: true). Setzen Sie jeden Header nur an einer Stelle.

Custom Header Limit überschritten

CloudFront erlaubt maximal 10 Custom Headers pro Response Headers Policy. Wenn Sie bereits CSP und andere Header als Custom Header konfiguriert haben, kann das Limit erreicht sein. Konsolidieren Sie Header oder nutzen Sie eine CloudFront Function.

Compliance-Relevanz

Erweiterte Header sind Defense-in-Depth-Maßnahmen, die zusammen mit den Kern-Headern eine umfassende Sicherheitsarchitektur bilden. Origin-Agent-Cluster schützt gegen Spectre-ähnliche Seitenkanalangriffe durch Prozess-Isolation. X-DNS-Prefetch-Control verhindert ungewollte DNS-Anfragen und schützt die Privacy der Nutzer — relevant für DSGVO-Compliance. Cross-Origin-Isolation (COOP + COEP) ist Voraussetzung für leistungsstarke APIs wie SharedArrayBuffer und High-Resolution-Timer. Der Wolf-Agents Web Security Check bewertet alle Header-Kategorien und liefert eine Gesamtnote von A+ bis F.

Wie steht Ihre Domain bei Erweiterte Header?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.