Artikel

So teilst du S3-Dateien, ohne den Bucket öffentlich zu machen

Sicher S3-Dateien aus einem privaten Bucket teilen: Presigned URLs, signierte CloudFront-URLs oder Links mit Passwort, Ablaufdatum und Download-Limit.

Du kannst Dateien aus Amazon S3 teilen, ohne den Bucket je öffentlich zu machen. Halte ihn privat, lass Block Public Access aktiviert und gib anderen stattdessen signierten Zugriff auf bestimmte Objekte: eine Presigned URL für eine einzelne Datei, signierte CloudFront-URLs, wenn schon ein CDN vor dem Bucket läuft, oder einen Freigabelink mit Passwort, Ablaufdatum und Download-Limit. Alle drei funktionieren genauso bei S3-kompatiblen Providern wie Cloudflare R2, DigitalOcean Spaces, Wasabi und Backblaze B2 (CloudFront gibt es nur bei AWS).

Sichere Wege zum Teilen von S3-Dateien auf einen Blick

MethodeAm besten fürPasswortDownload-LimitEinzelnen Link widerrufenGanze OrdnerCode nötig
Öffentliches Objekt oder BucketWirklich öffentliche Inhalte (eine Website)NeinNeinNeinJaNein
Presigned URLEine Datei, einmalig, über die CLI oder deine AppNeinNeinNeinNeinCLI oder SDK
Signierte CloudFront-URLApps, die Nutzer bereits authentifizierenNeinNeinNeinMit signierten CookiesJa
Freigabelink von NubboRegelmäßiges Teilen mit Personen von außenJaJaJaJa, mit ZIPNein

Warum du die Datei nicht einfach öffentlich machen solltest

Der schnellste Weg, eine Datei aus S3 zu teilen, ist, sie öffentlich zu machen und die Objekt-URL zu verschicken. Es ist auch der riskanteste: Alles Öffentliche kann jeder abrufen, der die Adresse findet oder errät, ohne Passwort, ohne Ablaufdatum und ohne Aufzeichnung, wer es geholt hat. Vergessene öffentliche Buckets sind eine klassische Quelle für Datenlecks, und sie geben Dateinamen ebenso preis wie Inhalte.

Laut AWS erlauben neue Buckets, Access Points und Objekte standardmäßig keinen öffentlichen Zugriff. Zusätzlich hat S3 Block Public Access vier Einstellungen (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy und RestrictPublicBuckets), die jede Richtlinie oder ACL außer Kraft setzen, die den Bucket später öffnen würde. Sie lassen sich pro Bucket, pro Konto oder für eine ganze AWS Organization festlegen, und S3 wendet die restriktivste Kombination an. AWS empfiehlt, alle vier auf Kontoebene zu aktivieren, außer du hostest wirklich öffentliche Inhalte, etwa eine statische Website.

Lass diesen Schalter an. Alles Folgende funktioniert, während er aktiviert ist.

Option 1: Presigned URLs

Eine Presigned URL ist eine Objekt-URL mit einer Signatur im Query-String. Sie erlaubt eine Operation (meist einen Download) auf einem Objekt, bis sie abläuft, und S3 prüft die Signatur bei jeder Anfrage.

aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400

Diese URL funktioniert 24 Stunden lang. Standard in der CLI ist eine Stunde, das Maximum sind 604.800 Sekunden (7 Tage), wenn du mit Schlüsseln eines IAM-Benutzers signierst. Signierst du mit temporären Zugangsdaten, etwa einer übernommenen Rolle, verliert die URL ihre Gültigkeit, sobald diese Zugangsdaten ablaufen.

Was du bekommst:

  • Keine Änderung am Bucket oder an seinen Richtlinien.
  • Präzise Kontrolle: ein Objekt, eine Methode, ein Ablaufdatum.
  • Funktioniert bei jedem Provider, der Presigning mit SigV4 unterstützt.

Was du nicht bekommst:

  • Kein Passwort. Wer die URL hat, kann sie nutzen, so oft er will, bis sie abläuft.
  • Kein Download-Limit und kein Widerruf pro Link. Du kannst eine URL nur vorzeitig ungültig machen, indem du die Schlüssel widerrufst, mit denen sie signiert wurde.
  • Keine Ordner. Du signierst Objekt für Objekt, einen Ordner mit 300 Dateien zu teilen bedeutet also 300 URLs.
  • Keine Privatsphäre bei Namen. Die URL zeigt deinen Bucket-Namen, den Objektschlüssel und deine Access Key ID.

Die Funktionsweise im Detail, inklusive Uploads, jedem X-Amz-*-Parameter und SDK-Code, findest du in Presigned URLs in S3 erklärt.

Option 2: signierte CloudFront-URLs und signierte Cookies

Wenn du den Bucket bereits über Amazon CloudFront auslieferst, kannst du für ein Cache-Verhalten signierte URLs oder signierte Cookies verlangen. Der Bucket bleibt hinter Origin Access Control (OAC) privat, das AWS gegenüber der älteren Origin Access Identity empfiehlt: Eine Bucket-Richtlinie lässt nur deine Distribution die Objekte lesen. Du registrierst öffentliche Schlüssel in einer Trusted Key Group und signierst mit dem passenden privaten Schlüssel.

  • Signierte URLs eignen sich für einzelne Dateien. Mit einer benutzerdefinierten Richtlinie kannst du außerdem eine Startzeit und einen IP-Bereich festlegen und eine Richtlinie mit Platzhaltern für viele Dateien wiederverwenden. Sie können kurzlebig sein oder jahrelang gelten.
  • Signierte Cookies eignen sich für viele Dateien auf einmal, etwa alle Segmente eines Videos, ohne deine URLs zu ändern.

Das ist das richtige Werkzeug, wenn du eine Anwendung betreibst, die Nutzer bereits authentifiziert und Inhalte in großem Umfang ausliefert. Um ein paar Dateien an Personen außerhalb deines Teams weiterzugeben, bedeutet es: eine Distribution einrichten, Schlüssel verwalten und Code schreiben, der jede Anfrage signiert.

Eine Bucket-Richtlinie auf einen festen IP-Bereich zu beschränken ist eine weitere eingebaute Möglichkeit, hilft aber nur, wenn du die Netzwerke der Empfänger kennst, was bei Personen außerhalb deiner Organisation selten der Fall ist.

Nubbo verbindet sich mit deinem Bucket und gibt dir Freigabelinks mit den Kontrollen, die Presigned URLs fehlen, ohne Code zu schreiben. Im Hintergrund nutzt es weiterhin Presigned URLs: Nubbo prüft zuerst die Regeln des Links und stellt erst dann eine kurzlebige URL aus, sodass einzelne Dateien direkt aus deinem Bucket in den Browser der empfangenden Person gelangen.

Schritt 1: Verbinde deinen Bucket

Registriere dich kostenlos, bestätige deine E-Mail-Adresse, öffne dann Buckets und klicke auf Bucket verbinden. Der Assistent fragt nach deinem Provider (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 oder ein benutzerdefinierter S3-kompatibler Endpoint), nach der Verbindungsart (eine automatische Einrichtung mit einem Schlüssel mit Vollzugriff oder ein auf einen Bucket beschränkter Schlüssel), nach deinem Schlüssel und deinem Bucket. Er prüft Schlüssel und Bucket und testet zum Schluss CORS mit einem echten Upload aus deinem Browser. Der Bucket bleibt privat und deine Schlüssel werden mit AES-256-GCM verschlüsselt gespeichert. Der kostenlose Plan enthält 2 Verbindungen.

Schritt 2: Wähle die Datei oder den Ordner

Suche das Element im Explorer und wähle Teilen. Du kannst auch zur Seite Geteilt gehen, auf Neuer Link klicken und dort den Bucket und die Datei oder den Ordner auswählen.

Schritt 3: Lege den Schutz fest

Alle drei Kontrollen sind optional und in jedem Plan verfügbar:

KontrolleSo funktioniert sie
Passwort4 bis 50 Zeichen. Nach 10 falschen Versuchen wird der Link 15 Minuten lang gesperrt.
AblaufdatumStandardmäßig aus: Der Link bleibt aktiv, solange die Datei oder der Ordner in deinem Speicher liegt.
Maximale DownloadsLeer bedeutet unbegrenzt. Ist die Anzahl erreicht, liefert der Link die Datei nicht mehr aus.

Klicke auf Link erstellen, kopiere ihn und schick ihn per E-Mail, Chat oder was immer du nutzt. Die empfangende Person öffnet eine aufgeräumte Download-Seite und braucht kein Konto. Mit einem Ordner-Link kann sie den Ordner durchsuchen, einzelne Dateien herunterladen oder alles als ZIP holen, das ihr Browser zusammensetzt, indem er jede Datei direkt aus deinem Bucket lädt.

Schritt 5: Sende das Passwort separat

Das Passwort in derselben Nachricht wie den Link zu verschicken, macht den Schutz sinnlos. Wenn der Link ein Passwort hat, verschickt Passwort per E-Mail senden es als einmaligen Anzeige-Link: Das Passwort wird einmal angezeigt, der Anzeige-Link läuft nach 24 Stunden, 3 Tagen oder 7 Tagen ab, und du kannst eine kurze Notiz hinzufügen. Du wirst benachrichtigt, wenn er geöffnet wird.

Schritt 6: Verfolge und widerrufe

Die Seite Geteilt listet jeden Link mit seinem Status und seiner Anzahl an Downloads. Du kannst Passwort, Ablaufdatum oder Limit bearbeiten, einen Link deaktivieren (er stellt sofort keine neuen Download-URLs mehr aus) und ihn später mit derselben Adresse wieder öffnen.

Ein Link funktioniert für jeden, der ihn hat. Wenn nur namentlich genannte Personen hineinkommen sollen, schickt Mit Personen teilen von Nubbo (in den Plänen Personal und Pro) eine Datei oder einen Ordner an bestimmte E-Mail-Adressen, mit Berechtigung zum Ansehen oder Herunterladen, optionalem Ablaufdatum und Download-Grenze, und protokolliert jeden Zugriff. Die Empfänger brauchen ein Nubbo-Konto und finden das Element unter Mit mir geteilt. Personal erlaubt 10 Personen pro Element und 50 aktive Freigaben, Pro 50 und 500.

Bezahlte Pläne bieten außerdem verschlüsselte Links: Der Browser erstellt eine versiegelte Kopie der Datei und der Schlüssel steckt nur im Link selbst, sodass Nubbo sie nicht lesen kann.

Welche Option solltest du nutzen?

  • Eine Datei, einmalig, und du hast die AWS CLI eingerichtet: Eine Presigned URL ist der schnellste Weg.
  • Eine Anwendung, die Nutzer bereits anmeldet und viele Inhalte ausliefert: signierte CloudFront-URLs oder Cookies.
  • Regelmäßiges Teilen mit Personen außerhalb deines Teams, ganze Ordner oder alles, was ein Passwort oder ein Limit braucht: Ein Freigabelink spart Zeit und Fehler.

Zwei verwandte Funktionen decken die anderen häufigen Fälle ab. Datei-Anfragen geben dir einen öffentlichen Upload-Link, damit andere Dateien in deinen Bucket schicken können, ohne etwas anderes darin zu sehen. Galerien machen aus einem Ordner mit Fotos oder Videos eine durchsuchbare Seite mit Layouts, Wasserzeichen und eigenem Passwort. Im kostenlosen Plan bekommst du jeweils 3 davon und unbegrenzte Freigabelinks; Personal und Pro heben diese Grenzen auf. Ein ehrlicher Hinweis: Vorschaubilder werden auf dem Server von Nubbo erzeugt und in deinem eigenen Bucket unter .nubbo-thumbs/ gespeichert.

Häufige Fragen

Wie teile ich eine Datei aus S3, ohne sie öffentlich zu machen?

Halte den Bucket privat und vergib stattdessen signierten Zugriff: eine Presigned URL für ein Objekt (über die AWS CLI oder ein SDK), eine signierte CloudFront-URL oder ein signiertes Cookie, wenn du den Bucket schon über CloudFront auslieferst, oder einen Freigabelink aus einem Tool wie Nubbo, das Presigned URLs um Passwort, Ablaufdatum und Download-Limit ergänzt.

Ist Amazon S3 sicher zum Teilen von Dateien?

Ja, solange der Bucket privat bleibt. Neue Buckets erlauben standardmäßig keinen öffentlichen Zugriff, und S3 Block Public Access verhindert, dass jemand sie später öffnet. Das Risiko entsteht, wenn du Objekte öffentlich machst oder signierte Links in falsche Hände geraten, denn sie funktionieren für jeden, der sie hat, bis sie ablaufen.

Sind neue S3-Buckets standardmäßig privat?

Ja. Laut AWS erlauben neue Buckets, Access Points und Objekte standardmäßig keinen öffentlichen Zugriff, und die vier Einstellungen von Block Public Access setzen jede Richtlinie oder ACL außer Kraft, die sie später öffnen würde.

Braucht die empfangende Person ein AWS- oder Nubbo-Konto?

Nein. Eine Presigned URL, eine signierte CloudFront-URL und ein Freigabelink von Nubbo funktionieren in jedem Browser ohne Konto. Nur Mit Personen teilen, das ein Element an namentlich genannte Personen schickt, setzt voraus, dass sie ein Nubbo-Konto haben.

Wie lange kann ein geteilter S3-Link gültig sein?

Eine Presigned URL gilt höchstens 7 Tage, wenn sie mit Schlüsseln eines IAM-Benutzers signiert wird, und kürzer mit temporären Zugangsdaten. Signierte CloudFront-URLs gelten so lange, wie deine Richtlinie festlegt. Ein Freigabelink von Nubbo läuft nicht ab, solange du kein Datum setzt, weil er bei jedem Download eine neue kurzlebige URL ausstellt.

Laufen Dateien über Nubbo, wenn jemand einen geteilten Link herunterlädt?

Nein: Der Browser lädt einzelne Dateien mit einer Presigned URL direkt aus deinem Bucket herunter. ZIP-Downloads mehrerer Dateien setzt der Browser zusammen, der jede Datei direkt aus deinem Bucket lädt: Nubbo sieht den Inhalt nie.

Quellen

Preise und Limits stammen von den unten verlinkten offiziellen Seiten. Provider ändern sie, prüfe sie also, bevor du dich festlegst.