Skip to content

Zugriffsschlüssel

Ein Zugriffsschlüssel besteht aus Access-Key-ID und Secret Key. Das Secret wird einmalig beim Anlegen oder Rotieren angezeigt und ist danach nicht mehr abrufbar. Wenn du es verlierst, rotiere den Schlüssel.

Schlüssel verwaltest du im Portal unter Storage → Zugriffsschlüssel.

Zwei Dinge, die ein Schlüssel trägt

Jeder Schlüssel hat zwei unabhängige Einstellungen:

  • Geltungsbereich: welche Buckets er anfassen darf. Ein Schlüssel kann auf bestimmte Buckets eingeschränkt sein oder ohne Einschränkung jeden Bucket deines Kontos erreichen, auch später angelegte.
  • Zugriffsstufe: was er auf diesen Buckets tun darf.

Ein eingeschränkter Schlüssel bekommt pro Bucket eine Stufe, ein Schlüssel kann also auf app-uploads lesen und schreiben und auf app-assets nur lesen. Ein uneingeschränkter Schlüssel hat eine einzige Stufe für das ganze Konto.

Zugriffsstufen

StufeKannKann nicht
Nur LesenObjekte herunterladen und auflistenHochladen, löschen, Einstellungen ändern
Nur SchreibenObjekte hochladen, auch mehrteiligHerunterladen, auflisten, löschen
Lesen und SchreibenAlles aus Nur-Lesen und Nur-Schreiben, dazu Objekte löschenBucket-Einstellungen ändern
VollAlles, dazu Bucket-Einstellungen wie CORS

Das ist keine einfache Rangfolge. Lesen-und-Schreiben darf Objekte löschen, was weder Nur-Lesen noch Nur-Schreiben darf. Nur-Schreiben ist nicht "Lesen-und-Schreiben ohne Lesen": es ist ein Briefkasten, und löschen darf es ebenfalls nicht.

Was wofür

  • Nur Lesen für alles, was Dateien nach außen ausliefert oder synchronisiert: ein CDN, eine Lese-Replik, ein Reporting-Job.
  • Nur Schreiben für alles, was ausschließlich Daten abliefert: ein Backup-Agent, ein Upload-Endpunkt in deiner Anwendung, ein Log-Versand. Ein abhandengekommener Nur-Schreiben-Schlüssel kann Gespeichertes weder lesen noch löschen.
  • Lesen und Schreiben für einen allgemeinen Anwendungsschlüssel.
  • Voll nur dort, wo CORS programmatisch geändert werden muss. Die meisten Anwendungen brauchen das nie.

Öffentliche Buckets kann jeder lesen

Ist ein Bucket öffentlich, lassen sich seine Objekte ganz ohne Schlüssel herunterladen. Ein Schlüssel mit Nur-Schreiben auf einem öffentlichen Bucket hindert weder sich selbst noch sonst jemanden am Lesen dieser Objekte. Die Stufe regelt den authentifizierten Zugriff, der Öffentlich-Schalter ist eine davon getrennte und deutlich weitergehende Freigabe.

Referenz nach Operation

Was jede Stufe erlaubt, nach S3-Operation.

OperationNur LesenNur SchreibenLesen und SchreibenVoll
HeadBucket, GetBucketLocationjajajaja
GetObject, HeadObjectjaneinjaja
ListObjectsV2, ListObjectVersionsjaneinjaja
PutObject, CopyObject (Ziel)neinjajaja
Mehrteiliger Upload, auch Abbruchneinjajaja
DeleteObject, DeleteObjectsneinneinjaja
GetBucketCorsjaneinjaja
PutBucketCors, DeleteBucketCorsneinneinneinja

CopyObject fasst zwei Buckets an und braucht beide Rechte: Lesen auf der Quelle und Schreiben auf dem Ziel. Hat ein Schlüssel auf beiden Buckets unterschiedliche Stufen, muss jede ihre Seite erlauben.

Zugriff eines Schlüssels ändern

Änderungen an Geltungsbereich oder Stufen greifen innerhalb von 5 Minuten. Wenn du einen Schlüssel gerade eingeschränkt hast und ihn testest, plan das ein, bevor du davon ausgehst, dass es nicht funktioniert hat.

Für das Löschen eines Schlüssels gilt dasselbe. Um Zugriff sofort und dauerhaft zu beenden, lösche den Schlüssel und rotiere alles, was sein Secret geteilt hat.

Was bei verweigertem Zugriff passiert

Eine Anfrage, die der Schlüssel nicht ausführen darf, liefert 403 AccessDenied.

Eine Anfrage auf einen Bucket außerhalb des Geltungsbereichs liefert 404 NoSuchBucket, genau wie ein Bucket, den es nicht gibt. Das ist Absicht: über einen eingeschränkten Schlüssel lässt sich nicht herausfinden, welche Buckets dein Konto hat.

Nicht unterstützte Operationen

Einige Bucket-Operationen aus S3 gibt es nicht und sie liefern auf jeder Zugriffsstufe 501 NotImplemented:

PutBucketAcl, PutBucketPolicy, PutBucketVersioning, PutBucketLifecycle, PutBucketEncryption, PutBucketWebsite, PutBucketNotification, PutBucketReplication, Object Lock, PutPublicAccessBlock, PutBucketLogging, Bucket-Tagging sowie die zugehörigen Get- und Delete-Varianten.

Für die konfigurierbaren Einstellungen nutze das Portal: öffentlicher Zugriff, und CORS über PutBucketCors.

Weiter

  • Buckets: öffentlicher Zugriff und CORS, beides greift ineinander mit dem, was ein Schlüssel darf
  • Überblick: Endpunkt, Regionen und Bucket-Namen