Verwenden signierter URLs - Amazon CloudFront

Verwenden signierter URLs

Eine signierte URL enthält zusätzliche Informationen, wie z. B. Ablaufdatum und -zeit, mit denen Sie den Zugriff auf Ihre Inhalte besser kontrollieren können. Diese zusätzlichen Informationen sind in einer Richtlinienanweisung enthalten, die entweder auf einer vordefinierten oder einer benutzerdefinierten Richtlinie basieren. Die Unterschiede zwischen vordefinierten und benutzerdefinierten Richtlinien sind in den nächsten beiden Abschnitten beschrieben.

Anmerkung

Sie können einige signierte URLs mit vordefinierten Richtlinien und einige signierte URLs mit benutzerdefinierten Richtlinien für dieselbe Verteilung erstellen.

Auswählen zwischen vordefinierten und benutzerdefinierten Richtlinien für signierte URLs

Wenn Sie eine signierte URL erstellen, schreiben Sie eine Richtlinienanweisung im JSON-Format, welche die Einschränkungen für die signierte URL festlegt, z. B. wie lange die URL gültig ist. Sie können entweder eine vordefinierte Richtlinie oder eine benutzerdefinierte Richtlinie verwenden. Im Folgenden finden Sie einen Vergleich zwischen vordefinierten und benutzerdefinierten Richtlinien:

Beschreibung Vordefinierte Richtlinie Benutzerdefinierte Richtlinie

Sie können die Richtlinienanweisung für mehrere Dateien wiederverwenden. Um die Richtlinienanweisung wiederzuverwenden, müssen Sie Platzhalterzeichen im Resource-Objekt verwenden. Weitere Informationen finden Sie unter Werte, die Sie in der Richtlinienanweisung für eine signierte URL angeben, die eine benutzerdefinierte Richtlinie verwendet.)

Nein

Ja

Sie können das Datum und die Zeit festlegen, ab denen Benutzer auf Ihre Inhalte zugreifen können.

Nein

Ja (optional)

Sie können das Datum und die Zeit festlegen, ab denen Benutzer nicht mehr auf Ihre Inhalte zugreifen können.

Ja

Ja

Sie können die IP-Adresse oder den Bereich von IP-Adressen der Benutzer festlegen, die auf Ihre Inhalte zugreifen können.

Nein

Ja (optional)

Die signierte URL enthält eine Base64-codierte Version der Richtlinie, was zu einer längeren URL führt.

Nein

Ja

Informationen zum Erstellen von signierten URLs mit einer vordefinierten Richtlinie finden Sie unter Erstellen einer signierten URL mit einer vordefinierten Richtlinie.

Informationen zum Erstellen von signierten URLs mit einer benutzerdefinierten Richtlinie finden Sie unter Erstellen einer signierten URL mit einer benutzerdefinierten Richtlinie.

Funktionsweise von signierten URLs

Im Folgenden finden Sie einen Überblick darüber, wie Sie CloudFront und Amazon S3 für signierte URLs konfigurieren und wie CloudFront antwortet, wenn ein Benutzer zum Anfordern einer Datei eine signierte URL verwendet.

  1. Geben Sie in Ihrer CloudFront-Verteilung eine oder mehrere vertrauenswürdige Schlüsselgruppen an, die die öffentlichen Schlüssel enthalten, mit denen CloudFront die URL-Signatur überprüfen kann. Sie verwenden die entsprechenden privaten Schlüssel, um die URLs zu signieren.

    Weitere Informationen finden Sie unter Festlegen der Aussteller, die signierte URLs und signierte Cookies erstellen können.

  2. Sie entwickeln Ihre Anwendung so, dass ermittelt wird, ob ein Benutzer über Zugriff auf Ihre Inhalte verfügen sollte, und dass signierte URLs für die Dateien oder Teile Ihrer Anwendung erstellt werden, für die Sie den Zugriff einschränken möchten. Weitere Informationen finden Sie unter den folgenden Themen:

  3. Ein Benutzer fordert eine Datei an, für die Sie signierte URLs verlangen.

  4. Ihre Anwendung stellt sicher, dass der Benutzer zum Zugriff auf die Datei berechtigt ist: Er hat sich angemeldet, für den Zugriff auf die Inhalte bezahlt oder andere Anforderungen für den Zugriff erfüllt.

  5. Ihre Anwendung erstellt eine signierte URL und gibt diese an den Benutzer zurück.

  6. Über die signierte URL kann der Benutzer die Inhalte herunterladen oder streamen.

    Dieser Schritt erfolgt automatisch. Der Benutzer muss in der Regel keine zusätzlichen Schritte ausführen, um auf den Inhalt zuzugreifen. Wenn ein Benutzer beispielsweise in einem Web-Browser auf Ihre Inhalte zugreift, gibt Ihre Anwendung die signierte URL an den Browser zurück. Der Browser verwendet die signierte URL sofort, um auf die Datei im CloudFront-Edge-Cache zuzugreifen, ohne dass ein Eingreifen des Benutzers erforderlich ist.

  7. CloudFront verwendet den öffentlichen Schlüssel, um die Signatur zu validieren und zu bestätigen, dass die URL nicht manipuliert wurde. Wenn die Signatur ungültig ist, wird die Anfrage abgelehnt.

    Wenn die Signatur gültig ist, überprüft CloudFront die Richtlinienanweisung in der URL (oder erstellt eine, wenn Sie eine vordefinierte Richtlinie verwenden), um zu bestätigen, dass die Anforderung noch gültig ist. Wenn Sie beispielsweise ein Anfangs- und Enddatum sowie eine Anfangs- und Endzeit für die URL angegeben haben, bestätigt CloudFront, dass Benutzer während des zulässigen Zeitraums auf Ihre Inhalte zugreifen möchten.

    Wenn die Anforderung die Voraussetzungen in der Richtlinienanweisung erfüllt, führt CloudFront die Standardverfahren aus: Es wird ermittelt, ob sich die Datei bereits im Edge-Cache befindet, die Anforderung wird bei Bedarf an den Ursprung weitergeleitet und die Datei wird an den Benutzer zurückgegeben.

Anmerkung

Wenn eine unsignierte URL Abfragezeichenfolgenparameter enthält, stellen Sie sicher, dass Sie diese in den Teil der URL einschließen, den Sie signieren. Wenn Sie einer signierten URL nach der Erstellung eine Abfragezeichenfolge hinzufügen, gibt die URL einen HTTP 403-Status zurück.

Auswählen, wie lange signierte URLs gültig sind

Sie können private Inhalte mithilfe einer signierten URL verteilen, die nur für einen kurzen Zeitraum gültig ist – vielleicht nur für ein paar Minuten. Signierte URLs, die für solch einen kurzen Zeitraum gültig sind, eignen sich zum schnellen Verteilen von Inhalten für einen Benutzer für einen spezifischen Zweck. Ein Beispiel ist die Bereitstellung von Filmen und Musik-Downloads auf Abruf an Kunden. Wenn Ihre signierten URLs nur für einen kurzen Zeitraum gültig sind, möchten Sie diese wahrscheinlich mithilfe einer von Ihnen entwickelten Anwendung automatisch generieren. Wenn der Benutzer den Download einer Datei oder die Wiedergabe einer Mediendatei startet, vergleicht CloudFront die Ablaufzeit in der URL mit der aktuellen Zeit, um zu ermitteln, ob die URL noch gültig ist.

Sie können private Inhalte auch mithilfe einer signierten URL verteilen, die für einen längeren Zeitraum gültig ist – vielleicht für viele Jahre. Signierte URLs, die für einen längeren Zeitraum gültig sind, eignen sich zum Verteilen von privaten Inhalten für bekannte Benutzer. Ein Beispiel ist die Bereitstellung von Unternehmensplänen für Investoren oder die Bereitstellung von Schulungsmaterialien für Mitarbeiter. Sie können eine Anwendung entwickeln, um diese längerfristig signierten URLs für Sie zu generieren.

Wann überprüft CloudFront Ablaufdatum und -zeit in einer signierten URL?

CloudFront überprüft das Ablaufdatum und die Ablaufzeit in einer signierten URL zum Zeitpunkt der HTTP-Anforderung. Wenn ein Client unmittelbar vor der Ablaufzeit mit dem Download einer großen Datei beginnt, sollte der Download abgeschlossen werden, auch wenn die Ablaufzeit während des Downloads überschritten wird. Wenn die TCP-Verbindung getrennt wird und der Client nach Überschreitung der Ablaufzeit versucht, den Download erneut zu starten, schlägt der Download fehl.

Wenn ein Client Bereichs-GETs verwendet, um eine Datei in kleineren Teilen abzurufen, schlagen alle GET-Anfragen nach Überschreitung der Ablaufzeit fehl. Weitere Informationen zu Bereichs-GETs finden Sie unter In diesem Abschnitt wird beschrieben, wie CloudFront-Teilanfragen für ein Objekt (Bereichs-GETs) verarbeitet.

Beispiel-Code und Drittanbieter-Tools

Informationen zu Beispiel-Code, mit dem sich der gehashte und signierte Teil von signierten URLs erstellen lässt, finden Sie in den folgenden Themen: