Geoblocking
Übersicht
Geoblocking-Richtlinien werden in Webanwendungen aus verschiedenen Gründen eingeführt, z. B. um die Vorschriften in Bezug auf gesperrte Länder einzuhalten oder um Videostreaming in Ländern zu blockieren, in denen die Webanwendung keine Streaming-Rechte hat.
Häufige Anwendungsfälle
Geoblocking kann mithilfe der nativen geografischen Einschränkungen von CloudFront, mithilfe von Edge-Funktionen oder mithilfe von AWS WAF implementiert werden. Jede Methode bietet eine unterschiedliche Matching-Granularität, anpassbare Logik und ein anderes Preisniveau. Die Methoden können auch kombiniert werden, da bekannt ist, dass CloudFront zuerst seine geografische Einschränkungsregel auswertet, dann AWS WAF seine Geo-Matching-Regeln auswertet und schließlich Edge-Funktionen ausgeführt werden, um die Geoblocking-Logik in ihrem Code auszuwerten. Beachten Sie, dass CloudFront und AWS WAF den Standort Ihrer Benutzer mithilfe einer Drittanbieter-Datenbank ermitteln. Die Genauigkeit der Zuordnung zwischen IP-Adressen und Ländern variiert je nach Region.
Einfache und globale geografische Einschränkungen in CloudFront
Verwenden Sie geografische Einschränkungen von CloudFront, um Länder auf Verteilungsebene ohne zusätzliche Gebühren einzuschränken. Sie können eine bestimmte Gruppe von Ländern zulassen oder blockieren, was auf alle Anfragen angewendet wird, die von Ihrer CloudFront-Distribution empfangen werden. Betrachter, die durch die konfigurierten geografischen Einschränkungen blockiert werden, erhalten von CloudFront die Antwort 403 Forbidden. Sie können die benutzerdefinierten Fehlerseiten von CloudFront verwenden, um eine benutzerfreundliche Fehlerseite bereitzustellen.
Erweiterte Geoblocking-Logik mit CloudFront-Funktionen
Verwenden Sie CloudFront-Funktionen, die beim Viewer-Anforderungsereignis konfiguriert wurden, um die erweiterte Geoblocking-Logik mithilfe von Javascript zu implementieren. CloudFront-Funktionen können granular mit einem bestimmten CloudFront-Cache-Verhalten verwendet werden (z. B. /api/ *-Pfade). Die Logik kann im Code detaillierter sein und mit anderer Zugriffskontrolllogik wie Autorisierung kombiniert werden. Um geobasierte Logik in CloudFront-Funktionen zu implementieren, müssen Sie zulassen, dass die erforderlichen CloudFront-Header (z. B. CloudFront-Viewer-Country oder CloudFront-Viewer-Country-Region) in einer ursprünglichen Anforderungsrichtlinie aufgelistet werden, die an dasselbe CloudFront-Cache-Verhalten angehängt ist, dem die Funktion zugeordnet ist.
Das folgende Beispiel für die CloudFront-Funktion blockiert Zuschauer aus den Regionen Donezk (14) oder Luhansk (9) in der Ukraine.
function handler(event) {
var request = event.request;
var country = request.headers['cloudfront-viewer-country'];
var region = request.headers['cloudfront-viewer-country-region'];
if (country && country.value === 'UA' && region && (region.value === '9' || region.value === '14')) {
return {
statusCode: 403,
statusDescription: 'Forbidden',
};
}
return request;
}