Zugriffskontrolllisten (ACL) – Übersicht - 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.

Zugriffskontrolllisten (ACL) – Übersicht

Amazon S3-Zugriffskontrolllisten (ACLs) ermöglichen Ihnen die Verwaltung des Bucket- und Objektzugriffs. Jedem Bucket und jedem Objekt ist eine ACL als Subressource zugeordnet. Sie definiert, welche AWS-Konten oder Gruppen einen Zugriff erhalten, und um welchen Zugriffstyp es sich handelt. Wenn eine Anfrage für eine Ressource eingeht, überprüft Amazon S3 die entsprechende ACL,um sicherzustellen, dass der Anforderer die erforderlichen Zugriffsberechtigungen besitzt.

Wenn Sie einen Bucket oder ein Objekt erstellen, erstellt Amazon S3 eine Standard-ACL, die dem Ressourcen-Eigentümer die volle Kontrolle über die Ressource erteilt. Dies ist in der folgenden Beispiel-Bucket-ACL gezeigt (die Standard-Objekt-ACL hat denselben Aufbau):

<?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>

Die Beispiel-ACL enthält ein Owner-Element, das den Eigentümer über die kanonische Benutzer-ID des AWS-Kontos identifiziert. Anweisungen zum Auffinden Ihrer kanonischen Benutzer-ID finden Sie unter Eine kanonische Benutzer-ID für ein AWS-Konto ermitteln. Das Grant-Element identifiziert den Empfänger (ein AWS-Konto oder eine vordefinierte Gruppe) und die erteilte Berechtigung. Diese Standard-ACL hat ein Grant-Element für den Eigentümer. Sie erteilen Berechtigungen, indem Sie Grant-Elemente hinzufügen, wobei jedes Recht den Empfänger und die Berechtigung identifiziert.

Anmerkung

Eine ACL kann bis zu 100 Rechte haben.

Wer ist ein Empfänger?

Ein Empfänger kann ein AWS-Konto sein, oder eine der vordefinierten Amazon S3-Gruppen. Sie erteilen einem AWS-Konto eine Berechtigung über die kanonische Benutzer-ID oder die E-Mail-Adresse Wenn Sie jedoch eine E-Mail-Adresse in Ihre Rechteerteilungsanfrage eintragen, findet Amazon S3 die kanonische Benutzer-ID für dieses Konto und fügt sie der ACL hinzu. Die resultierenden ACLs enthalten immer die kanonische Benutzer-ID für das AWS-Konto, nicht die E-Mail-Adresse des AWS-Kontos.

Wenn Sie Zugriffsrechte erteilen, geben Sie jeden Empfänger als Typ=Wert-Paar an, wobei der Typ einer der folgenden ist:

  • id – Wenn der angegebene Wert die kanonische Benutzer-ID eines AWS-Kontos ist

  • uri – Wenn Sie einer vordefinierten Gruppe Berechtigungen erteilen

  • emailAddress – Wenn der angegebene Wert die E-Mail-Adresse eines AWS-Kontos ist

Wichtig

Die Verwendung von E-Mail-Adressen zur Angabe eines Berechtigungsempfängers wird ausschließlich in den folgenden AWS-Regionen unterstützt:

  • USA Ost (Nord-Virginia)

  • USA West (Nordkalifornien)

  • USA West (Oregon)

  • Asien-Pazifik (Singapur)

  • Asien-Pazifik (Sydney)

  • Asien-Pazifik (Tokio)

  • Europa (Irland)

  • Südamerika (São Paulo)

Eine Liste aller unterstützten Amazon S3-Regionen und Endpunkte finden Sie unter Regionen und Endpunkte in der Allgemeinen AWS-Referenz.

Beispiel: E-Mail-Adresse

Der folgende x-amz-grant-read-Header gewährt beispielsweise den durch E-Mail-Adressen angegebenen AWS-Konten Berechtigungen zum Lesen von Objektdaten und ihren Metadaten:

x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
Warnung

Wenn Sie anderen AWS-Konten Zugriff auf Ihre Ressourcen erteilen, beachten Sie, dass die AWS-Konten ihre Berechtigungen an Benutzer unter ihren Konten delegieren können. Man spricht auch von einem kontenübergreifenden Zugriff. Weitere Informationen zum kontenübergreifenden Zugriff finden Sie unter Erstellen einer Rolle, um Berechtigungen an einen IAM-Benutzer zu delegieren im IAM-Benutzerhandbuch.

Eine kanonische Benutzer-ID für ein AWS-Konto ermitteln

Die kanonische Benutzer-ID ist Ihrem AWS-Konto zugeordnet. Diese ID besteht aus einer langen Zeichenfolge, wie z. B. 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be. Informationen darüber, wo Sie die kanonische Benutzer-ID für Ihr Konto finden, finden Sie unter Wie Sie die kanonische Benutzer-ID für Ihr AWS-Konto finden.

Sie können die kanonische Benutzer-IDs eines AWS-Kontos auch ermitteln, indem Sie die ACL eines Buckets oder eines Objekts lesen, für den bzw. das das AWS-Konto Zugriffsberechtigungen besitzt. Wenn ein einzelnes AWS-Konto Berechtigungen durch eine Rechteerteilungsanfrage erhält, wird der ACL ein Rechteerteilungseintrag mit der kanonischen Benutzer-ID des Kontos hinzugefügt.

Anmerkung

Falls Sie Ihren Bucket öffentlich machen (nicht empfohlen), können beliebige, nicht authentifizierte Benutzer Objekte in den Bucket hochladen. Diese anonymen Benutzer haben kein AWS-Konto. Wenn ein anonymer Benutzer ein Objekt in Ihren Bucket hochlädt, fügt Amazon S3 eine spezielle kanonische Benutzer-ID (65a011a29cdf8ec533ec3d1ccaae921c) als Objekt-Eigentümer in der ACL hinzu. Weitere Informationen finden Sie unter Amazon S3-Bucket- und Objekt-Eigentümerschaft.

Vordefinierte Gruppen in Amazon S3

Amazon S3 besitzt mehrere vordefinierte Gruppen. Wenn Sie einem Konto Zugriff auf eine Gruppe erteilen, geben Sie eine unserer URIs statt einer kanonischen Benutzer-ID an. Wir stellen die folgenden vordefinierten Gruppen bereit:

  • Gruppe „Authentifizierte Benutzer“ – Repräsentiert durch http://acs.amazonaws.com/groups/global/AuthenticatedUsers.

    Diese Gruppe stellt alle AWS-Konten dar. Die Zugriffsberechtigung für diese Gruppe gestattet jedem AWS-Konto, auf die Ressource zuzugreifen. Alle Anfragen müssen jedoch signiert (authentifiziert) sein.

    Warnung

    Wenn Sie einen Zugriff auf die Gruppe Authentifizierte Benutzer erteilen, hat jeder AWS-authentifizierte Benutzer weltweit Zugriff auf Ihre Ressource.

  • Gruppe „Alle Benutzer“ – Repräsentiert durch http://acs.amazonaws.com/groups/global/AllUsers.

    Die Zugriffsberechtigung für diese Gruppe gestattet jedem, auf die Ressource zuzugreifen. Die Anfragen können signiert (authentifiziert) oder nicht signiert (anonym) sein. Nicht signierte Anfragen lassen den Authentifizierungs-Header in der Anfrage weg.

    Warnung

    Wir empfehlen dringend, dass Sie nie der Gruppe Alle Benutzer WRITE-, WRITE_ACP- oder FULL_CONTROL-Berechtigungen erteilen. Beispielsweise erlauben WRITE-Berechtigungen jedem, Objekte in Ihrem Bucket zu speichern, was dann Ihnen in Rechnung gestellt wird. Außerdem können andere Objekte löschen, die Sie vielleicht behalten wollen. Weitere Informationen zu diesen Berechtigungen finden Sie im folgenden Abschnitt Welche Berechtigungen kann ich erteilen?.

  • Gruppe „Protokollbereitstellung“ – Repräsentiert durch http://acs.amazonaws.com/groups/s3/LogDelivery.

    Die WRITE-Berechtigung für einen Bucket gestattet dieser Gruppe, Serverzugriff-Protokolle (siehe Protokollieren von Anfragen mit Server-Zugriffsprotokollierung) in den Bucket zu schreiben.

Anmerkung

Bei Verwendung von ACLs kann ein Empfänger ein AWS-Konto sein, oder eine der vordefinierten Amazon S3-Gruppen. Der Empfänger kann jedoch kein IAM-Benutzer sein. Weitere Informationen zu AWS-Benutzern und Berechtigungen in IAM finden Sie unter Verwendung von AWS Identity and Access Management.

Welche Berechtigungen kann ich erteilen?

Die folgende Tabelle listet die Berechtigungen auf, die Amazon S3 in einer ACL unterstützt. Die Menge der ACL-Berechtigungen ist für eine Objekt-ACL und eine Bucket-ACL gleich. Abhängig vom Kontext (Bucket-ACL oder Objekt-ACL) erteilen jedoch diese ACL-Berechtigungen die Berechtigungen für spezifische Buckets oder Objektoperationen. Die Tabelle listet die Berechtigungen auf und beschreibt, was sie im Kontext der Objekte und Buckets bedeuten.

ACL-Berechtigungen
Berechtigung Bei Rechteerteilung für einen Bucket Bei Rechteerteilung für ein Objekt
READ Gestattet dem Empfänger, die Objekte im Bucket aufzulisten Gestattet dem Empfänger, die Objektedaten und seine Metadaten zu lesen
WRITE Gestattet dem Empfänger, beliebige Objekte im Bucket zu erstellen, zu überschreiben und zu löschen Nicht zutreffend
READ_ACP Gestattet dem Empfänger, die Bucket-ACL zu lesen Gestattet dem Empfänger, die Objekt-ACL zu lesen
WRITE_ACP Gestattet dem Empfänger, die ACL für den relevanten Bucket zu schreiben Gestattet dem Empfänger, die ACL für das relevante Objekt zu schreiben
FULL_CONTROL Gestattet dem Empfänger, die READ-, WRITE-, READ_ACP- und WRITE_ACP-Berechtigungen für den Bucket Gestattet dem Empfänger, die READ-, WRITE-, READ_ACP- und WRITE_ACPACL-Berechtigungen für das Objekt
Warnung

Seien Sie beim Gewähren von Zugriffsberechtigungen auf Ihre S3-Buckets und -Objekte vorsichtig. Beispielsweise kann das Berechtigungsempfänger nach dem Gewähren des WRITE-Zugriffs auf einen Bucket beliebige Objekte im Bucket erstellen, überschreiben und löschen. Wir empfehlen dringend, dass Sie vor dem Erteilen von Berechtigungen diesen gesamten Zugriffskontrolllisten (ACL) – Übersicht Abschnitt lesen.

Zuordnung der ACL-Berechtigungen und Zugriffsrichtlinienberechtigungen

Wie in der obigen Tabelle gezeigt, erteilt eine ACL nur eine endliche Menge an Berechtigungen im Vergleich zu der Anzahl an Berechtigungen, die Sie in einer Zugriffsrichtlinie festlegen können (siehe Amazon S3-Aktionen). Jede dieser Berechtigungen erlaubt einen oder mehrere Amazon S3-Operationen.

Die folgende Tabelle zeigt, wie die verschiedenen ACL-Berechtigungen auf die entsprechenden Zugriffsrichtlinienberechtigungen abgebildet werden. Wie Sie sehen, erteilt die Zugriffsrichtlinie mehr Berechtigungen als eine ACL. Sie verwenden ACLs in erster Linie, um grundlegende Lese-/Schreibberechtigungen zu erteilen, ähnlich den Berechtigungen in einem Dateisystem. Weitere Informationen dazu, wann Sie eine ACL verwenden sollten, finden Sie unter Richtlinien für Zugriffsrichtlinien.

ACL-Berechtigung Entsprechende Zugriffsrichtlinienberechtigungen, wenn einem Bucket die ACL-Berechtigung erteilt wurde Entsprechende Zugriffsrichtlinienberechtigungen, wenn einem Objekt die ACL-Berechtigung erteilt wurde
READ s3:ListBucket, s3:ListBucketVersions, und s3:ListBucketMultipartUploads s3:GetObject, s3:GetObjectVersion, und s3:GetObjectTorrent
WRITE

s3:PutObject und s3:DeleteObject.

Wenn der Empfänger der Bucket-Eigentümer ist, gestattet die Erteilung der WRITE-Berechtigung in einer Bucket-ACL außerdem, dass die s3:DeleteObjectVersion-Aktion für jede Version in diesem Bucket ausgeführt wird.

Nicht zutreffend
READ_ACP s3:GetBucketAcl s3:GetObjectAcl und s3:GetObjectVersionAcl
WRITE_ACP s3:PutBucketAcl s3:PutObjectAcl und s3:PutObjectVersionAcl
FULL_CONTROL Dies ist gleichbedeutend mit der Erteilung der READ-, WRITE-, READ_ACP- und WRITE_ACP-ACL-Berechtigungen. Dementsprechend wird diese ACL-Berechtigung auf eine Kombination entsprechender Zugriffsrichtlinienberechtigungen abgebildet. Dies ist gleichbedeutend mit der Erteilung der READ-, READ_ACP- und WRITE_ACP-ACL-Berechtigungen. Dementsprechend wird diese ACL-Berechtigung auf eine Kombination entsprechender Zugriffsrichtlinienberechtigungen abgebildet.

Bedingungsschlüssel

Wenn Sie Zugriffsrichtlinienberechtigungen erteilen, können Sie Bedingungsschlüssel verwenden, um den Wert für die ACL für ein Objekt mithilfe einer Bucket-Richtlinie einzuschränken. Die folgenden Kontextschlüssel entsprechen ACLs. Sie können diese Kontextschlüssel verwenden, um die Verwendung einer bestimmten ACL in einer Anforderung durchzusetzen:

  • s3:x-amz-grant-read - Erfordert Lesezugriff.

  • s3:x-amz-grant-write - Erfordert Schreibzugriff.

  • s3:x-amz-grant-read-acp - Erfordert Lesezugriff auf die Bucket-ACL.

  • s3:x-amz-grant-write-acp - Erfordert Schreibzugriff auf die Bucket-ACL.

  • s3:x-amz-grant-full-control - Erfordert vollständige Kontrolle.

  • s3:x-amz-acl - Erfordert eine Vordefinierte ACL.

Beispielrichtlinien, die ACL-spezifische Header enthalten, finden Sie unter Beispiel 1: Erteilen der s3:PutObject-Berechtigung mit einer Bedingung, die erfordert, dass der Bucket-Eigentümer die vollständige Kontrolle erhält. Die vollständige Liste der Amazon S3-spezifischen Bedingungsschlüssel finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3.

Beispiel-ACL

Die folgende Beispiel-ACL für einen Bucket identifiziert den Ressourcen-Eigentümer und eine Menge von Rechten. Das Format ist die XML-Darstellung einer ACL in der Amazon S3-REST API. Der Bucket-Eigentümer hat die FULL_CONTROL über die Ressource. Darüber hinaus zeigt die ACL, wie Berechtigungen für eine Ressource an zwei AWS-Konten erteilt werden, identifiziert durch eine kanonische Benutzer-ID, und an zwei der vordefinierten Amazon S3-Gruppen, wie im vorigen Abschnitt beschrieben.

<?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>display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>Owner-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>user1-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>user2-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>READ</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

Vordefinierte ACL

Amazon S3 unterstützt einen Satz vordefinierter Rechte, auch als vordefinierte ACLs bezeichnet. Jede vordefinierte ACL hat eine vordefinierte Menge aus Empfängern und Berechtigungen. Die folgende Tabelle listet die Menge der vordefinierten ACLs und der zugehörigen vordefinierten Rechte auf.

Vordefinierte ACL Gilt für Der ACL hinzugefügte Berechtigungen
private Bucket und Objekt Der Eigentümer erhält FULL_CONTROL. Niemand anderer hat Zugriffsrechte (Standard).
public-read Bucket und Objekt Der Eigentümer erhält FULL_CONTROL. Die AllUsers-Gruppe (siehe Wer ist ein Empfänger?) erhält READ-Zugriff.
public-read-write Bucket und Objekt Der Eigentümer erhält FULL_CONTROL. Die AllUsers-Gruppe erhält READ- und WRITE-Zugriff. Eine solche Erteilung von Rechten für einen Bucket wird im Allgemeinen nicht empfohlen.
aws-exec-read Bucket und Objekt Der Eigentümer erhält FULL_CONTROL. Amazon EC2; erhält GET-Zugriff auf ein READ, ein Amazon Machine Image (AMI)-Paket von Amazon S3.
authenticated-read Bucket und Objekt Der Eigentümer erhält FULL_CONTROL. Die AuthenticatedUsers-Gruppe erhält READ-Zugriff.
bucket-owner-read Objekt Der Objekt-Eigentümer erhält FULL_CONTROL. Der Bucket-Eigentümer erhält READ-Zugriff. Wenn Sie diese vordefinierte ACL beim Erstellen eines Buckets angeben, ignoriert Amazon S3 sie.
bucket-owner-full-control Objekt Sowohl der Objekt-Eigentümer, als auch der Bucket-Eigentümer erhalten FULL_CONTROL für das Objekt. Wenn Sie diese vordefinierte ACL beim Erstellen eines Buckets angeben, ignoriert Amazon S3 sie.
log-delivery-write Bucket Die LogDelivery-Gruppe erhält WRITE- und READ_ACP-Berechtigungen für den Bucket. Weitere Informationen über Protokolle finden Sie unter (Protokollieren von Anfragen mit Server-Zugriffsprotokollierung).
Anmerkung

Sie können auch in Ihrer Anfrage nur eine dieser vordefinierten ACLs angeben.

Sie beben mit dem Anfrage-Header x-amz-acl eine vordefinierte ACL in Ihrer Anfrage an. Wenn Amazon S3 eine Anfrage mit einer vordefinierten ACL erhält, fügt es die vordefinierten Rechte der ACL der Ressource hinzu.