Wie Amazon S3 eine Anforderung für eine Bucket-Operation autorisiert
Wenn Amazon S3 eine Anfrage für eine Bucket-Operation erhält, wandelt Amazon S3 alle relevanten Berechtigungen in eine Reihe von Richtlinien um, die zur Laufzeit ausgewertet werden sollen. Zu den relevanten Berechtigungen gehören ressourcenbasierte Berechtigungen (z. B. Bucket-Richtlinien und Bucket-Zugriffskontrolllisten) und Benutzerrichtlinien, wenn die Anfrage von einem IAM-Prinzipal stammt. Amazon S3 wertet anschließend die resultierende Richtlinienmenge in mehreren Schritten in Übereinstimmung mit einem spezifischen Kontext aus – Benutzerkontext oder Bucket-Kontext.
-
Benutzerkontext – Wenn der Anforderer ein IAM-Prinzipal ist, muss der Prinzipal die Berechtigung von dem übergeordneten AWS-Konto erhalten, zu dem er gehört. In diesem Schritt wertet Amazon S3 eine Untermenge der Richtlinien aus, die dem übergeordneten Konto gehören (auch als Kontextautorität bezeichnet). Diese Richtlinienuntermenge beinhaltet die Benutzerrichtlinie, die das übergeordnete Konto dem Prinzipal zuordnet. Wenn dem übergeordneten Konto auch die Ressource in der Anforderung gehört (in diesem Fall der Bucket), wertet Amazon S3 gleichzeitig auch die entsprechenden Ressourcenrichtlinien aus (Bucket-Richtlinie und Bucket-ACL). Immer wenn eine Anforderung für eine Bucket-Operation gemacht wird, zeichnen die Server-Zugriffsprotokolle die kanonische Benutzer-ID des Anforderers auf. Weitere Informationen finden Sie unter Protokollieren von Anfragen mit Server-Zugriffsprotokollierung.
-
Bucket-Kontext – Der Anforderer muss die Berechtigung vom Bucket-Eigentümer besitzen, eine spezifische Bucket-Operation auszuführen. In diesem Schritt wertet Amazon S3 eine Untermenge der Richtlinien aus, die dem AWS-Konto gehören, dem der Bucket gehört.
Der Bucket-Eigentümer kann Berechtigungen unter Verwendung einer Bucket-Richtlinie oder Bucket-ACL erteilen. Wenn das AWS-Konto, dem der Bucket gehört, auch das übergeordnete Konto eines IAM-Prinzipals ist, kann es Bucket-Berechtigungen in einer Benutzerrichtlinie konfigurieren.
Nachfolgend sehen Sie eine grafische Darstellung der kontextbasierten Auswertung für Bucket-Operationen.
Die folgenden Beispiele veranschaulichen die Auswertungslogik.
Beispiel 1: Vom Bucket-Eigentümer angeforderte Bucket-Operation
In diesem Beispiel sendet der Bucket-Eigentümer eine Anforderung einer Bucket-Operation unter Verwendung der Root-Anmeldeinformationen des AWS-Konto.
Amazon S3 führt die Kontextauswertung wie folgt durch:
-
Da die Anforderung unter Verwendung der Anmeldeinformationen des Root-Benutzers eines AWS-Konto erfolgt, wird der Benutzerkontext nicht ausgewertet.
-
Im Bucket-Kontext überprüft Amazon S3 die Bucket-Richtlinie, um festzustellen, ob der Auftraggeber die Berechtigung besitzt, die Operation auszuführen. Amazon S3 autorisiert die Anforderung.
Beispiel 2: Von einem AWS-Konto, das nicht der Bucket-Eigentümer ist, angeforderte Bucket-Operation
In diesem Beispiel wird eine Anforderung unter Verwendung der Anmeldeinformationen des Root-Benutzers des AWS-Konto 1111-1111-1111 für eine Bucket-Operation gestellt, die dem AWS-Konto 2222-2222-2222 gehört. An dieser Anforderung sind keine IAM-Benutzer beteiligt.
In diesem Beispiel wertet Amazon S3 den Kontext wie folgt aus:
-
Da die Anforderung unter Verwendung der Anmeldeinformationen des Root-Benutzers eines AWS-Konto erfolgt, wird der Benutzerkontext nicht ausgewertet.
-
Im Bucket-Kontext wertet Amazon S3 die Bucket-Richtlinie aus. Wenn der Bucket-Eigentümer (AWS-Konto 2222-2222-2222) das AWS-Konto 1111-1111-1111 nicht autorisiert hat, die angeforderte Operation auszuführen, verweigert Amazon S3 die Anforderung. Andernfalls genehmigt Amazon S3 die Anforderung und führt die Operation aus.
Beispiel 3: Von einem IAM-Prinzipal, dessen übergeordnetes AWS-Konto auch der Bucket-Eigentümer ist, angeforderte Bucket-Operation
In dem Beispiel wird die Anforderung von Jill gesendet, einer IAM-Benutzer im AWS-Konto 1111-1111-1111, dem auch der Bucket gehört.
Amazon S3 führt die folgende Kontextauswertung durch:
-
Da die Anfrage von einem IAM-Prinzipal stammt, wertet Amazon S3 im Benutzerkontext alle Richtlinien aus, die zu dem übergeordneten AWS-Konto gehören, um festzustellen, ob Jill zum Ausführen der Operation berechtigt ist.
In diesem Beispiel ist das übergeordnete AWS-Konto 1111-1111-1111, zu dem der Prinzipal gehört, auch gleichzeitig der Bucket-Eigentümer. Somit wertet Amazon S3 zusätzlich zur Benutzerrichtlinie auch die Bucket-Richtlinie und Bucket-ACL im selben Kontext aus, weil sie zum selben Konto gehören.
-
Amazon S3 hat die Bucket-Richtlinie und die Bucket-ACL als Teil des Benutzerkontexts ausgewertet, deshalb wertet es den Bucket-Kontext nicht aus.
Beispiel 4: Von einem IAM-Prinzipal, dessen übergeordnetes AWS-Konto nicht der Bucket-Eigentümer ist, angeforderte Bucket-Operation
In diesem Beispiel wird die Anforderung von Jill gesendet, einer IAM-Benutzerin, deren übergeordnetes AWS-Konto 1111-1111-1111 ist, aber der Bucket gehört einem anderen AWS-Konto, 2222-2222-2222.
Jill benötigt Berechtigungen sowohl vom übergeordneten AWS-Konto, als auch vom Bucket-Eigentümer. Amazon S3 wertet den Kontext wie folgt aus:
-
Da die Anforderung von einem IAM-Prinzipal stammt, wertet Amazon S3 den Benutzerkontext aus, indem es die Richtlinien überprüft, die vom Konto autorisiert wurden, um sicherzustellen, dass Jill über die erforderlichen Berechtigungen verfügt. Wenn Jill die Berechtigung hat, prüft Amazon S3 anschließend den Bucket-Kontext. Wenn Jill keine Berechtigung hat, wird die Anfrage abgelehnt.
-
Im Bucket-Kontext überprüft Amazon S3, ob der Bucket-Eigentümer 2222-2222-2222 Jill (oder ihrem übergeordneten AWS-Konto) die Berechtigung erteilt hat, die angeforderte Operation auszuführen. Wenn sie diese Berechtigung besitzt, gewährt Amazon S3 die Anforderung und führt die Operation aus. Andernfalls lehnt Amazon S3 die Anforderung ab.