Laden Sie Objekte mit vorsignierten Objekten herunter und laden Sie sie hoch URLs - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Laden Sie Objekte mit vorsignierten Objekten herunter und laden Sie sie hoch URLs

Sie können presigned verwenden URLs , um zeitlich begrenzten Zugriff auf Objekte in Amazon S3 zu gewähren, ohne Ihre Bucket-Richtlinie zu aktualisieren. Eine vorsignierte URL kann in einem Browser eingegeben oder von einem Programm verwendet werden, um ein Objekt herunterzuladen. Die von der vorsignierten URL verwendeten Anmeldeinformationen sind die des AWS Identity and Access Management (IAM-) Prinzipals, der die URL generiert hat.

Sie können Presigned auch verwenden URLs , um es jemandem zu ermöglichen, ein bestimmtes Objekt in Ihren Amazon S3 S3-Bucket hochzuladen. Dies ermöglicht einen Upload, ohne dass eine andere Partei über AWS Sicherheitsanmeldedaten oder -berechtigungen verfügen muss. Wenn im Bucket bereits ein Objekt mit demselben Schlüssel vorhanden ist, wie in der vorsignierten URL angegeben wird, ersetzt Amazon S3 das vorhandene Objekt durch das hochgeladene Objekt.

Sie können die vorsignierte URL mehrmals verwenden, bis hin zum Ablaufdatum und -zeitpunkt.

Wenn Sie eine vorsignierte URL erstellen, müssen Sie Ihre Sicherheitsanmeldedaten eingeben und dann Folgendes angeben:

  • Ein Amazon S3 S3-Bucket

  • Ein Objektschlüssel (Herunterladen: dieses Objekt wird sich in Ihrem Amazon-S3-Bucket befinden; Hochladen: der Name der hochzuladenden Datei)

  • Eine HTTP-Methode (GET zum Herunterladen von Objekten, PUT zum Hochladen, HEAD zum Lesen von Objekt-Metadaten usw.)

  • Ein Ablaufzeitintervall

Wenn Sie Presigned URLs zum Hochladen von Objekten verwenden, können Sie die Objektintegrität anhand von Prüfsummen überprüfen. Vorsignierte, die mit AWS Signature Version 2 URLs erstellt wurden, unterstützen zwar nur MD5 Prüfsummen, aber mit AWS Signature Version 4 URLs erstellte Versionen unterstützen zusätzliche Prüfsummenalgorithmen, darunterCRC-64/NVME,, und. CRC32 CRC32C SHA-1 SHA-256 Um diese zusätzlichen Prüfsummenalgorithmen zu verwenden, stellen Sie sicher, dass Sie AWS Signature Version 4 verwenden, und fügen Sie Ihrer Upload-Anfrage den entsprechenden Prüfsummen-Header hinzu. Weitere Informationen über die Objektintegrität finden Sie unter Überprüfen der Objektintegrität in Amazon S3.

Wer eine vorsignierte URL erstellen kann

Alle Benutzer mit gültigen Sicherheitsanmeldeinformationen können vorsignierte URLs erstellen. Um erfolgreich auf ein Objekt zugreifen zu können, muss die vorsignierte URL von jemandem erstellt werden, der die Berechtigung für den Vorgang besitzt, auf dem die vorsignierte URL basiert.

Die Arten von Anmeldeinformationen, die Sie zum Erstellen einer vorsignierten URL verwenden können:

  • IAM-Benutzer — Gültig bis zu 7 Tage, wenn Sie AWS Signature Version 4 verwenden.

    Um eine vorsignierte URL zu erstellen, die bis zu 7 Tage gültig ist, delegieren Sie zunächst die IAM-Benutzer-Anmeldeinformationen (den Zugriffsschlüssel und den geheimen Schlüssel) an die Methode, die Sie verwenden, um die vorsignierte URL zu erstellen.

  • Temporäre Sicherheitsanmeldeinformationen – Sie können nicht länger gültig sein als die Anmeldeinformationen selbst. Zu diesen Anmeldeinformationen gehören:

    • IAM-Rollenanmeldeinformationen – Die vorsignierte URL läuft ab, wenn die Rollensitzung abläuft, auch wenn Sie eine längere Ablaufzeit angeben.

    • Von EC2 Amazon-Instances verwendete IAM-Rollenanmeldedaten — Gültig für die Dauer der Rollenanmeldedaten (normalerweise 6 Stunden).

    • AWS -Security-Token-Service Anmeldeinformationen — Gültig nur für die Dauer der temporären Anmeldeinformationen.

Anmerkung

Wenn Sie eine vorsignierte URL mit temporären Anmeldeinformationen erstellt haben, verfällt die URL mit Ablauf der Anmeldeinformationen. Im Allgemeinen läuft eine vorsignierte URL ab, wenn die Anmeldeinformationen, mit denen Sie sie erstellt haben, gesperrt, gelöscht oder deaktiviert werden. Dies gilt auch dann, wenn die URL mit einer späteren Ablaufzeit erstellt wurde. Informationen zur Gültigkeitsdauer temporärer Sicherheitsanmeldedaten finden Sie unter AWS STS API-Operationen vergleichen im IAM-Benutzerhandbuch.

Ablaufzeit für vorsignierte URLs

Eine vorsignierte URL bleibt für den Zeitraum gültig, der bei der Generierung der URL angegeben wurde. Wenn Sie eine vorsignierte URL mit der Amazon-S3-Konsole erstellen, kann die Ablaufzeit auf einen Zeitraum zwischen 1 Minute und 12 Stunden festgelegt werden. Wenn Sie das AWS CLI oder verwenden AWS SDKs, kann die Ablaufzeit auf bis zu 7 Tage festgelegt werden.

Wenn Sie eine vorsignierte URL unter Verwendung eines temporären Tokens erstellt haben, läuft die URL ab, sobald der Token abläuft. Im Allgemeinen läuft eine vorsignierte URL ab, wenn die Anmeldeinformationen, mit denen Sie sie erstellt haben, gesperrt, gelöscht oder deaktiviert werden. Dies gilt auch dann, wenn die URL mit einer späteren Ablaufzeit erstellt wurde. Weitere Informationen darüber, wie sich die von Ihnen verwendeten Anmeldeinformationen auf die Ablaufzeit auswirken, finden Sie unter Wer eine vorsignierte URL erstellen kann.

Amazon S3 überprüft das Ablaufdatum und die Ablaufzeit in einer signierten URL zum Zeitpunkt der HTTP-Anforderung. Beginnt ein Client beispielsweise mit dem Herunterladen einer großen Datei unmittelbar vor der Ablaufzeit, wird der Download auch dann fortgesetzt, wenn die Ablaufzeit während des Downloads verstreicht. Wenn die Verbindung jedoch unterbrochen wird und der Client versucht, den Download nach Ablauf der Zeit erneut zu starten, schlägt der Download fehl.

Beschränkung der Funktionen für vorsignierte URLs

Die Funktionen einer vorsignierten URL sind durch die Berechtigungen des Benutzers eingeschränkt, der sie erstellt hat. Im Wesentlichen URLs handelt es sich bei vorsignierten Token um Inhaber-Token, die denjenigen Zugang gewähren, die sie besitzen. Daher empfehlen wir Ihnen, sie angemessen zu schützen. Im Folgenden finden Sie einige Methoden, mit denen Sie die Verwendung Ihrer vorsignierten Daten einschränken können. URLs

AWS Signatur Version 4 (SigV4)

Um ein bestimmtes Verhalten zu erzwingen, wenn vorsignierte URL-Anfragen mit AWS Signature Version 4 (SigV4) authentifiziert werden, können Sie Bedingungsschlüssel in Bucket-Richtlinien und Zugriffspunkt-Richtlinien verwenden. Beispielsweise verwendet die folgende Bucket-Richtlinie die s3:signatureAge-Bedingung, um jede vorsignierte URL-Anfrage von Amazon S3 für Objekte im amzn-s3-demo-bucket-Bucket zu verweigern, wenn die Signatur mehr als 10 Minuten alt ist. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die user input placeholders (Platzhalter für Benutzereingaben) durch Ihre Informationen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": "600000" } } } ] }

Weitere Informationen zu Richtlinienschlüsseln im Zusammenhang mit AWS Signature Version 4 finden Sie unter AWS Signature Version 4-Authentifizierung in der Amazon Simple Storage Service API-Referenz.

Beschränkung der Netzwege

Wenn Sie die Nutzung des vorsignierten URLs und des gesamten Amazon S3 S3-Zugriffs auf bestimmte Netzwerkpfade einschränken möchten, können Sie AWS Identity and Access Management (IAM-) Richtlinien schreiben. Diese Richtlinien können für den IAM-Prinzipal, der den Aufruf vornimmt, den Amazon-S3-Bucket oder beide festgelegt werden.

Eine Netzwerkpfadbeschränkung für den IAM-Prinzipal erfordert, dass der Benutzer dieser Anmeldeinformationen Anfragen aus dem angegebenen Netzwerk stellt. Eine Einschränkung des Buckets oder des Zugriffspunkts erfordert, dass alle Anfragen an diese Ressource aus dem angegebenen Netz stammen. Diese Einschränkungen gelten auch außerhalb des Szenarios der vorsignierten URL.

Der globale IAM-Bedingungsschlüssel, den Sie verwenden, hängt von der Art des Endpunkts ab. Wenn Sie den öffentlichen Endpunkt für Amazon S3 verwenden, verwenden Sie aws:SourceIp. Wenn Sie einen Virtual Private Cloud (VPC)-Endpunkt für Amazon S3 nutzen, verwenden Sie aws:SourceVpc oder aws:SourceVpce.

Die folgende IAM-Richtlinienerklärung verlangt, dass der Principal AWS nur aus dem angegebenen Netzwerkbereich zugreift. Mit dieser Richtlinie müssen alle Zugriffe von diesem Bereich ausgehen. Dies gilt auch für den Fall, dass jemand eine vorsignierte URL für Amazon S3 verwendet. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die user input placeholders (Platzhalter für Benutzereingaben) durch Ihre Informationen.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }

Häufig gestellte Fragen für Presigned URLs

F: Warum URLs läuft meine vorsignierte Version vor der konfigurierten Ablaufzeit ab?

Vorsignierte URLs bleiben nur gültig, solange die zugrundeliegenden Anmeldeinformationen gültig sind. Eine vorzeichenbehaftete URL läuft entweder zu ihrer konfigurierten Ablaufzeit ab oder wenn die zugehörigen Anmeldeinformationen ablaufen, je nachdem, was zuerst eintritt. Bei Aufgaben oder Containern von Amazon Elastic Container Service wechseln die Rollenanmeldeinformationen in der Regel alle 1–6 Stunden. Wenn Sie AWS -Security-Token-Service (AWS STS) verwenden AssumeRole, läuft die vorsignierte URL ab, wenn die Rollensitzung endet, was standardmäßig 1 Stunde dauert. Bei EC2 Amazon-Instance-Profilen rotieren die Anmeldeinformationen für Metadaten regelmäßig mit einer maximalen Gültigkeitsdauer von etwa 6 Stunden.

F: Warum erhalte ich einen 403 Forbidden-Fehler, wenn ich auf eine vordefinierte URL zugreife?

Vergewissern Sie sich vor der Generierung einer vordefinierten URL, dass Sie die richtigen Berechtigungen konfiguriert haben. Der IAM-Benutzer oder die IAM-Rolle, der/die die URL generiert, muss über die erforderlichen Berechtigungen, wie z. B. s3:GetObject, für den spezifischen Vorgang verfügen. Stellen Sie außerdem sicher, dass die Amazon S3-Bucket-Richtlinie den Zugriff auf das Objekt nicht ausdrücklich verweigert.

F: Ich erhalte SignatureDoesNotMatch Fehler. Wie lässt sich dieses Problem beheben?

Wenn Sie bei der Verwendung von Amazon S3 Presigned auf SignatureDoesNotMatch Fehler stoßen URLs, sollten Sie mehrere häufige Ursachen in Betracht ziehen. Stellen Sie zunächst sicher, dass Ihre Systemuhr mit einem NTP-Server (Network Time Protocol) synchronisiert ist, da selbst kleine Zeitabweichungen Signaturen ungültig machen können. Beachten Sie außerdem, dass einige Unternehmens-Proxys Kopfzeilen oder Abfragezeichenfolgen ändern können, was möglicherweise zu Signaturfehlern führt. Versuchen Sie zur Fehlerbehebung, ohne den Proxy zu testen. Stellen Sie abschließend sicher, dass alle Anforderungsparameter – einschließlich der HTTP-Methode, der Header und der Abfragezeichenfolge – bei der Generierung und Verwendung der URL exakt übereinstimmen. Die Behebung dieser Probleme kann häufig SignatureDoesNotMatch-Fehler beheben.

F: Ich erhalte ExpiredToken Fehler. Was soll ich tun?

Wenn Sie bei der Verwendung von Presigned ExpiredToken Fehler erhalten URLs, bedeutet dies, dass die zur Generierung der URL verwendeten AWS Anmeldeinformationen nicht mehr gültig sind. Um dieses Problem zu beheben, aktualisieren Sie Ihre AWS Anmeldeinformationen, bevor Sie neue URLs vorsignierte Anmeldeinformationen generieren. Für Anwendungen, die lange laufen, empfehlen wir die Implementierung einer Logik zur Aktualisierung der Anmeldeinformationen, um einen kontinuierlichen Zugriff zu gewährleisten. Gegebenenfalls können Sie Anmeldeinformationen mit längerer Lebensdauer verwenden oder Mechanismen zur Aktualisierung von Token implementieren. Wenn Sie AWS -Security-Token-Service (AWS STS) verwenden, stellen Sie sicher AssumeRole, dass Ihre konfigurierte Sitzungsdauer den Anforderungen Ihres Anwendungsfalls entspricht. Denken Sie daran, dass vorsignierte Anmeldeinformationen nur für die Dauer der ihnen zugrunde liegenden Anmeldeinformationen URLs gültig sind. Daher ist die Implementierung einer ordnungsgemäßen Verwaltung der Anmeldeinformationen unerlässlich.