Permissions Policy für AWS CloudFront konfigurieren
Browser-APIs wie Kamera, Mikrofon und Geolocation per Response Headers Policy einschränken — mit Terraform und Console-Konfiguration.
Permissions Policy auf AWS CloudFront
Die Permissions Policy kontrolliert, welche Browser-APIs eine Website verwenden darf. Kamera, Mikrofon, Geolocation und Payment API können gezielt gesperrt werden. Permissions Policy ist mit 10 von 166 Punkten ein relevanter Faktor im Wolf-Agents Web Security Check.
CloudFront bietet keinen dedizierten Block für Permissions-Policy in der Response Headers Policy. Sie müssen den Header als Custom Header konfigurieren. Die AWS-Managed SecurityHeadersPolicy enthält keine Permissions-Policy — Sie müssen ihn immer manuell setzen.
Permissions-Policy per Terraform als Custom Header
Da CloudFront keinen dedizierten Permissions-Policy-Block bietet, setzen Sie den Header als Custom Header in der custom_headers_config. Kombinieren Sie ihn mit anderen Security Headern in derselben Policy.
# terraform/permissions-policy.tf
resource "aws_cloudfront_response_headers_policy" "security" {
name = "security-headers-full"
custom_headers_config {
items {
header = "Permissions-Policy"
value = "camera=(), microphone=(), geolocation=(), payment=(), usb=(), bluetooth=(), midi=(), magnetometer=(), gyroscope=(), accelerometer=()"
override = true
}
}
# Weitere Security Headers in derselben Policy
security_headers_config {
strict_transport_security {
access_control_max_age_sec = 31536000
include_subdomains = true
preload = true
override = true
}
}
} () = gesperrt Die Syntax camera=() sperrt die Kamera-API vollständig. Um einer bestimmten Domain Zugriff zu geben, nutzen Sie camera=(self "https://video.example.com"). Für eigene Nutzung: camera=(self).
Alternative: CloudFront Function
Wenn Sie bereits eine CloudFront Function für CSP-Nonces nutzen, können Sie die Permissions-Policy dort einbauen statt in der Response Headers Policy. Vermeiden Sie es, denselben Header an zwei Stellen zu setzen.
// CloudFront Function — Permissions-Policy (Alternative)
function handler(event) {
var response = event.response;
var headers = response.headers;
headers['permissions-policy'] = {
value: 'camera=(), microphone=(), geolocation=(), '
+ 'payment=(), usb=(), bluetooth=(), '
+ 'midi=(), magnetometer=(), gyroscope=(), '
+ 'accelerometer=()'
};
return response;
} Verifizierung
Prüfen Sie den Permissions-Policy-Header per curl. Achten Sie auf korrekte Syntax — Browser ignorieren den gesamten Header bei Syntaxfehlern, ohne eine Warnung auszugeben.
# Permissions-Policy prüfen
curl -sI https://ihre-domain.de | grep -i permissions-policy
# Erwartete Ausgabe:
permissions-policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), bluetooth=(), midi=(), magnetometer=(), gyroscope=(), accelerometer=() Häufige Fehler
Falsche Syntax: Semikolon statt Komma
Permissions-Policy verwendet Komma als Trennzeichen (camera=(), microphone=()), nicht Semikolon wie CSP. Semikolon wird ignoriert und nur die erste Direktive wird angewendet.
Header in Policy UND Function gesetzt
Wenn sowohl die Response Headers Policy als auch die CloudFront Function Permissions-Policy setzen, werden zwei Header gesendet. Browser wenden nur den letzten an — das Ergebnis ist unvorhersehbar.
Geolocation gesperrt trotz Nutzung
Wenn Ihre Anwendung die Geolocation-API nutzt (z.B. für Store-Finder), sperren Sie sie nicht. Nutzen Sie geolocation=(self) statt geolocation=().
Compliance-Relevanz
Permissions Policy unterstützt die DSGVO-Anforderung der Datenminimierung, indem Browser-APIs wie Kamera und Mikrofon standardmäßig gesperrt werden. PCI DSS 4.0 bewertet die Einschränkung von Browser-Fähigkeiten positiv. Der Wolf-Agents Web Security Check prüft Permissions-Policy auf korrekte Syntax und empfohlene Direktiven.
Wie steht Ihre Domain bei Permissions Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.