Ü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.
Themen
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
undacl
(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 Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket.. -
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 Speicherklasse S3 Glacier Flexible Retrieval 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 Ressourcen-Besitzer bezieht sich auf das AWS-Konto, das die Ressource erstellt. Zum Beispiel:
-
Das AWS-Konto, mit dem Sie Buckets und Objekte erstellen und hochladen, ist Besitzer 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, Besitzer 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 diese Objekte dem AWS-Konto, das sie hochlädt. 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-Konto für authentifizierte Anforderungen zu verwenden. Erstellen Sie stattdessen eine IAM-Rolle, der Sie vollständigen Zugriff gewähren. Wir bezeichnen Benutzer mit dieser Rolle als Administratorbenutzer. Anstelle von Anmeldeinformationen des Root-Benutzers des AWS-Konto können Sie der Administratorrolle zugewiesene Anmeldeinformationen für Aufgaben in AWS verwenden, z. B. um einen Bucket und Benutzer zu erstellen sowie Berechtigungen zu gewähren. Weitere Informationen finden Sie unter Stammbenutzer-Anmeldeinformationen von AWS-Konto und IAM-Benutzer-Anmeldeinformationen in der Allgemeine AWS-Referenz und unter Bewährte Methoden für die Sicherheit in IAM im IAM-Benutzerhandbuch.
Ressourcenvorgänge
Amazon S3 bietet eine Reihe von Vorgängen, um mit den Amazon-S3-Ressourcen zu arbeiten. Eine Liste der verfügbaren Vorgänge finden Sie unter Von Amazon S3 definierte Aktionen.
Verwalten des Zugriffs auf Ressourcen
Die Zugriffsverwaltung bezieht sich darauf, eine Zugriffsrichtlinie zu schreiben, die Anderen (AWS-Konten und Benutzern) Berechtigungen für die Durchführung von Ressourcen-Vorgänge gewährt. 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.
-
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 anderen AWS-Konten grundlegende Lese-/Schreibberechtigungen 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 Bucketexamplebucket
erlaubt. Durch die Angabe vonprincipal
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.
Weitere Informationen über 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.
IAM Access Analyzer für S3
In der Amazon-S3-Konsole können Sie IAM Access Analyzer für S3 verwenden, um alle Buckets zu überprüfen, die über Bucket-Zugriffssteuerungslisten (ACLs), Bucket-Richtlinien oder Zugriffspunktrichtlinien verfügen, die öffentlichen oder gemeinsamen Zugriff gewähren. IAM Access Analyzer für S3 macht Sie auf 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.
In IAM Access 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.
IAM Access Analyzer für S3 ist ohne zusätzliche Kosten in der Amazon-S3-Konsole verfügbar. IAM Access Analyzer für S3 wird von AWS Identity and Access Management (IAM) IAM Access Analyzer bereitgestellt. Um IAM Access Analyzer für S3 in 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 zu IAM Access Analyzer für S3 finden Sie unter Überprüfen des Bucket-Zugriffs mit IAM Access 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 auf IAM-Identitäten 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.