Einschränken der geografischen Verteilung von Inhalt - Amazon CloudFront

Einschränken der geografischen Verteilung von Inhalt

Mithilfe der geografischen Einschränkung oder Geoblockierung können Sie verhindern, dass Benutzer aus bestimmten geografischen Regionen auf Inhalte zugreifen, die Sie über eine CloudFront-Verteilung verteilen. Es gibt zwei Möglichkeiten zum Verwenden der geografischen Einschränkung:

  • Verwenden Sie die geografische Einschränkungsfunktion von CloudFront. Verwenden Sie diese Option, um den Zugriff auf alle mit einer Verteilung verknüpften Dateien zu beschränken und um den Zugriff auf der Länderebene einzuschränken.

  • Verwenden Sie den Geolokalisierungsdienst eines Drittanbieters. Verwenden Sie diese Option, um den Zugriff auf einen Teil der mit einer Verteilung verknüpften Dateien zu beschränken oder um den Zugriff auf eine feinere Granularität als die Länderebene einzuschränken.

Verwenden der geografischen Einschränkungsfunktion von CloudFront

Wenn ein Benutzer Ihre Inhalte anfordert, werden diese angeforderten Inhalte normalerweise ohne Berücksichtigung des Standorts des Benutzers von CloudFront bereitgestellt. Um zu verhindern, dass Benutzer in bestimmten Ländern auf Ihre Inhalte zugreifen können, verwenden Sie die geografische Einschränkungsfunktion von CloudFront, um einen der folgenden Schritte auszuführen:

  • Gewähren Sie Benutzern den Zugriff auf Ihre Inhalte nur, wenn sie sich in einem der zugelassenen Länder auf Ihrer Genehmigungsliste befinden.

  • Verhindern Sie, dass Benutzer auf Ihre Inhalte zugreifen, wenn sie sich in einem der gesperrten Länder auf Ihrer Blockliste befinden.

Wenn beispielsweise eine Anforderung aus einem Land stammt, in dem Sie keine Autorisierung für die Verteilung Ihrer Inhalte haben, können Sie die Anforderung mithilfe der geografischen Einschränkungsfunktion von CloudFront blockieren.

Anmerkung

CloudFront ermittelt den Standort der Benutzer mithilfe einer Datenbank eines Drittanbieters. Die Genauigkeit der Zuweisung zwischen IP-Adressen und Ländern variiert je nach Region. Gemäß kürzlich erfolgten Tests beträgt die allgemeine Genauigkeit 99,8 %. Wenn CloudFront den Standort eines Benutzers nicht ermitteln kann, stellt CloudFront den Inhalt bereit, den der Benutzer angefordert hat.

So funktioniert die geografische Einschränkung:

  1. Nehmen wir an, Sie haben nur Rechte zum Verteilen Ihrer Inhalte in Liechtenstein. Sie aktualisieren Ihre CloudFront-Verteilung und fügen eine Genehmigungsliste hinzu, die nur Liechtenstein enthält. (Alternativ können Sie eine Blockliste mit allen Ländern außer Liechtenstein hinzufügen.)

  2. Ein Benutzer in Monaco fordert Ihre Inhalte an und DNS leitet die Anforderung an einen CloudFront-Edge-Standort in Mailand, Italien, weiter.

  3. Der Edge-Standort in Mailand sucht nach Ihrer Verteilung und ermittelt, dass der Benutzer in Monaco nicht auf Ihre Inhalte zugreifen darf.

  4. CloudFront gibt einen HTTP-Statuscode 403 (Forbidden) an den Benutzer zurück.

Sie können CloudFront optional so konfigurieren, dass eine benutzerdefinierte Fehlermeldung an den Benutzer zurückgegeben wird. Außerdem können Sie angeben, wie lange CloudFront die Fehlerantwort für die angeforderte Datei zwischenspeichern soll. Der Standardwert liegt bei 10 Sekunden. Weitere Informationen finden Sie unter Erstellen einer benutzerdefinierten Fehlerseite für bestimmte HTTP-Statuscodes.

Geografische Einschränkungen gelten für eine gesamte Verteilung. Wenn Sie eine Einschränkung auf einen Teil Ihrer Inhalte und eine andere Einschränkung (oder keine Einschränkung) auf einen anderen Teil Ihrer Inhalte anwenden möchten, müssen Sie entweder separate CloudFront-Verteilungen erstellen oder Geolokalisierungsdienste von Drittanbietern verwenden.

Wenn Sie die CloudFront-Standardprotokollierung (Zugriffsprotokollierung) aktivieren, können Sie die von CloudFront abgelehnten Anforderungen identifizieren, indem Sie nach den Protokolleinträgen suchen, für die der Wert von sc-status (der HTTP-Statuscode) 403 lautet. Wenn Sie nur die Standardprotokolle verwenden, können Sie eine Anforderung, die von CloudFront auf der Grundlage des Standorts des Benutzers zurückgewiesen wurde, jedoch nicht von einer Anforderung unterscheiden, die von CloudFront zurückgewiesen wurde, weil der Benutzer aus einem anderen Grund nicht für den Zugriff auf die Datei berechtigt war. Wenn Sie über den Geolokalisierungsdienst eines Drittanbieters verfügen, wie beispielsweise Digital Element oder MaxMind, können Sie den Standort von Anfragen auf der Grundlage der IP-Adresse in der Spalte c-ip (Client-IP) in den Zugriffsprotokollen bestimmen. Weitere Informationen zu CloudFront-Standardprotokollen finden Sie unter Konfigurieren und Verwenden von Standardprotokollen (Zugriffsprotokolle).

Im folgenden Verfahren wird beschrieben, wie Sie die CloudFront-Konsole verwenden, um geografische Einschränkungen zu einer vorhandenen Verteilung hinzuzufügen. Informationen zur Verwendung der Konsole zum Erstellen von Verteilungen finden Sie unter Erstellen einer Verteilung.

So fügen Sie eine geografische Einschränkung zu Ihrer CloudFront-Webverteilung (Konsole) hinzu
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die CloudFront-Konsole unter https://console.aws.amazon.com/cloudfront/v3/home.

  2. Wählen Sie die zu aktualisierende Verteilung aus.

  3. Wählen Sie Geographic restrictions (Geografische Einschränkung) aus.

  4. Wählen Sie Edit (Bearbeiten) aus.

  5. Wählen Sie Allow list (Genehmigungsliste) aus, um eine Liste der zulässigen Länder zu erstellen, oder Block list (Blockliste), um eine Liste der gesperrten Länder zu erstellen.

  6. Fügen Sie die gewünschten Länder zur Liste hinzu und wählen Sie dann Save changes (Änderungen speichern) aus.

Verwenden eines Geolokalisierungsservices eines Drittanbieters

Mit der CloudFront-Funktion zur geografischen Einschränkung können Sie die Verteilung Ihrer Inhalte auf Länderebene für alle Dateien kontrollieren, die Sie mit einer bestimmten Webverteilung verteilen. Wenn in einem Anwendungsfall von geografischen Einschränkungen die Einschränkungen nicht an Ländergrenzen gebunden sind oder wenn Sie den Zugriff auf nur einige der über eine bestimmte Verteilung bereitgestellten Dateien beschränken möchten, können Sie CloudFront mit dem Geolokalisierungsdienst eines Drittanbieters kombinieren. Dies ermöglicht Ihnen die Kontrolle des Zugriffs auf Ihre Inhalte nicht nur auf der Grundlage des Landes, sondern auch auf der Grundlage der Stadt, der Postleitzahl oder sogar der Längen- und Breitengrade.

Wenn Sie einen Geolokalisierungsdienst eines Drittanbieters verwenden, empfehlen wir die Verwendung von CloudFront-signierten URLs, für die Sie ein Ablaufdatum und eine Ablaufzeit für die Gültigkeit der URL angeben können. Darüber hinaus empfehlen wir, einen Amazon-S3-Bucket als Ursprung zu verwenden, da Sie dann mithilfe einer CloudFront-Ursprungszugriffssteuerung verhindern können, dass Benutzer direkt vom Ursprung auf Ihre Inhalte zugreifen. Weitere Informationen zu signierten URLs sowie zur Ursprungszugriffssteuerung finden Sie unter Bereitstellen privater Inhalte mit signierten URLs und signierten Cookies.

In den folgenden Schritten wird erläutert, wie Sie den Zugriff auf Ihre Dateien mithilfe eines Geolokalisierungsservices eines Drittanbieters kontrollieren können.

So beschränken Sie den Zugriff auf Dateien in einer CloudFront-Verteilung mit einem Geolokalisierungsservice eines Drittanbieters
  1. Legen Sie ein Konto bei einem Geolokalisierungsdienst an.

  2. Laden Sie Ihre Inhalte in einen Amazon-S3-Bucket hoch.

  3. Konfigurieren Sie Amazon CloudFront und Amazon S3 für die Bereitstellung privater Inhalte. Weitere Informationen finden Sie unter Bereitstellen privater Inhalte mit signierten URLs und signierten Cookies.

  4. Schreiben Sie Ihre Webanwendung so, dass folgende Aufgaben ausgeführt werden:

    • Senden der IP-Adresse für jede Benutzeranfrage an den Geolokalisierungsdienst.

    • Evaluieren des Rückgabewerts vom Geolokalisierungsdienst, um zu ermitteln, ob sich der Benutzer an einem Standort befindet, an den CloudFront Ihre Inhalte verteilen soll.

    • Wenn Sie Ihre Inhalte an den Standort des Benutzers verteilen möchten, generieren Sie eine signierte URL für Ihren CloudFront-Inhalt. Wenn Sie keinen Inhalt an diesen Speicherort verteilen möchten, geben Sie dem Benutzer den HTTP-Statuscode 403 (Forbidden) zurück. Alternativ können Sie CloudFront so konfigurieren, dass eine benutzerdefinierte Fehlermeldung zurückgegeben wird. Weitere Informationen finden Sie unter Erstellen einer benutzerdefinierten Fehlerseite für bestimmte HTTP-Statuscodes.

    Weitere Informationen finden Sie in der Dokumentation für den Geolokationsdienst, den Sie verwenden.

Sie können die IP-Adressen der Besucher Ihrer Website mithilfe einer Webserver-Variablen abrufen. Beachten Sie folgende Einschränkungen:

  • Wenn Ihr Webserver nicht über einen Load Balancer mit dem Internet verbunden ist, können Sie eine Webserver-Variable verwenden, um die IP-Remote-Adresse abzurufen. Diese IP-Adresse ist jedoch nicht immer die IP-Adresse des Benutzers. Es kann sich dabei auch um die IP-Adresse eines Proxy-Servers handeln, je nachdem, wie der Benutzer mit dem Internet verbunden ist.

  • Wenn Ihr Webserver über einen Load Balancer mit dem Internet verbunden ist, enthält eine Webserver-Variable möglicherweise die IP-Adresse des Load Balancers, nicht die IP-Adresse des Benutzers. Bei dieser Konfiguration empfehlen wir, die letzte IP-Adresse im X-Forwarded-For-HTTP-Header zu verwenden. Dieser Header enthält in der Regel mehr als eine IP-Adresse, von denen die meisten für Proxys oder Load Balancer gelten. Die letzte IP-Adresse in der Liste wird am wahrscheinlichsten mit dem geografischen Standort des Benutzers verknüpft.

Wenn Ihr Webserver nicht mit einem Load Balancer verbunden ist, empfehlen wir, anstelle des X-Forwarded-For-Headers Webserver-Variablen zu verwenden, um Spoofing von IP-Adressen zu vermeiden.