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 CloudFront-Geolokalisationseinschränkungsfunktion. 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 von CloudFront-Geolokalisationseinschränkung

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, können Sie die Funktion der geografischen Einschränkung von CloudFront verwenden, um einen der folgenden Schritte auszuführen:

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

  • Verhindern Sie, dass Benutzer auf Ihre Inhalte zugreifen, wenn sie sich in einem der Länder auf einer Sperrliste mit nicht genehmigten Ländern befinden.

Wenn beispielsweise eine Anforderung aus einem Land stammt, in dem Sie Ihre Inhalte aus urheberrechtlichen Gründen nicht verteilen dürfen, können Sie die Anforderung mithilfe der geografischen Einschränkung von CloudFront blockieren.

Anmerkung

CloudFront ermittelt den Standort der Benutzer mithilfe einer GeoIP-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 Whitelist hinzu, die nur Liechtenstein enthält. (Alternativ können Sie eine Sperrliste mit allen Ländern außer Liechtenstein hinzufügen.)

  2. Ein Benutzer in Monaco fordert Ihre Inhalte an und DNS leitet die Anforderung an den 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.

Die geografische Einschränkung gilt 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-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 Zugriffsprotokolle 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 befugt 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-Zugriffsprotokollen finden Sie unter Konfigurieren und Verwenden von Standardprotokollen (Zugriffsprotokolle).

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

So verwenden Sie eine geografische Einschränkung für Ihre CloudFront-Web-Verteilung (Konsole):

  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die CloudFront-Konsole unter https://console.aws.amazon.com/cloudfront/.

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

  3. Wählen Sie im Bereich Distribution Settings die Registerkarte Restrictions aus.

  4. Wählen Sie Edit aus.

  5. Geben Sie die entsprechenden Werte ein. Weitere Informationen finden Sie unter Einschränkungen.

  6. Wählen Sie Yes, Edit aus.

Verwenden eines Geolokalisierungsdienstes eines Drittanbieters

Mit der Funktion der geografischen Einschränkung von CloudFront können Sie die Verteilung Ihrer Inhalte auf der Länderebene für alle Dateien kontrollieren, die Sie mit einer bestimmten Web-Verteilung verteilen. Bei bestehenden geografischen Einschränkungen bezüglich des Orts, an dem Ihre Inhalte verteilt werden können, die nicht an Ländergrenzen gebunden sind, oder wenn Sie den Zugriff auf nur einige der über CloudFront verteilten Daten 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 von CloudFront-Ursprungszugriffsidentitäten verhindern können, dass Benutzer direkt vom Ursprung auf Ihre Inhalte zugreifen. Weitere Informationen zu signierten URLs und Ursprungszugriffsidentitäten 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 anhand des geografischen Standorts:

  1. Legen Sie ein Konto bei einem Geolokalisierungsdienst an.

  2. Laden Sie Ihre Inhalte in einen Amazon Simple Storage Service (S3) -Bucket hoch. Weitere Informationen finden Sie in der Amazon S3-Dokumentation.

  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:

    1. Senden der IP-Adresse für alle Benutzeranfragen an den Geolokalisierungsdienst.

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

    3. 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 ich dabei auch um die IP-Adresse eines Proxy-Servers sein, 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.