Wie Amazon S3 eine Anforderung autorisiert
Wenn Amazon S3 eine Anforderung erhält – z. B. ein Bucket oder eine Objektoperation –, überprüft es zuerst, ob der Auftraggeber die erforderlichen Berechtigungen besitzt. Amazon S3 wertet alle relevanten Zugriffsrichtlinien, Benutzerrichtlinien und ressourcenbasierten Richtlinien (Bucket-Richtlinie, Bucket-Zugriffssteuerungsliste (ACL) und Objekt-ACL) aus, um entscheiden zu können, ob die Anforderung autorisiert werden soll.
Anmerkung
Wenn bei der Amazon-S3-Berechtigungsprüfung keine gültigen Berechtigungen gefunden werden, wird der Fehler „Zugriff verweigert (403 Forbidden)“ zurückgegeben. Informationen finden Sie unter Beheben Sie „Zugriff verweigert“-Fehler (403 Forbidden) in Amazon S3.
Um zu ermitteln, ob der Anforderer die Berechtigung hat, den spezifischen Vorgang auszuführen, geht Amazon S3 wie folgt vor, wenn eine Anforderung erhalten wird:
-
Es wandelt alle relevanten Zugriffsrichtlinien (Benutzerrichtlinie, Bucket-Richtlinie und ACLs) zur Laufzeit in eine Reihe von Richtlinien zur Auswertung um.
-
Es wertet in den folgenden Schritten die resultierende Richtlinienmenge aus. Amazon S3 wertet in jedem Schritt eine Untermenge der Richtlinien in einem spezifischen Kontext aus, basierend auf der Kontextautorität.
-
Benutzerkontext – Im Benutzerkontext ist das übergeordnete Konto, zu dem der Benutzer gehört, die Kontextautorität.
Amazon S3 wertet eine Untermenge der Richtlinien aus, die dem übergeordneten Konto gehören. Diese Untermenge beinhaltet die Benutzerrichtlinie, die das übergeordnete Konto dem Benutzer zuordnet. Wenn dem übergeordneten Konto auch die Ressource in der Anforderung gehört (Bucket oder Objekt), wertet Amazon S3 gleichzeitig auch die entsprechenden Ressourcenrichtlinien aus (Bucket-Richtlinie, Bucket-ACL und Objekt-ACL).
Ein Benutzer benötigt die Berechtigung von dem übergeordneten Konto, um die Operation auszuführen.
Dieser Schritt wird nur angewendet, wenn die Anforderung von einem Benutzer in einem gestellt wurde AWS-Konto. Wenn die Anforderung unter Verwendung von der Anmeldeinformationen des Root-Benutzers eines AWS-Konto erfolgt, überspringt Amazon S3 diesen Schritt.
-
Bucket-Kontext – Im Bucket-Kontext wertet Amazon S3 Richtlinien aus, die dem AWS-Konto gehören, dem der Bucket gehört.
Erfolgt die Anforderung für eine Bucket-Operation, muss der Auftraggeber die Berechtigung vom Bucket-Eigentümer besitzen. Erfolgt die Anforderung für ein Objekt, wertet Amazon S3 alle Richtlinien aus, die dem Bucket-Eigentümer gehören, um zu überprüfen, ob der Bucket-Eigentümer für das Objekt eine explizite Zugriffsverweigerung festgelegt hat. Wurde eine explizite Zugriffsverweigerung festgelegt, autorisiert Amazon S3 die Anforderung nicht.
-
Objektkontext – Erfolgt die Anforderung für ein Objekt, wertet Amazon S3 die Untermenge der Richtlinien aus, die dem Objekteigentümer gehören.
-
Nachfolgend finden Sie einige Beispielszenarien, die veranschaulichen, wie Amazon S3 eine Anforderung autorisiert.
Beispiel – Der Anforderer ist ein IAM-Prinzipal
Wenn der Anforderer ein IAM-Prinzipal ist, muss Amazon S3 bestimmen, ob das übergeordnete AWS-Konto, zu dem der Prinzipal gehört, dem Prinzipal die erforderliche Berechtigung zum Ausführen der Operation erteilt hat. Erfolgt die Anforderung darüber hinaus für eine Bucket-Operation, wie beispielsweise eine Anforderung, den Bucket-Inhalt aufzulisten, muss Amazon S3 prüfen, ob der Bucket-Eigentümer dem Auftraggeber die Berechtigung erteilt hat, die Operation auszuführen. Um eine bestimmte Operation für eine Ressource auszuführen, muss einem IAM-Benutzer sowohl die Berechtigung von dem übergeordneten AWS-Konto, zu dem er gehört, als auch von dem AWS-Konto, dem die Ressource gehört, erteilt werden.
Beispiel – Der Anforderer ist ein IAM-Prinzipal – wenn die Anforderung für einen Vorgang an einem Objekt gilt, das der Bucket-Eigentümer nicht besitzt
Erfolgt die Anforderung für eine Operation für ein Objekt, das nicht dem Bucket-Eigentümer gehört, muss Amazon S3 sicherstellen, dass der Auftraggeber die Berechtigungen von dem Objekteigentümer hat, und außerdem die Bucket-Richtlinie prüfen, um sicherzustellen, dass der Bucket-Eigentümer keine explizite Zugriffsverweigerung für das Objekt festgelegt hat. Ein Bucket-Eigentümer (der die Rechnung zahlt) kann explizit den Zugriff auf Objekte im Bucket verweigern, unabhängig davon, wem dieser gehört. Der Bucket-Eigentümer kann auch ein beliebiges Objekt im Bucket löschen.
Wenn ein anderes AWS-Konto ein Objekt in Ihren S3-Allzweck-Bucket hochlädt, ist dieses Konto (der Objektschreiber) standardmäßig Eigentümer des Objekts, hat Zugriff darauf und kann anderen Benutzern über Zugriffssteuerungslisten (ACLs) Zugriff darauf gewähren. Mit Object Ownership können Sie dieses Standardverhalten ändern, so dass ACLs deaktiviert werden und Sie als Bucket-Besitzer automatisch Eigentümer aller Objekte in Ihrem Allzweck-Bucket werden. Daher basiert die Zugriffskontrolle für Ihre Daten auf Richtlinien wie IAM-Benutzerrichtlinien, S3-Bucket-Richtlinien, Endpunktrichtlinien für Virtual Private Cloud (VPC) und Service-Kontrollrichtlinien (SCPs) von AWS Organizations. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..
Weitere Informationen darüber, wie Amazon S3 Zugriffsrichtlinien zur Autorisierung oder Ablehnung von Anfragen für Bucket-Vorgänge und Objekt-Vorgänge bewertet, finden Sie in den folgenden Themen: