Übersicht über die Verwaltung von Zugriffsberechtigungen - Amazon Simple Storage Service

Willkommen im neuen Amazon-S3-Benutzerhandbuch! Das Amazon-S3-Benutzerhandbuch kombiniert Informationen und Anweisungen aus den drei eingestellten Handbüchern: Amazon-S3-Entwicklerhandbuch, Benutzerhandbuch der Amazon-S3-Konsole und Amazon S3 – Handbuch Erste Schritte.

Übersicht über die Verwaltung von Zugriffsberechtigungen

Beim Erteilen von Berechtigungen in Amazon S3 entscheiden Sie, wer die Berechtigungen erhält, für welche Amazon S3-Ressourcen die Berechtigungen gelten und welche Aktionen zu diesen Ressourcen gestattet werden sollen. Die folgenden Abschnitte geben einen Überblick über Amazon S3-Ressourcen und wie Sie die beste Methode zur Kontrolle des Zugriffs auf diese ermitteln können.

Amazon S3-Ressourcen: Buckets und Objekte

In AWS ist eine Ressource eine Entität, mit der Sie arbeiten können. In Amazon S3 sind Buckets und Objekte die Ressourcen und beiden sind Subressourcen zugeordnet.

Zu den Bucket-Subressourcen gehören unter anderem:

  • lifecycle – speichert Lebenszyklus-Konfigurationsinformationen. Weitere Informationen finden Sie unter Verwalten Ihres Speicher-Lebenszyklus.

  • website – speichert Website-Konfigurationsinformationen, wenn Sie Ihren Bucket für das Website-Hosting konfigurieren. Weitere Informationen finden Sie unter Hosten einer statischen Website mit Amazon S3.

  • versioning — speichert die Versionierungskonfiguration. Weitere Informationen finden Sie unter PUT-Bucket-Versionierung in Amazon Simple Storage Service – API-Referenz.

  • policy und acl (Access Control List) – speichert Zugriffsberechtigungsinformationen für den Bucket.

  • cors (Cross-Origin Resource Sharing) – unterstützt die Konfiguration Ihres Buckets so, dass ursprungsübergreifende Anforderungen möglich sind. Weitere Informationen finden Sie unter Cross-Origin Resource Sharing (CORS) verwenden.

  • object ownership – ermöglicht dem Bucket-Eigentümer, neue Objekte im Bucket in Besitz zu nehmen, unabhängig davon, wer sie hochlädt. Weitere Informationen finden Sie unter Steuern der Eigentümerschaft an hochgeladenen Objekten mit S3 Object Ownership.

  • logging – ermöglicht Ihnen, Amazon S3 aufzufordern, Bucket-Zugriffsprotokolle zu speichern.

Zu den Objekt-Subressourcen gehören unter anderem:

  • acl – Speichert eine Liste von Zugriffsberechtigungen für das Objekt. Weitere Informationen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

  • restore — unterstützt die temporäre Wiederherstellung eines archivierten Objekts. Weitere Informationen finden Sie unter POST Object restore in der API-Referenz zum Amazon Simple Storage Service.

    Ein Objekt in der S3-Speicherklasse Glacier ist ein archiviertes Objekt. Für den Zugriff auf das Objekt müssen Sie zuerst eine Anforderung zur Wiederherstellung initiieren, die eine Kopie des archivierten Objekts wiederherstellt. Geben Sie in der Anforderung die Anzahl der Tage an, wie lang die wiederhergestellte Kopie existieren soll. Weitere Informationen über das Archivieren von Objekten finden Sie unter Verwalten Ihres Speicher-Lebenszyklus.

Amazon S3-Bucket- und Objekt-Eigentümerschaft

Buckets und Objekte sind Amazon S3-Ressourcen. Standardmäßig kann nur der jeweilige Eigentümer auf diese Ressourcen zugreifen. Der Ressourceneigentümer bezieht sich auf das AWS-Konto, das die Ressource erstellt. Beispiel:

  • Das AWS-Konto, mit dem Sie Buckets und Objekte erstellen und hochladen, ist Eigentümer dieser Ressourcen.

  • Wenn Sie mit den Anmeldeinformationen eines AWS Identity and Access Management (IAM)-Benutzers ein Objekt hochladen, ist das AWS-Konto, zu dem der Benutzer oder die Rolle gehört, Eigentümer des Objekts.

  • Ein Bucket-Eigentümer kann einem anderen AWS-Konto (oder Benutzern in einem anderen Konto) kontenübergreifende Berechtigungen erteilen, um Objekte hochzuladen. In diesem Fall gehören dem AWS-Konto, das diese Objekte hochlädt, diese Objekte. Der Bucket-Eigentümer besitzt keine Berechtigungen für die Objekte, die anderen Konten gehören, mit den folgenden Ausnahmen:

    • Der Bucket-Eigentümer zahlt die Rechnungen. Ein Bucket-Eigentümer kann explizit den Zugriff auf Objekte verweigern oder Objekte im Bucket löschen, unabhängig davon, wem sie gehören.

    • Ein Bucket-Eigentümer kann Objekte archivieren oder archivierte Objekte wiederherstellen, unabhängig davon, wem sie gehören. Die Archivierung bezieht sich auf die Speicherklasse, die beim Speichern der Objekte verwendet wurde. Weitere Informationen finden Sie unter Verwalten Ihres Speicher-Lebenszyklus.

Eigentümerschaft und Anforderungsauthentifizierung

Alle Anforderungen nach einem Bucket sind authentifiziert oder nicht authentifiziert. Authentifizierte Anforderungen müssen einen Signaturwert enthalten, der den Absender der Anforderung authentifiziert, und für nicht authentifizierte Anforderungen gilt dies nicht. Weitere Informationen über Anforderungsauthentifizierung finden Sie unter Senden von Anforderungen.

Der Eigentümer eines Buckets kann nicht authentifizierte Anforderungen zulassen. So sind beispielsweise nicht authentifizierte PUT Object-Anforderungen erlaubt, wenn für einen Bucket eine öffentliche Bucket-Richtlinie gilt oder wenn ein Bucket-ACL WRITE- oder FULL_CONTROL-Zugriff für die Gruppe „All Users (Alle Benutzer)“ oder für anonyme Benutzer gewährt. Weitere Informationen zu öffentlichen Bucket-Richtlinien und öffentlichen Zugriffskontrolllisten (ACLs) finden Sie unter Die Bedeutung von „öffentlich“.

Alle nicht authentifizierten Anforderungen werden vom anonymen Benutzer erstellt. Dieser Benutzer ist in ACLs durch die spezifische kanonische Benutzer-ID 65a011a29cdf8ec533ec3d1ccaae921c repräsentiert. Wenn ein Objekt mit einer nicht authentifizierten Anforderung zu einem Bucket hochgeladen wird, ist der anonyme Benutzer Eigentümer des Objekts. Die Standard-Objekt-ACL gewährt dem anonymen Benutzer als dem Eigentümer des Objekts FULL_CONTROL. Daher erlaubt Amazon S3, dass nicht authentifizierte Anforderungen das Objekt abrufen oder seine ACL modifizieren.

Um zu verhindern, dass Objekte von dem anonymen Benutzer modifiziert werden, empfehlen wir, keine Bucketrichtlinien zu implementieren, die anonyme öffentliche Schreibvorgänge für Ihren Bucket erlauben, oder die ACLs verwenden, den dem anonymen Benutzer Schreibzugriff auf Ihren Bucket gewähren. Sie können diese empfohlene Verhaltensweise durch die Verwendung von Amazon S3 Block Public Access erzwingen.

Weitere Informationen zum Blockieren des öffentlichen Zugriffs finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon-S3-Speicher. Weitere Informationen über ACLs finden Sie in Zugriffskontrolllisten (ACL) – Übersicht.

Wichtig

Wir raten davon ab, die Root-Anmeldeinformationen Ihres AWS-Kontos für authentifizierte Anforderungen zu verwenden. Erstellen Sie stattdessen einen IAM-Benutzer, dem Sie vollständigen Zugriff gewähren. Wir bezeichnen diese Benutzer als Administratorbenutzer. Anstelle der Root-Benutzer-Anmeldeinformationen des AWS-Kontos können Sie die des Administratorbenutzers für Aufgaben in AWS verwenden, z. B. um einen Bucket und Benutzer zu erstellen sowie Berechtigungen zu gewähren. Weitere Informationen finden Sie auf der Webseite zu Root-Benutzeranmeldedaten für AWS-Konten und IAM-Benutzeranmeldeinformationen in der allgemeinen AWS-Referenz und Security Best Practices in IAM im IAM-Benutzerhandbuch.

Ressourcenoperationen

Amazon S3 bietet eine Reihe von Operationen, um mit den Amazon S3-Ressourcen zu arbeiten. Eine Liste der verfügbaren Operationen finden Sie unter Von Amazon S3 definierte Aktionen.

Verwalten des Zugriffs auf Ressourcen

Die Zugriffsverwaltung bezieht sich darauf, anderen (AWS-Konten und Benutzern) durch Schreiben einer Zugriffsrichtlinie Berechtigungen für die Durchführung von Ressourcenoperationen zu gewähren. Sie können beispielsweise die PUT Object-Berechtigung einem Benutzer in einem AWS-Konto erteilen, sodass der Benutzer Objekte in Ihren Bucket hochladen kann. Neben der Erteilung von Berechtigungen für einzelne Benutzer und Konten können Sie jedem Berechtigungen erteilen (auch als anonymer Zugriff bezeichnet), oder allen authentifizierten Benutzern (Benutzern mit AWS-Zugriffsrechten). Wenn Sie beispielsweise Ihren Bucket als Website konfigurieren, könnten Sie Objekt öffentlich machen, indem Sie jedem die GET Object-Berechtigung erteilen.

Zugriffsrichtlinienoptionen

Eine Zugriffsrichtlinie beschreibt, wer Zugriff auf welche Objekte hat. Sie können eine Zugriffsrichtlinie einer Ressource (Bucket und Objekt) oder einem Benutzer zuordnen. Dementsprechend können Sie die verfügbaren Amazon S3-Zugriffsrichtlinien wie folgt kategorisieren:

  • Auf Ressourcen basierende Richtlinien – Bucket-Richtlinien und Zugriffskontrolllisten (ACLs) sind auf Ressourcen basierend, weil Sie sie Ihren Amazon S3-Ressourcen zuordnen.

    
							Diagramm, das AWS-Konto-Ressourcen darstellt, einschließlich eines S3-Buckets mit einer Bucket-ACL und einer Bucket-Richtlinie und S3-Objekten mit Objekt-ACLs.
    • ACL – Jedem Bucket und Objekt ist eine Zugriffskontrollliste zugeordnet. Eine ACL listet die erteilten Berechtigungen auf, die den Berechtigungsempfänger und die erteilte Berechtigung identifizieren. Sie können ACLs verwenden, um grundlegende Lese-/Schreibberechtigungen für andere AWS-Konten zu erteilen. ACLs verwenden ein für Amazon S3 spezifisches XML-Schema.

      Es folgt ein Beispiel für eine Bucket-ACL. Das Recht der ACL zeigt einen Bucket-Eigentümer, der volle Kontrolle besitzt.

      <?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

      Bucket- und Objekt-ACLs verwenden dasselbe XML-Schema.

    • Bucket-Richtlinie – Sie können Ihrem Bucket eine Bucket-Richtlinie hinzufügen, um anderen AWS-Konten oder IAM-Benutzern die Berechtigungen für den Bucket und die darin enthaltenen Objekte zu erteilen. Objektberechtigungen gelten nur für die Objekte, die der Bucket-Eigentümer erstellt. Bucket-Richtlinien ergänzen ACL-basierte Zugriffsrichtlinien, und in vielen Fällen ersetzen sie sie.

      Hier finden Sie ein Beispiel für eine Bucket-Richtlinie. Bucket-Richtlinien (und Benutzerrichtlinien) werden unter Verwendung einer JSON-Datei dargestellt. Die Richtlinie gewährt anonyme Berechtigung zum Lesen aller Objekte in einem Bucket. Die Bucket-Richtlinie enthält eine Anweisung, die die s3:GetObject-Aktion (Leseberechtigung) für Buckets im Bucket examplebucket erlaubt.  Durch die Angabe von principal mit einem Platzhalterzeichen (*) erteilt die Richtlinie anonymen Zugriff und ist mit Vorsicht zu verwenden. Die folgende Bucket-Richtlinie würde beispielsweise Objekte öffentlich zugänglich machen.

      { "Version":"2012-10-17", "Statement": [ { "Sid":"GrantAnonymousReadPermissions", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
  • Benutzerrichtlinien – Sie können IAM für die Verwaltung des Zugriffs auf Ihre Amazon S3-Ressourcen verwenden. Sie können IAM-Benutzer, Gruppen und Rollen in Ihrem Konto erstellen und ihnen Zugriffsrichtlinien zuordnen, die ihnen Zugriff auf die AWS-Ressourcen erteilen, einschließlich Amazon S3.

    
							Diagramm, das den AWS-Kontoadministrator und andere Benutzer mit zugeordneten Benutzerrichtlinien darstellt.

    Weitere Informationen zu IAM finden Sie unter AWS Identity and Access Management (IAM).

    Nachstehend finden Sie ein Beispiel für eine Benutzerrichtlinie. In einer IAM-Benutzerrichtlinie können Sie keine anonymen Berechtigungen gewähren, weil die Richtlinie mit einem Benutzer verknüpft ist. Die Beispielrichtlinie gestattet dem entsprechenden Benutzer, dass er sechs verschiedene Amazon S3-Aktionen für einen Bucket und die darin enthaltenen Objekte ausführt. Sie können diese Richtlinie einem spezifischen IAM-Benutzer, einer Gruppe oder einer Rolle zuordnen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssignUserActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*", "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "ExampleStatement2", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }

Wenn Amazon S3 eine Anfrage erhält, muss es alle Zugriffsrichtlinien auswerten, um festzustellen, ob es die Anfrage genehmigen oder verweigern soll. Weitere Informationen dazu, wie Amazon S3 diese Richtlinien auswertet, finden Sie unter Wie Amazon S3 eine Anforderung autorisiert.

Zugriffs-Analyzer für S3

Auf der Amazon S3-Konsole können Sie den Zugriffs-Analyzer für S3 verwenden, um alle Buckets zu überprüfen, die über Bucket-Zugriffskontrolllisten (ACLs), Bucket-Richtlinien oder Zugriffspunktrichtlinien verfügen, die öffentlichen oder gemeinsamen Zugriff gewähren. Der Zugriffs-Analyzer für S3 macht Sie auf S3-Buckets aufmerksam, die so konfiguriert sind, dass jedem im Internet oder anderen AWS-Konten, einschließlich AWS-Konten außerhalb Ihrer Organisation, Zugriff gewährt wird. Für jeden öffentlichen oder freigegebenen Bucket erhalten Sie Ergebnisse, die die Quelle und die Ebene des öffentlichen oder freigegebenen Zugriffs melden.

Im Zugriffs-Analyzer für S3 können Sie den gesamten öffentlichen Zugriff auf einen Bucket mit einem einzigen Klick blockieren. Wir empfehlen Ihnen, den gesamten Zugriff auf Ihre Buckets zu blockieren, es sei denn, Sie benötigen öffentlichen Zugriff, um einen bestimmten Anwendungsfall zu unterstützen. Bevor Sie den gesamten öffentlichen Zugriff blockieren, stellen Sie sicher, dass Ihre Anwendungen ohne öffentlichen Zugriff weiterhin ordnungsgemäß funktionieren. Weitere Informationen finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon-S3-Speicher.

Sie können auch einen Drilldown in die Berechtigungseinstellungen auf Bucket-Ebene ausführen, um detaillierte Zugriffsebenen zu konfigurieren. Für bestimmte und geprüfte Anwendungsfälle, die öffentlichen oder freigegebenen Zugriff erfordern, können Sie Ihre Absicht bestätigen und aufzeichnen, dass der Bucket öffentlich oder freigegeben bleibt, indem Sie die Ergebnisse für den Bucket archivieren. Diese Bucket-Konfigurationen sind jederzeit aufrufbar und änderbar. Sie können Ihre Ergebnisse auch als CSV-Bericht zu Auditing-Zwecken herunterladen.

Der Zugriffs-Analyzer für S3 ist ohne zusätzliche Kosten auf der Amazon S3-Konsole verfügbar. Der Zugriffs-Analyzer für S3 wird von AWS Identity and Access Management (IAM) Access Analyzer unterstützt. Um den Zugriffs-Analyzer für S3 auf der Amazon S3-Konsole verwenden zu können, müssen Sie die IAM-Konsole aufrufen und einen Analyzer auf Kontoebene in IAM Access Analyzer auf regionaler Basis erstellen.

Weitere Informationen zum Zugriffs-Analyzer für S3 finden Sie unter Überprüfen des Bucket-Zugriffs mit Zugriffs-Analyzer für S3.

Welche Zugriffskontrollmethode sollte ich verwenden?

Angesichts der verschiedenen Optionen zum Schreiben einer Zugriffsrichtlinie ergeben sich die folgenden Fragen:

  • Wann sollte ich welche Zugriffskontrollmethode verwenden? Sollte ich beispielsweise für das Erteilen von Bucket-Berechtigungen eine Bucket-Richtlinie oder eine Bucket-ACL verwenden?

    Ich besitze einen Bucket und die im Bucket enthaltenen Objekte. Sollte ich eine auf Ressourcen basierende Zugriffsrichtlinie oder eine IAM-Benutzerrichtlinie verwenden?

    Wenn ich eine auf Ressourcen basierende Zugriffsrichtlinie verwende, sollte ich eine Bucket-Richtlinie oder eine Objekt-ACL verwenden, um Objektberechtigungen zu verwalten?

  • Ich besitze einen Bucket, aber nicht alle darin enthaltenen Objekte. Wie werden Zugriffsberechtigungen für die Objekte verwaltet, die jemandem anderen gehören?

  • Wenn ich den Zugriff über eine Kombination aus diesen Zugriffsrichtlinienoptionen erteile, wie kann Amazon S3 feststellen, ob ein Benutzer berechtigt ist, eine angefragte Operation auszuführen?

Die folgenden Abschnitte erklären diese Zugriffskontrollalternativen, wie Amazon S3 einen Zugriffskontrollmechanismus auswertet und wann welche Zugriffskontrollmethode zu verwenden ist. Sie bieten auch Beispiel-Anleitungen.