Richtlinien für Zugriffsrichtlinien - Amazon Simple Storage Service

Richtlinien für Zugriffsrichtlinien

Amazon S3 unterstützt ressourcenbasierte Richtlinien und Benutzerrichtlinien für die Verwaltung des Zugriffs auf Ihre Amazon-S3-Ressourcen. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Ressourcen. Ressourcenbasierte Richtlinien umfassen Bucket-Richtlinien, Bucket-Zugriffskontrolllisten (ACLs) und Objekt-ACLs. Dieser Abschnitt beschreibt spezifische Szenarien für die Verwendung ressourcenbasierter Zugriffsrichtlinien für die Verwaltung des Zugriffs auf Ihre Amazon-S3-Ressourcen.

Wann eine ACL-basierte Zugriffsrichtlinie verwendet wird (Bucket- und Objekt-ACLs)

Buckets und Objekten sind ACLs zugeordnet, die Sie verwenden können, um Berechtigungen zu erteilen.

Wenn ein anderes AWS-Konto ein Objekt in Ihren S3-Bucket hochlädt, besitzt dieses Konto (der Objektschreiber) standardmäßig das Objekt, hat Zugriff darauf und kann anderen Benutzern über ACLs Zugriff darauf gewähren. Sie können Object Ownership verwenden, um dieses Standardverhalten so zu ändern, dass ACLs deaktiviert sind und Sie als Bucket-Eigentümer automatisch jedes Objekt in Ihrem Bucket besitzen. Daher basiert die Zugriffskontrolle für Ihre Daten auf Richtlinien wie IAM-Richtlinien, S3-Bucket-Richtlinien, Endpunktrichtlinien für Virtual Private Cloud (VPC) und AWS Organizations Service-Kontrollrichtlinien (SCPs).

Die meisten modernen Anwendungsfälle in Amazon S3 erfordern keine ACLs mehr, und wir empfehlen Ihnen, ACLs zu deaktivieren, außer unter ungewöhnlichen Umständen, in denen Sie den Zugriff für jedes Objekt einzeln steuern müssen. Mit Object Ownership können Sie ACLs deaktivieren und sich auf Richtlinien für die Zugriffssteuerung verlassen. Wenn Sie ACLs deaktivieren, können Sie einfach einen Bucket mit Objekten verwalten, die von verschiedenen AWS-Konten hochgeladen wurden. Sie als Bucket-Eigentümer besitzen alle Objekte im Bucket und können den Zugriff darauf mithilfe von Richtlinien verwalten. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Wichtig

Wenn Ihr Bucket die erzwungene Einstellung für den Bucket-Eigentümer für S3 Object Ownership verwendet, müssen Sie Richtlinien verwenden, um Zugriff auf Ihren Bucket und die darin enthaltenen Objekte zu gewähren. Anfragen zum Festlegen von ACLs oder Update-ACLs schlagen fehl und geben den AccessControlListNotSupported-Fehlercode zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

Wann Objekt-ACLs verwendet werden

Nachfolgend finden Sie die Szenarien, in denen Sie Objekt-ACLs zur Verwaltung von Berechtigungen verwenden sollten.

Objekte sind nicht im Besitz des Bucket-Eigentümers

Eine Objekt-ACL ist die einzige Möglichkeit, den Zugriff auf Objekte zu verwalten, die nicht dem Bucket-Eigentümer gehören. Ein AWS-Konto, dem ein Bucket gehört, kann einem anderen AWS-Konto die Berechtigung erteilen, Objekte hochzuladen. Dem Bucket-Eigentümer gehören diese Objekte nicht. Das AWS-Konto, das dieses Objekt erstellt hat, muss Berechtigungen unter Verwendung der Objekt-ACLs erteilen.

Anmerkung

Ein Bucket-Eigentümer kann keine Berechtigungen für Objekte erteilen, die ihm nicht gehören. Beispielsweise gilt eine Bucket-Richtlinie, die Objektberechtigungen erteilt, nur für Objekte, die dem Bucket-Eigentümer gehören. Ein Bucket-Eigentümer, der die Rechnung zahlt, kann jedoch eine Bucket-Richtlinie schreiben, die den Zugriff auf Objekte im Bucket verweigern, unabhängig davon, wem dieser gehört. Der Bucket-Eigentümer kann auch beliebige Objekte im Bucket löschen

Sie müssen Berechtigungen auf Objektebene verwalten

Angenommen, die Berechtigungen variieren je nach Objekt und Sie müssen Berechtigungen auf Objektebene verwalten. Sie können eine einzelne Richtlinienanweisung schreiben, die einem AWS-Konto-Leseberechtigung für Millionen von Objekten mit einem bestimmten Schlüsselnamen-Präfix erteilt. Beispielsweise könnten Sie Leseberechtigung für Objekte erteilen, die mit dem Schlüsselnamepräfix logs beginnen. Wenn Ihre Zugriffsberechtigungen jedoch zwischen den Objekten variieren, ist die Erteilung von Berechtigungen für einzelne Objekte unter Verwendung einer Bucket-Richtlinie möglicherweise nicht praktisch. Außerdem sind Bucket-Richtlinien auf eine Größe von 20 KB beschränkt.

In diesem Fall ist die Verwendung von Objekt-ACLs möglicherweise eine geeignetere Alternative. Das gilt auch, obwohl eine Objekt-ACL ebenfalls auf maximal 100 Rechte beschränkt ist. Weitere Informationen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

Objekt-ACLs steuern nur Berechtigungen auf Objektebene

Es gibt eine Bucket-Richtlinie für den gesamten Bucket, aber Objekt-ACLs werden pro Objekt eingerichtet.

Ein AWS-Konto dem ein Bucket gehört, kann einem anderen AWS-Konto die Berechtigung erteilen, die Zugriffsrichtlinie zu verwalten. Es gestattet diesem Konto, die Richtlinie beliebig zu verändern. Um die Berechtigungen besser verwalten zu können, sollten Sie keine so allgemeine Berechtigung erteilen, sondern besser nur READ-ACP und WRITE-ACP-Berechtigungen für Untermengen von Objekten. Damit kann das Konto nur für bestimmte Objekte Berechtigungen verwalten, indem es die ACLs einzelner Objekte aktualisiert.

Wenn Sie ACLs verwenden möchten, um Berechtigungen auf Objektebene zu verwalten, und Sie auch neue Objekte besitzen möchten, die in Ihren Bucket geschrieben wurden, können Sie die bevorzugte Einstellung des Bucket-Eigentümers für Object Ownership anwenden. Ein Bucket mit der bevorzugten Einstellung des Bucket-Eigentümers akzeptiert und berücksichtigt weiterhin Bucket- und Objekt-ACLs. Mit dieser Einstellung gehören neue Objekte, die mit der von bucket-owner-full-control vordefinierten ACL geschrieben werden, automatisch dem Bucket-Eigentümer und nicht dem Objekt-Writer. Alle anderen ACL-Verhaltensweisen bleiben bestehen. Damit alle Amazon-S3-PUT-Vorgänge die von bucket-owner-full-control vordefinierte ACL enthalten müssen, können Sie eine Bucket-Richtlinie hinzufügen, die nur Objekt-Uploads mit dieser ACL zulässt.

Alternativen zur Verwendung von ACLs

Neben einer Objekt-ACL gibt es noch andere Methoden, wie ein Objekt-Eigentümer Objekt-Berechtigungen verwalten kann:

  • Wenn das AWS-Konto, dem das Objekt gehört, auch Eigentümer des Buckets ist, kann es eine Bucket-Richtlinie schreiben, um die Objekt-Berechtigungen zu verwalten.

  • Wenn das AWS-Konto, das Eigentümer des Objekts ist, einem Benutzer in seinem Konto Berechtigungen erteilen will, kann es eine Benutzerrichtlinie verwenden.

  • Wenn Sie als Bucket-Eigentümer jedes Objekt in Ihrem Bucket automatisch besitzen und die volle Kontrolle über jedes Objekt in Ihrem Bucket haben möchten, können Sie die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership anwenden, um ACLs zu deaktivieren. Infolgedessen basiert die Zugriffskontrolle für Ihre Daten auf Richtlinien. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Verwendung einer Bucket-ACL

Der einzige empfohlene Anwendungsfall für Bucket-ACLs besteht darin, bestimmten AWS-Services wie dem awslogsdelivery-Amazon-CloudFront-Konto Berechtigungen zu erteilen. Wenn Sie eine Verteilung erstellen oder aktualisieren und die CloudFront-Protokollierung aktivieren, aktualisiert CloudFront die Bucket-ACL, um dem awslogsdelivery-Konto FULL_CONTROL-Berechtigungen zum Schreiben von Protokollen in Ihren Bucket zu erteilen. Weitere Informationen finden Sie unter Erforderliche Berechtigungen zum Konfigurieren der Standardprotokollierung und zum Zugreifen auf Ihre Protokolldateien im Amazon-CloudFront-Entwicklerhandbuch. Wenn der Bucket, der die Protokolle speichert, die erzwungene Einstellung des Bucket-Eigentümer für S3 Object Ownership verwendet, um ACLs zu deaktivieren, kann CloudFront keine Protokolle in den Bucket schreiben. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Verwendung einer Bucket-Richtlinie

Wenn ein AWS-Konto, dem ein Bucket gehört, Benutzern Berechtigungen in seinem Konto erteilen will, kann es eine Bucket-Richtlinie oder eine Benutzerrichtlinie verwenden. In den folgenden Szenarien müssen Sie eine Bucket-Richtlinie verwenden.

Sie möchten kontoübergreifende Berechtigungen für alle Amazon-S3-Berechtigungen verwalten

Sie können ACLs verwenden, um anderen Konten kontoübergreifende Berechtigungen zu gewähren. ACLs unterstützen jedoch nur einen endlichen Satz von Berechtigungen, die nicht alle Amazon-S3-Berechtigungen enthalten. Weitere Informationen finden Sie unter Welche Berechtigungen kann ich erteilen? Beispielsweise können Sie keine Berechtigungen für Bucket-Subressourcen erteilen. Weitere Informationen finden Sie unter Identity and Access Management in Amazon S3.

Sowohl Bucket- als auch Benutzerrichtlinien unterstützen die Erteilung der Berechtigung für alle Amazon-S3-Vorgänge. (Weitere Informationen finden Sie unter Amazon-S3-Aktionen.) Die Benutzerrichtlinien dienen jedoch der Verwaltung von Berechtigungen für Benutzer in Ihrem Konto. Für kontenübergreifende Berechtigungen für andere AWS-Konten oder Benutzer in einem anderen Konto müssen Sie eine Bucket-Richtlinie verwenden.

Verwendung einer Benutzerrichtlinie

Im Allgemeinen können Sie eine Benutzerrichtlinie oder eine Bucket-Richtlinie verwenden, um Berechtigungen zu verwalten. Sie können Berechtigungen verwalten, indem Sie Benutzer erstellen und Berechtigungen einzeln verwalten, indem Sie Richtlinien an Benutzer (oder Benutzergruppen) anhängen. Oder Sie stellen möglicherweise fest, dass ressourcenbasierte Richtlinien, z. B. eine Bucket-Richtlinie, besser für Ihr Szenario funktionieren.

Mit AWS Identity and Access Management (IAM) können Sie mehrere Benutzer innerhalb Ihres AWS-Konto erstellen und ihre Berechtigungen über Benutzerrichtlinien verwalten. Ein IAM-Benutzer muss Berechtigungen von dem übergeordneten Konto erhalten, zu dem er gehört, und von dem AWS-Konto, dem die Ressource gehört, auf die der Benutzer Zugriff erhalten möchte. Die Berechtigungen können folgt erteilt werden:

  • Berechtigung vom übergeordneten Konto – Das übergeordnete Konto kann seinem Benutzer Berechtigungen erteilen, indem es ihm eine Benutzerrichtlinie zuordnet.

  • Berechtigung vom Ressourceneigentümer – Der Ressourceneigentümer kann dem IAM-Benutzer (unter Verwendung einer Bucket-Richtlinie) oder dem übergeordneten Konto (unter Verwendung einer Bucket-Richtlinie, Bucket-ACL oder Objekt-ACL) Berechtigungen erteilen.

Das ist vergleichbar mit einem Kind, das mit einem Spielzeug spielen möchte, das jemand anderem gehört. Das Kind muss die Berechtigung von einem Elternteil erhalten, um mit dem Spielzeug zu spielen, als auch eine Berechtigung vom Eigentümer des Spielzeugs.

Weitere Informationen finden Sie unter Bucket-Richtlinien und Benutzerrichtlinien.

Berechtigungsdelegation

Wenn einem AWS-Konto eine Ressource gehört, kann es diese Berechtigungen einem anderen AWS-Konto erteilen. Dieses Konto kann diese Berechtigungen oder eine Untermenge davon an Benutzer in dem Konto delegieren. Dies wird auch als Berechtigungsdelegation bezeichnet. Ein Konto, das Berechtigungen von einem anderen Konto erhält, kann die Berechtigungen nicht kontenübergreifend an ein anderes AWS-Konto delegieren.

Wir empfehlen Ihnen, zunächst alle einführenden Themen zu lesen, die erklären, wie Sie den Zugriff auf Ihre Amazon-S3-Ressourcen verwalten, sowie alle zugehörigen Anleitungen. Weitere Informationen finden Sie unter Identity and Access Management in Amazon S3. Die folgenden Themen enthalten weitere Informationen über spezifische Zugriffsrichtlinienoptionen.