Schützen von Azure Content Delivery Network-Assets mit Tokenauthentifizierung

Wichtig

Dies ist ein exklusives Feature von Azure CDN Premium von Edgio. Verwenden Sie zum Konfigurieren von Regeln für Azure CDN von Microsoft die Standard-Regel-Engine. Für Azure CDN von Akamai sind die erweiterten Regeln nicht verfügbar. Einen vollständigen Vergleich der CDN-Features finden Sie unter Azure CDN-Produktfeatures.

Übersicht

Die Token-Authentifizierung ist ein Mechanismus, mit dem Sie verhindern können, dass das Azure Content Delivery Network Assets an nicht autorisierte Clients ausliefert. Die Tokenauthentifizierung wird normalerweise genutzt, um das Hotlinking von Inhalten zu verhindern. Dabei verwendet eine andere Website (z.B. ein Diskussionsforum) Ihre Assets ohne Erlaubnis. Hotlinking kann Ihre Kosten für die Inhaltsbereitstellung beeinflussen. Wenn Sie die Tokenauthentifizierung im Netzwerk für die Inhaltsübermittlung aktivieren, werden Anforderungen vom Netzwerk-Edgeserver für die Inhaltsübermittlung authentifiziert, bevor das Inhaltsübermittlungs-Netzwerk den Inhalt bereitstellt.

Funktionsweise

Bei der Tokenauthentifizierung wird überprüft, ob Anforderungen von einer vertrauenswürdigen Website generiert wurden. Dazu müssen die Anforderungen einen Tokenwert mit codierten Informationen zur anfordernden Person enthalten. Inhalte werden der anfordernden Person nur bereitgestellt, wenn die codierten Informationen die erforderlichen Voraussetzungen erfüllen. Andernfalls werden die Anforderungen abgelehnt. Sie können die Anforderungen einrichten, indem Sie einen oder mehrere der folgenden Parameter verwenden:

  • Land/Region: Lassen Sie Anforderungen zu, die aus den Ländern/Regionen stammen, die durch den Länder-/Regionscode angegeben sind, oder verweigern Sie solche Anforderungen.
  • URL: Lassen Sie nur Anforderungen zu, die der angegebenen Ressource oder dem Pfad entsprechen.
  • Host: Lassen Sie Anforderungen zu, die die im Anforderungsheader angegebenen Hosts verwenden, oder verweigern Sie solche Anforderungen.
  • Verweiser: Lassen Sie Anforderungen vom angegebenen Verweiser zu, oder verweigern Sie solche Anforderungen.
  • IP-Adresse: Lassen Sie nur Anforderungen zu, die von einer bestimmten IP-Adresse oder aus einem bestimmten IP-Subnetz stammen.
  • Protokoll: Lassen Sie Anforderungen basierend auf dem Protokoll zu, das zum Anfordern des Inhalts verwendet wird, oder verweigern Sie solche Anforderungen.
  • Ablaufzeit: Weisen Sie einen Datums- und Zeitbereich zu, um sicherzustellen, dass ein Link nur für eine begrenzte Zeit gültig bleibt.

Weitere Informationen finden Sie in den ausführlichen Konfigurationsbeispielen für jeden Parameter unter Einrichten der Tokenauthentifizierung.

Wichtig

Wenn die Tokenberechtigung für einen beliebigen Pfad für dieses Konto aktiviert ist, ist der Standardcachemodus der einzige Modus, der für die Zwischenspeicherung von Abfragezeichenfolgen verwendet werden kann. Weitere Informationen finden Sie unter Steuern des Zwischenspeicherungsverhaltens des Azure Content Delivery Network mit Abfragezeichenfolgen.

Referenzarchitektur

Das folgende Workflow-Diagramm beschreibt, wie das Content Delivery Network die Token-Authentifizierung verwendet, um mit Ihrer Web-App zu arbeiten.

Screenshot des Authentifizierungsworkflows des Inhaltsübermittlungs-Netzwerks.

Tokenüberprüfungslogik für den Netzwerkendpunkt für die Inhaltsübermittlung

Das folgende Flussdiagramm beschreibt, wie das Azure Content Delivery Network eine Clientanforderung überprüft, wenn die Tokenauthentifizierung auf dem Endpunkt für die Inhaltsübermittlung konfiguriert ist.

Screenshot der Überprüfungslogik für das Netzwerktoken für die Inhaltsübermittlung.

Einrichten der Tokenauthentifizierung

  1. Navigieren Sie im Azure-Portal zu Ihrem Content Delivery Network-Profil und wählen Sie Verwalten, um das zusätzliche Portal zu starten.

    Screenshot der Schaltfläche zum Verwalten des Inhaltsübermittlungs-Netzwerks.

  2. Zeigen Sie mit der Maus auf HTTP Large, und klicken Sie im Flyout dann auf Token Auth. Sie können dann den Verschlüsselungsschlüssel und Verschlüsselungsparameter wie folgt einrichten:

    1. Erstellen Sie einen oder mehrere Verschlüsselungsschlüssel. Bei einem Verschlüsselungsschlüssel muss die Groß-/Kleinschreibung beachtet werden, und er kann eine beliebige Kombination aus alphanumerischen Zeichen enthalten. Alle anderen Arten von Zeichen, einschließlich Leerzeichen, sind unzulässig. Die maximale Länge beträgt 250 Zeichen. Wenn Sie sicherstellen möchten, dass Ihre Verschlüsselungsschlüssel nach dem Zufallsprinzip generiert werden, sollten Sie sie mit dem OpenSSL-Tool erstellen.

      Das OpenSSL-Tool hat die folgende Syntax:

      rand -hex <key length>

      Beispiel:

      OpenSSL> rand -hex 32

      Erstellen Sie sowohl einen Primär- als auch einen Sicherungsschlüssel, um Downtime zu vermeiden. Ein Sicherungsschlüssel ermöglicht während der Aktualisierung des Primärschlüssels unterbrechungsfreien Zugriff auf Ihre Inhalte.

    2. Geben Sie einen eindeutigen Verschlüsselungsschlüssel in das Feld Primärschlüssel ein, und geben Sie optional einen Sicherungsschlüssel in das Feld Sicherungsschlüssel ein.

    3. Wählen Sie in der Liste Minimum Encryption Version (Verschlüsselungsmindestversion) die Verschlüsselungsmindestversion aus, und klicken Sie dann auf Aktualisieren:

      • V2: Gibt an, dass mit dem Schlüssel Token der Versionen 2.0 und 3.0 generiert werden können. Verwenden Sie diese Option nur, wenn Sie von einem älteren Verschlüsselungsschlüssel der Version 2.0 auf einen Schlüssel der Version 3.0 umstellen.
      • V3: (Empfohlen) Gibt an, dass mit dem Schlüssel nur Token der Version 3.0 generiert werden können.

      Screenshot des Authentifizierungsschlüssels für das Inhaltsübermittlungs-Netzwerktoken.

    4. Verwenden Sie das Verschlüsselungstool, um Verschlüsselungsparameter einzurichten und ein Token zu generieren. Mit dem Verschlüsselungstool können Sie Anforderungen basierend auf Ablaufzeit, Land/Region, Verweiser, Protokoll und Client-IP (in beliebigen Kombinationen) zulassen oder ablehnen. Die Anzahl und Art der Parameter, die zur Bildung eines Tokens kombiniert werden können, sind zwar nicht begrenzt, die Gesamtlänge eines Tokens darf jedoch maximal 512 Zeichen betragen.

      Screenshot des Tools zum Verschlüsseln des Inhaltsübermittlungs-Netzwerks.

      Geben Sie Werte für einen oder mehrere der folgenden Verschlüsselungsparameter im Abschnitt für das Verschlüsselungstool ein:

      Parametername BESCHREIBUNG
      ec_expire Dient dem Zuweisen einer Ablaufzeit zu einem Token. Nach Verstreichen dieser Zeit wird das Token ungültig. Anforderungen, die nach der Ablaufzeit übermittelt werden, werden abgelehnt. Dieser Parameter verwendet einen UNIX-Zeitstempel, der auf der Anzahl der Sekunden seit Beginn der UNIX-Standardepoche „1/1/1970 00:00:00 GMT“ basiert. (Sie können Onlinetools für die Konvertierung zwischen der Standardzeit und der UNIX-Zeit verwenden.)

      Wenn das Token beispielsweise am 12/31/2016 12:00:00 GMT ablaufen soll, geben Sie den UNIX-Zeitstempelwert 1483185600 ein.

      ec_url_allow Dient zum Anpassen von Token an ein bestimmtes Asset oder einen Pfad. Der Zugriff wird auf Anforderungen beschränkt, deren URL mit einem bestimmten relativen Pfad beginnt. Bei URLs wird die Groß-/Kleinschreibung berücksichtigt. Geben Sie mehrere Pfade ein, indem Sie als Trennzeichen jeweils ein Komma verwenden. Fügen Sie außerdem keine Leerzeichen hinzu. Je nach Ihren Anforderungen können Sie andere Werte angeben, um unterschiedliche Zugriffsebenen bereitzustellen.

      Für die URL http://www.mydomain.com/pictures/city/strasbourg.png sind diese Anforderungen z.B. für die folgenden Eingabewerte zulässig:

      • Eingabewert „/“: Alle Anforderungen sind zulässig.
      • Eingabewert „/pictures“: Die folgenden Anforderungen sind zulässig:
        • `http://www.mydomain.com/pictures.png`
        • `http://www.mydomain.com/pictures/city/strasbourg.png`
        • `http://www.mydomain.com/picturesnew/city/strasbourgh.png`
      • Eingabewert „/pictures“: Nur Anforderungen, die den Pfad „/pictures“ enthalten, sind zulässig. Beispiel: „http://www.mydomain.com/pictures/city/strasbourg.png“.
      • Eingabewert „/pictures/city/strasbourg.png“: Nur Anforderungen für diesen bestimmten Pfad und dieses Objekt sind zulässig.
      ec_country_allow Es sind nur Anforderungen zulässig, die aus einem oder mehreren der angegebenen Länder/Regionen stammen. Anforderungen aus allen anderen Ländern/Regionen werden abgelehnt. Verwenden Sie für jedes Land/jede Region einen aus zwei Buchstaben bestehenden [Ländercode nach ISO 3166] (/previous-versions/azure/mt761717(v=azure.100)). Trennen Sie alle Länder/Regionen jeweils mit einem Komma voneinander, und fügen Sie keine Leerzeichen ein. Beispiel: Wenn Sie den Zugriff nur aus den USA und aus Frankreich zulassen möchten, geben Sie „US,FR“ ein.
      ec_country_deny Dient zum Ablehnen von Anforderungen, die aus einem oder mehreren angegebenen Ländern/Regionen stammen. Anforderungen aus allen anderen Ländern/Regionen werden zugelassen. Die Implementierung ist identisch mit dem ec_country_allow-Parameter. Ist ein Länder-/Regionscode sowohl im ec_country_allow-Parameter als auch im ec_country_deny-Parameter vorhanden, hat der ec_country_allow-Parameter Vorrang.
      ec_ref_allow Es werden nur Anforderungen vom angegebenen Verweiser zugelassen. Mit einem Verweiser wird die URL der Webseite identifiziert, die als Link zur angeforderten Ressource dient. Nehmen Sie das Protokoll nicht in den Parameterwert auf.

      Die folgenden Eingabetypen sind zulässig:

      • Ein Hostname oder ein Hostname und ein Pfad.
      • Mehrere Verweiser. Um mehrere Verweiser hinzuzufügen, trennen Sie sie durch Kommas und fügen Sie kein Leerzeichen hinzu. Wenn Sie einen Verweiserwert angeben, die entsprechenden Informationen aufgrund der Browserkonfiguration aber nicht mit der Anforderung gesendet werden, wird die Anforderung standardmäßig abgelehnt.
      • Anforderungen mit fehlenden oder leeren Verweiserinformationen. Standardmäßig blockiert der Parameter ec_ref_allow diese Anforderungstypen. Um solche Anforderungen zuzulassen, geben Sie entweder den Text „missing“ oder einen leeren Wert (unter Verwendung eines nachgestellten Kommas) ein.
      • Unterdomänen. Um Unterdomänen zuzulassen, geben Sie ein Sternchen (\*) ein. Wenn Sie beispielsweise alle Unterdomänen von „contoso.com“ zulassen, geben Sie „*.contoso.com“ ein.

      Beispielsweise geben Sie www.contoso.com,*.contoso.com,missing ein, um Zugriff für Anforderungen von www.contoso.com, allen Unterdomänen unter contoso2.com und Anforderungen mit leeren oder fehlenden Verweisern zuzulassen.

      ec_ref_deny Dient zum Ablehnen von Anforderungen über den angegebenen Verweiser. Die Implementierung ist identisch mit dem ec_ref_allow-Parameter. Ist ein Verweiser sowohl im ec_ref_allow- als auch im ec_ref_deny-Parameter vorhanden, dann hat der Parameter ec_ref_allow Vorrang.
      ec_proto_allow Es werden nur Anforderungen vom angegebenen Protokoll zugelassen. Gültige Werte sind „http“, „https“ oder „http,https“.
      ec_proto_deny Dient zum Ablehnen von Anforderungen vom angegebenen Protokoll. Die Implementierung ist identisch mit dem ec_proto_allow-Parameter. Ist ein Protokoll sowohl im ec_proto_allow- als auch im ec_proto_deny-Parameter vorhanden, dann hat der Parameter ec_proto_allow Vorrang.
      ec_clientip Beschränkt den Zugriff auf die IP-Adresse der angegebenen anfordernden Person. Es werden sowohl Internet Protocol Version 4 (IPv4) als auch Internet Protocol Version 6 (IPv6) unterstützt. Sie können entweder eine einzelne Anforderungs-IP-Adresse oder einem bestimmten Subnetz zugeordnete IP-Adressen angeben. Beispielsweise gestattet „11.22.33.0/22“ Anforderungen der IP-Adressen 11.22.32.1 bis 11.22.35.254.
    5. Nachdem Sie die Eingabe von Werten für die Verschlüsselungsparameter beendet haben, wählen Sie den Schlüssel zum Verschlüsseln (wenn Sie einen Primär- und einen Sicherungsschlüssel erstellt haben) aus der Liste Schlüssel zum Verschlüsseln aus.

    6. Wählen Sie in der Liste Verschlüsselungsversion eine Verschlüsselungsversion aus: V2 für Version 2 oder V3 für Version 3 (empfohlen).

    7. Klicken Sie auf Verschlüsseln, um das Token zu generieren.

      Nachdem das Token generiert wurde, wird es im Feld Generiertes Token angezeigt. Zur Verwendung des Tokens fügen Sie es als Abfragezeichenfolge am Ende der Datei im URL-Pfad ein. Beispiel: http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.

    8. Testen Sie Ihr Token optional mit dem Entschlüsselungstool, um die Parameter Ihres Tokens anzuzeigen. Fügen Sie den Tokenwert in das Feld Token zum Entschlüsseln ein. Wählen Sie den zu verwendenden Verschlüsselungsschlüssel aus der Liste Schlüssel zum Entschlüsseln aus, und klicken Sie auf Entschlüsseln.

      Nach der Entschlüsselung des Tokens werden seine Parameter im Feld Ursprüngliche Parameter angezeigt.

    9. Passen Sie optional den Typ des Antwortcodes an, der zurückgegeben wird, wenn eine Anforderung abgelehnt wird. Wählen Sie Aktiviert aus, und wählen Sie dann den Antwortcode aus der Liste Antwortcode aus. Headername wird automatisch auf Speicherort festgelegt. Klicken Sie auf Speichern, um den neuen Antwortcode zu implementieren. Für bestimmte Antwortcodes müssen Sie auch die URL Ihrer Fehlerseite in das Feld Headerwert eingeben. Der Antwortcode 403 („Unzulässig“) ist standardmäßig aktiviert.

  3. Klicken Sie unter HTTP Large auf Regel-Engine. Mithilfe der Regel-Engine können Sie Pfade zum Anwenden der Funktion definieren sowie das Feature „Tokenauthentifizierung“ und weitere Funktionen zur Tokenauthentifizierung aktivieren. Weitere Informationen finden Sie unter Azure CDN-Regel-Engine.

    1. Wählen Sie eine vorhandene Regel aus, oder erstellen Sie eine neue Regel, um das Asset oder den Pfad zu definieren, auf das bzw. den Sie die Tokenauthentifizierung anwenden möchten.

    2. Zum Aktivieren der Tokenauthentifizierung für eine Regel wählen Sie Token Auth aus der Liste Features und dann Aktiviert aus. Wählen Sie Aktualisieren aus, wenn Sie eine Regel aktualisieren, oder Hinzufügen aus, wenn Sie eine Regel erstellen.

      Screenshot des Beispiels für die Tokenauthentifizierung des Inhaltsübermittlungs-Netzwerkregelnmoduls.

  4. In der Regel-Engine können Sie auch weitere Features zur Tokenauthentifizierung aktivieren. Um die folgenden Features zu aktivieren, wählen Sie sie in der Liste Features aus, und wählen Sie dann Aktiviert aus.

    • Token Auth Denial Code: Gibt den Typ der Antwort an, die an einen Benutzer zurückgegeben wird, wenn eine Anforderung abgelehnt wird. Hier festgelegte Regeln setzen den Antwortcode außer Kraft, der im Abschnitt Custom Denial Handling auf der Seite für die tokenbasierte Authentifizierung festgelegt wurde.

    • Token Auth Ignore URL Case: Legt fest, ob für die URL, die zum Überprüfen des Tokens verwendet wird, die Groß-/Kleinschreibung berücksichtigt wird.

    • Token Auth Parameter: Benennt den Parameter für die Tokenauthentifizierung-Abfragezeichenfolge um, der in der angeforderten URL angezeigt wird.

      Screenshot des Beispiels für die Tokenauthentifizierungs-Einstellungen des Inhaltsübermittlungs-Netzwerkregelnmoduls.

  5. Sie können Ihr Token anpassen, indem Sie auf Quellcode in GitHub zugreifen. Verfügbare Sprachen:

    • C
    • C#
    • PHP
    • Perl
    • Java
    • Python

Azure Content Delivery Network-Funktionen und Anbieterpreise

Informationen zu Features finden Sie unter Azure Content Delivery Network-Produktfunktionen. Weitere Informationen zur Preisgestaltung finden Sie unter Azure Content Delivery Network – Preise .