Konfigurieren von ACLs - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren von ACLs

In diesem Abschnitt wird die Verwaltung von Zugriffsberechtigungen für S3-Buckets und Objekten unter Verwendung von Zugriffskontrolllisten (ACLs) beschrieben. Sie können Ihrer Ressourcen-ACL mithilfe der AWS Management Console, der AWS Command Line Interface (CLI), der REST-API oder AWS SDKs Erteilungen hinzufügen.

Bucket- und Objekt-Berechtigungen sind voneinander unabhängig. Ein Objekt erbt nicht die Berechtigungen von seinem Bucket. Wenn Sie beispielsweise einen Bucket erstellen und einem Benutzer Schreibzugriff erteilen, können Sie auf die Objekte dieses Benutzers nicht zugreifen, wenn Ihnen der Benutzer nicht explizit Zugriff erteilt.

Sie können anderen AWS-Konto Benutzern oder vordefinierten Gruppen Berechtigungen erteilen. Der Benutzer oder die Gruppe, dem bzw. der Sie Berechtigungen erteilen, wird als der Berechtigungsempfänger bezeichnet. Standardmäßig hat der Eigentümer, nämlich das AWS-Konto , das den Bucket erstellt hat, alle Berechtigungen.

Für jede Berechtigung, die Sie für einen Benutzer oder eine Gruppe erteilen, wird der dem Bucket zugeordneten ACL ein Eintrag hinzugefügt. Die ACL listet die erteilten Berechtigungen auf, die den Berechtigungsempfänger und die erteilte Berechtigung identifizieren.

S3 Object Ownership ist eine Amazon-S3-Einstellung auf Bucket-Ebene, mit der Sie sowohl die Eigentümerschaft von den Objekten steuern können, die in Ihre Buckets hochgeladen werden, als auch ACLs deaktivieren oder aktivieren können. Standardmäßig ist die Objekteigentümerschaft auf die Einstellung „Vom Bucket-Eigentümer erzwungen“ festgelegt und alle ACLs sind deaktiviert. Wenn ACLs deaktiviert sind, besitzt der Bucket-Eigentümer alle Objekte im Bucket und verwaltet den Zugriff darauf ausschließlich mithilfe von Zugriffsverwaltungsrichtlinien.

Die meisten modernen Anwendungsfälle in Amazon S3 erfordern keine ACLs mehr. Wir empfehlen Ihnen, ACLs deaktiviert zu lassen, außer unter ungewöhnlichen Umständen, in denen Sie den Zugriff für jedes Objekt einzeln steuern müssen. Wenn ACLs deaktiviert sind, können Sie mithilfe von Richtlinien den Zugriff auf alle Objekte in Ihrem Bucket steuern, unabhängig davon, wer die Objekte in Ihren Bucket hochgeladen hat. 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 Einstellung „Vom Bucket-Eigentümer erzwungen“ für S3 Object Ownership verwendet, müssen Sie Richtlinien verwenden, um Zugriff auf Ihren Bucket und die darin enthaltenen Objekte zu gewähren. Wenn die Einstellung „Vom Bucket-Eigentümer erzwungen“ aktiviert ist, schlagen Anforderungen zum Festlegen von Zugriffssteuerungslisten (ACLs) oder zum Aktualisieren von ACLs fehl und geben den Fehlercode AccessControlListNotSupported zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

Warnung

Es wird dringend empfohlen, Schreibzugriff für die Gruppen Jeder (öffentlicher Zugriff) oder Authentifizierte Benutzer (alle AWS authentifizierten Benutzer) zu gewähren. Weitere Informationen zu den Auswirkungen eines Schreibzugriffs für diese Gruppen finden Sie unter Vordefinierte Gruppen in Amazon S3.

Die Konsole zeigt kombinierte Zugriffsberechtigungen für doppelte Berechtigungsempfänger an. Um die vollständige Liste der ACLs anzuzeigen, verwenden Sie die Amazon S3-REST-API AWS CLI oder - AWS SDKs.

Die folgende Tabelle zeigt die ACL-Berechtigungen, die Sie für Buckets in der Amazon-S3-Konsole konfigurieren können.

Amazon-S3-Konsolen-ACL-Berechtigungen für Buckets
Konsolenberechtigung ACL-Berechtigung Zugriff
Objekte – Auflisten READ Gestattet dem Empfänger, die Objekte im Bucket aufzulisten.
Objekte – Schreiben WRITE Gestattet dem Empfänger, neue Objekte im Bucket zu erstellen. Für die Bucket- und Objekteigentümer vorhandener Objekte können auch Löschungen und Überschreibungen dieser Objekte ermöglicht werden.
Bucket-ACL – Lesen READ_ACP Gestattet dem Empfänger, die Bucket-ACL zu lesen.
Bucket-ACL – Schreiben WRITE_ACP Gestattet dem Empfänger, die ACL für den relevanten Bucket zu schreiben.
Jeder (öffentlicher Zugang): Objekte – Auflisten READ Gewährt öffentlichen Lesezugriff für die Objekte im Bucket. Wenn Sie jedem (öffentlichen Zugriff) Listenzugriff gewähren, kann jeder Benutzer auf der Welt auf die Objekte im Bucket zugreifen.
Jeder (öffentlicher Zugriff): Bucket-ACL – Lesen READ_ACP Gewährt öffentlichen Lesezugriff für die Bucket-ACL. Wenn Sie jedem (öffentlicher Zugriff) Lesezugriff gewähren, kann jeder Benutzer auf der Welt auf die Bucket-ACL zugreifen.

Weitere Informationen zu ACL-Berechtigungen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

Wichtig

Wenn Ihr Bucket die Einstellung „Vom Bucket-Besitzer erzwungen“ für S3 Object Ownership verwendet, müssen Sie Richtlinien für die Gewährung des Zugriffs auf Ihren Bucket und die enthaltenen Objekte verwenden. Wenn die Einstellung „Vom Bucket-Eigentümer erzwungen“ aktiviert ist, schlagen Anforderungen zum Festlegen von Zugriffssteuerungslisten (ACLs) oder zum Aktualisieren von ACLs fehl und geben den Fehlercode AccessControlListNotSupported zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

Festlegen von ACL-Berechtigungen für einen Bucket
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Liste Buckets den Namen des Buckets aus, für den Sie Berechtigungen festlegen möchten.

  3. Wählen Sie Permissions (Berechtigungen).

  4. Wählen Sie unter Access Control List Bearbeiten.

    Sie können die folgenden ACL-Berechtigungen für den Bucket bearbeiten:

    Objekte
    • Auflisten – Gestattet einem Empfänger, die Objekte im Bucket aufzulisten.

    • Schreiben — Ermöglicht es dem Berechtigungsempfänger, neue Objekte im Bucket zu erstellen. Für die Bucket- und Objekteigentümer vorhandener Objekte können auch Löschungen und Überschreibungen dieser Objekte ermöglicht werden.

      In der S3-Konsole können Sie nur Schreibzugriff auf die S3-Protokollbereitstellungsgruppe und den Bucket-Eigentümer (Ihr AWS-Konto) gewähren. Wir empfehlen dringend, anderen Empfängern keinen Schreibzugriff zu gewähren. Wenn Sie jedoch Schreibzugriff gewähren müssen, können Sie die AWS CLI, - AWS SDKs oder die REST-API verwenden.

    Bucket-ACL
    • Lesen – Gestattet dem Empfänger, die Bucket-ACL zu lesen.

    • Schreiben – Gestattet dem Empfänger, die ACL für den relevanten Bucket zu schreiben.

  5. Um die Berechtigungen des Bucket-Eigentümers zu ändern, löschen oder wählen Sie neben dem Bucket-Eigentümer (Ihr AWS-Konto) die folgenden ACL-Berechtigungen aus:

    • ObjekteAuflisten oder Schreiben

    • Bucket-ACLLesen oder Schreiben

    Der Eigentümer bezieht sich auf die Root-Benutzer des AWS-Kontos, nicht auf einen AWS Identity and Access Management IAM-Benutzer. Weitere Informationen zum Root-Benutzer finden Sie unter Der Root-Benutzer des AWS-Kontos im IAM-Benutzerhandbuch.

  6. Um Berechtigungen für die Allgemeinheit (alle im Internet) zu erteilen oder rückgängig zu machen, deaktivieren oder wählen Sie neben Jeder (öffentlicher Zugriff) die folgenden ACL-Berechtigungen aus:

    • ObjekteAuflisten

    • Bucket-ACLLesen

    Warnung

    Seien Sie vorsichtig, wenn Sie der Gruppe Everyone (Jeder) öffentlichen Zugriff auf Ihren S3-Bucket gewähren. Wenn Sie dieser Gruppe anonymen Zugriff gewähren, kann jeder auf der ganzen Welt auf Ihren Bucket zugreifen. Wir empfehlen dringend, nie einen öffentlichen Schreibzugriff auf Ihren S3-Bucket zu gewähren.

  7. Um Berechtigungen für Personen mit einem zu erteilen oder rückgängig zu machen AWS-Konto, löschen oder wählen Sie neben der Gruppe Authentifizierte Benutzer (alle Benutzer mit einem AWS-Konto) die folgenden ACL-Berechtigungen aus:

    • ObjekteAuflisten

    • Bucket-ACLLesen

  8. Um Amazon S3 Berechtigungen zum Schreiben von Server-Zugriffsprotokollen in den Bucket zu erteilen oder rückgängig zu machen, deaktivieren oder wählen Sie unter der S3-Protokoll-Bereitstellungsgruppe die folgenden ACL-Berechtigungen aus:

    • ObjekteAuflisten oder Schreiben

    • Bucket-ACLLesen oder Schreiben

      Wenn ein Bucket als Ziel-Bucket für Zugriffsprotokolle eingerichtet ist, müssen die Bucket-Berechtigungen der Gruppe Log Delivery (Protokollbereitstellung) Schreibzugriff auf den Bucket erteilen. Wenn Sie die Server-Zugriffsprotokollierung für einen Bucket aktivieren, erteilt die Amazon-S3-Konsole der Gruppe Log Delivery (Protokollbereitstellung) Schreibzugriff auf den Ziel-Bucket, den Sie für den Empfang der Protokolle ausgewählt haben. Weitere Informationen zu Server-Zugriffsprotokollen finden Sie unter Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung.

  9. Gehen Sie wie folgt vor AWS-Konto, um Zugriff auf ein anderes zu gewähren:

    1. Wählen Sie Empfänger hinzufügen.

    2. Geben Sie im Feld Empfänger die kanonische ID des anderen AWS-Konto ein.

    3. Wählen Sie aus den folgenden ACL-Berechtigungen aus:

      • ObjekteAuflisten oder Schreiben

      • Bucket-ACLLesen oder Schreiben

    Warnung

    Wenn Sie anderen AWS-Konten Zugriff auf Ihre -Ressourcen gewähren, beachten Sie, dass die ihre Berechtigungen an Benutzer unter ihren Konten delegieren AWS-Konten kann. 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.

  10. Um den Zugriff auf ein anderes zu entfernen AWS-Konto, wählen Sie unter Zugriff für andere die AWS-Konten Option Entfernen aus.

  11. Klicken Sie auf Save changes (Änderungen speichern), um die Änderungen zu speichern.

Die Konsole zeigt kombinierte Zugriffsberechtigungen für doppelte Berechtigungsempfänger an. Um die vollständige Liste der ACLs anzuzeigen, verwenden Sie die Amazon S3-REST-API AWS CLI oder - AWS SDKs. Die folgende Tabelle zeigt die ACL-Berechtigungen, die Sie für Objekte in der Amazon-S3-Konsole konfigurieren können.

Amazon-S3-Konsolen-ACL-Berechtigungen für Objekte
Konsolenberechtigung ACL-Berechtigung Zugriff
Objekt – Lesen READ Gestattet dem Empfänger, die Objektedaten und seine Metadaten zu lesen.
Objekt-ACL – Lesen READ_ACP Gestattet dem Empfänger, die Objekt-ACL zu lesen.
Objekt-ACL – Schreiben WRITE_ACP Gestattet dem Empfänger, die ACL für das relevante Objekt zu schreiben

Weitere Informationen zu ACL-Berechtigungen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

Wichtig

Wenn Ihr Bucket die Einstellung „Vom Bucket-Besitzer erzwungen“ für S3 Object Ownership verwendet, müssen Sie Richtlinien für die Gewährung des Zugriffs auf Ihren Bucket und die enthaltenen Objekte verwenden. Wenn die Einstellung „Vom Bucket-Eigentümer erzwungen“ aktiviert ist, schlagen Anforderungen zum Festlegen von Zugriffssteuerungslisten (ACLs) oder zum Aktualisieren von ACLs fehl und geben den Fehlercode AccessControlListNotSupported zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

ACL-Berechtigungen für ein Objekt festlegen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Liste Buckets den Namen des Buckets aus, der das Objekt enthält.

  3. Wählen Sie in der Liste Objekte den Namen des Objekts aus, für das Sie Berechtigungen festlegen möchten.

  4. Wählen Sie Permissions (Berechtigungen).

  5. Wählen Sie unter Access Control List (ACL) die Option Bearbeiten.

    Sie können die folgenden ACL-Berechtigungen für das Objekt bearbeiten:

    Object
    • Lesen – Gestattet dem Empfänger, die Objektedaten und seine Metadaten zu lesen.

    Objekt-ACL
    • Lesen – Gestattet dem Empfänger, die Objekt-ACL zu lesen.

    • Schreiben – Gestattet dem Empfänger, die ACL für das relevante Objekt zu schreiben. In der S3-Konsole können Sie nur dem Bucket-Eigentümer (Ihrem ) Schreibzugriff gewähren AWS-Konto. Wir empfehlen dringend, anderen Empfängern keinen Schreibzugriff zu gewähren. Wenn Sie jedoch Schreibzugriff gewähren müssen, können Sie die AWS CLI, AWS SDKs oder die REST-API verwenden.

  6. Sie können Zugriffsberechtigungen von Objekten für Folgendes verwalten:

    1. Zugriff für den Besitzer des Objekts

      Der Eigentümer bezieht sich auf die Root-Benutzer des AWS-Kontos und nicht auf einen AWS Identity and Access Management IAM-Benutzer. Weitere Informationen zum Root-Benutzer finden Sie unter Der Root-Benutzer des AWS-Kontos im IAM-Benutzerhandbuch.

      Um die Objektzugriffsberechtigungen des Besitzers zu ändern, wählen Sie unter Zugriff für Objekteigentümer die Option Ihr AWS Konto (Besitzer) aus.

      Aktivieren Sie die Kontrollkästchen für die Berechtigungen, die geändert werden sollen. Wählen Sie dann Save (Speichern) aus.

    2. Zugriff für andere AWS-Konten

      Um einem - AWS Benutzer aus einem anderen Berechtigungen zu erteilen AWS-Konto, wählen Sie unter Zugriff für andere die AWS-Konten Option Konto hinzufügen aus. Geben Sie im Feld ID eingeben die kanonische ID des AWS Benutzers ein, dem Sie Objektberechtigungen erteilen möchten. Informationen zur Suche nach einer kanonischen ID finden Sie unter Ihre AWS-Konto -Kennungen in der Allgemeine Amazon Web Services-Referenz. Sie können bis zu 99 Benutzer hinzufügen.

      Aktivieren Sie die Kontrollkästchen für die Berechtigungen, die dem Benutzer gewährt werden sollen. Wählen Sie dann Save (Speichern) aus. Um Informationen über die Berechtigungen anzuzeigen, wählen Sie die Hilfesymbole aus.

    3. Öffentlicher Zugriff

      Um der allgemeinen Öffentlichkeit (jedem Benutzer auf der ganzen Welt) Zugriff auf Ihr Objekt zu gewähren, wählen Sie unter Public access (Öffentlicher Zugriff) Everyone (Jeder) aus. Die Erteilung öffentlicher Zugriffsberechtigungen bedeutet, dass jeder Benutzer auf der ganzen Welt auf das Objekt zugreifen kann.

      Aktivieren Sie die Kontrollkästchen für die Berechtigungen, die erteilt werden sollen. Wählen Sie dann Save (Speichern) aus.

      Warnung
      • Seien Sie vorsichtig, wenn Sie der Gruppe Everyone (Jeder) anonymen Zugriff auf Ihre Amazon-S3-Objekte gewähren. Wenn Sie dieser Gruppe Zugriff gewähren, kann jeder auf der ganzen Welt auf Ihr Objekt zugreifen. Wenn Sie jedem Zugriff gewähren müssen, wird nachdrücklich empfohlen, dass Sie nur Berechtigungen für Read objects (Objekte lesen) gewähren.

      • Wir empfehlen nachdrücklich, der Gruppe Everyone (Jeder) keine Schreibberechtigungen für Objekte zu erteilen. Dadurch können alle Benutzer die ACL-Berechtigungen für das Objekt überschreiben.

Dieser Abschnitt enthält Beispiele, wie Access-Control-List(ACL)-Berechtigungen für Buckets und Objekte konfiguriert werden.

Wichtig

Wenn Ihr Bucket die Einstellung „Vom Bucket-Besitzer erzwungen“ für S3 Object Ownership verwendet, müssen Sie Richtlinien für die Gewährung des Zugriffs auf Ihren Bucket und die enthaltenen Objekte verwenden. Wenn die Einstellung „Vom Bucket-Eigentümer erzwungen“ aktiviert ist, schlagen Anforderungen zum Festlegen von Zugriffssteuerungslisten (ACLs) oder zum Aktualisieren von ACLs fehl und geben den Fehlercode AccessControlListNotSupported zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

Java

Dieser Abschnitt enthält Beispiele, wie Access-Control-List(ACL)-Berechtigungen für Buckets und Objekte konfiguriert werden. Das erste Beispiel erstellt einen Bucket mit einer vorgefertigten ACL (siehe Vordefinierte ACL), erstellt eine Liste benutzerdefinierter Berechtigungen und ersetzt die vorgefertigte ACL durch eine ACL mit den benutzerdefinierten Berechtigungen. Das zweite Beispiel veranschaulicht, wie Sie eine ACL mit der Methode AccessControlList.grantPermission() abändern.

Beispiel Erstellen Sie einen Bucket und geben Sie eine vordefinierte ACL an, die der S3-Protokoll-Bereitstellungsgruppe die Berechtigung erteilt

Dieses Beispiel erstellt einen Bucket. In der Anfrage gibt das Beispiel eine vorgefertigte ACL an, die die Protokoll-Bereitstellungsgruppe zum Schreiben von Protokollen in den Bucket berechtigt.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.ArrayList; public class CreateBucketWithACL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String userEmailForReadPermission = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Create a bucket with a canned ACL. This ACL will be replaced by the // setBucketAcl() // calls below. It is included here for demonstration purposes. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName()) .withCannedAcl(CannedAccessControlList.LogDeliveryWrite); s3Client.createBucket(createBucketRequest); // Create a collection of grants to add to the bucket. ArrayList<Grant> grantCollection = new ArrayList<Grant>(); // Grant the account owner full control. Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl); grantCollection.add(grant1); // Grant the LogDelivery group permission to write to the bucket. Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write); grantCollection.add(grant2); // Save grants by replacing all current ACL grants with the two we just created. AccessControlList bucketAcl = new AccessControlList(); bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0])); s3Client.setBucketAcl(bucketName, bucketAcl); // Retrieve the bucket's ACL, add another grant, and then save the new ACL. AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName); Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read); newBucketAcl.grantAllPermissions(grant3); s3Client.setBucketAcl(bucketName, newBucketAcl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Beispiel Aktualisieren der ACL für ein bestehendes Objekt

Dieses Beispiel aktualisiert die ACL für ein Objekt. Das Beispiel führt die folgenden Aufgaben durch:

  • Ruft die ACL eines Objekts ab

  • Löscht die ACL durch Entfernen aller vorhandenen Berechtigungen

  • Fügt zwei Berechtigungen hinzu: Vollzugriff für den Eigentümer und WRITE_ACP (siehe Welche Berechtigungen kann ich erteilen?) für einen anhand einer E-Mail-Adresse identifizierten Benutzer

  • Speichert die ACL im Objekt

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.CanonicalGrantee; import com.amazonaws.services.s3.model.EmailAddressGrantee; import com.amazonaws.services.s3.model.Permission; import java.io.IOException; public class ModifyACLExistingObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; String emailGrantee = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get the existing object ACL that we want to modify. AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName); // Clear the existing list of grants. acl.getGrantsAsList().clear(); // Grant a sample set of permissions, using the existing ACL owner for Full // Control permissions. acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl); acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp); // Save the modified ACL back to the object. s3Client.setObjectAcl(bucketName, keyName, acl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET
Beispiel Erstellen Sie einen Bucket und geben Sie eine vordefinierte ACL an, die der S3-Protokoll-Bereitstellungsgruppe die Berechtigung erteilt

Dieses C#-Beispiel erstellt einen Bucket. In der Anfrage gibt der Code auch eine vorgefertigte ACL an, die die Protokoll-Bereitstellungsgruppe zum Schreiben der Protokolle in den Bucket berechtigt.

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Ausführen der .NET-Codebeispiele für Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingBucketACLTest { private const string newBucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateBucketUseCannedACLAsync().Wait(); } private static async Task CreateBucketUseCannedACLAsync() { try { // Add bucket (specify canned ACL). PutBucketRequest putBucketRequest = new PutBucketRequest() { BucketName = newBucketName, BucketRegion = S3Region.EUW1, // S3Region.US, // Add canned ACL. CannedACL = S3CannedACL.LogDeliveryWrite }; PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest); // Retrieve bucket ACL. GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest { BucketName = newBucketName }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }
Beispiel Aktualisieren der ACL für ein bestehendes Objekt

Dieses C#-Beispiel aktualisiert die ACL für ein vorhandenes Objekt. Das Beispiel führt die folgenden Aufgaben durch:

  • Ruft die ACL eines Objekts ab.

  • Löscht die ACL durch Entfernen aller vorhandenen Berechtigungen.

  • Fügt zwei Berechtigungen hinzu: Vollzugriff für den Eigentümer und WRITE_ACP für einen anhand einer E-Mail-Adresse identifizierten Benutzer.

  • Speichert die ACL durch Senden einer PutAcl-Anfrage.

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Ausführen der .NET-Codebeispiele für Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingObjectACLTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key name ***"; private const string emailAddress = "*** email address ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); TestObjectACLTestAsync().Wait(); } private static async Task TestObjectACLTestAsync() { try { // Retrieve the ACL for the object. GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest { BucketName = bucketName, Key = keyName }); S3AccessControlList acl = aclResponse.AccessControlList; // Retrieve the owner (we use this to re-add permissions after we clear the ACL). Owner owner = acl.Owner; // Clear existing grants. acl.Grants.Clear(); // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions). S3Grant fullControlGrant = new S3Grant { Grantee = new S3Grantee { CanonicalUser = owner.Id }, Permission = S3Permission.FULL_CONTROL }; // Describe the grant for the permission using an email address. S3Grant grantUsingEmail = new S3Grant { Grantee = new S3Grantee { EmailAddress = emailAddress }, Permission = S3Permission.WRITE_ACP }; acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail }); // Set a new ACL. PutACLResponse response = await client.PutACLAsync(new PutACLRequest { BucketName = bucketName, Key = keyName, AccessControlList = acl }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

Amazon-S3-APIs ermöglichen Ihnen, beim Erstellen eines Buckets oder eines Objekts eine ACL einzurichten. Amazon S3 bietet auch eine API für die Einrichtung einer ACL für einen vorhandenen Bucket oder ein Objekt. Diese APIs stellen die folgenden Methoden bereit, um eine ACL einzurichten:

  • Einrichten von ACL mit Anfrageheadern – Wenn Sie eine Anfrage senden, um eine Ressource zu erstellen (Bucket oder Objekt), richten Sie eine ACL über die Anfrage-Header ein. Mit Hilfe dieser Header können Sie entweder eine vordefinierte ACL angeben, oder explizit Rechte erteilen (mit expliziter Identifizierung von Empfänger und Berechtigungen).

  • Einrichtung von ACL mithilfe des Anfragetextes – Wenn Sie eine Anfrage senden, um ACL für eine vorhandene Ressource einzurichten, können Sie die ACL im Header oder im Text der Anfrage einrichten.

Informationen zur REST-API-Unterstützung für die Verwaltung von ACLs finden Sie in den folgenden Abschnitten der Amazon Simple Storage Service API-Referenz:

Wichtig

Wenn Ihr Bucket die Einstellung „Vom Bucket-Besitzer erzwungen“ für S3 Object Ownership verwendet, müssen Sie Richtlinien für die Gewährung des Zugriffs auf Ihren Bucket und die enthaltenen Objekte verwenden. Wenn die Einstellung „Vom Bucket-Eigentümer erzwungen“ aktiviert ist, schlagen Anforderungen zum Festlegen von Zugriffssteuerungslisten (ACLs) oder zum Aktualisieren von ACLs fehl und geben den Fehlercode AccessControlListNotSupported zurück. Anfragen zum Lesen von ACLs werden weiterhin unterstützt.

Spezifische Anforderungs-Header für Access Control List (ACL)

Sie können Header verwenden, um Berechtigungen auf der Basis von Access Control List (ACL) zu erteilen. Standardmäßig sind alle Objekte privat. Nur der Besitzer hat die vollständige Zugriffssteuerung. Wenn Sie ein neues Objekt hinzufügen, können Sie einzelnen AWS-Konten oder vordefinierten Gruppen, die von Amazon S3 definiert werden, Berechtigungen erteilen. Diese Berechtigungen werden anschließend der Zugriffskontrollliste (Access Control List, ACL) für das Objekt hinzugefügt. Weitere Informationen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

Mit dieser Operation können Sie Zugriffsberechtigungen mit einer der folgenden beiden Methoden erteilen:

  • Vordefinierte ACL (x-amz-acl) – Amazon S3 unterstützt einen Satz vordefinierter ACLs, englisch „Canned ACLs“. Jede vordefinierte ACL hat eine vordefinierte Menge aus Empfängern und Berechtigungen. Weitere Informationen finden Sie unter Vordefinierte ACL.

  • Zugriffsberechtigungen – Um bestimmten AWS-Konten oder Gruppen explizit Zugriffsberechtigungen zu erteilen, verwenden Sie die folgenden Header. Jeder Header ist bestimmten Berechtigungen zugeordnet, die Amazon S3 in einer ACL unterstützt. Weitere Informationen finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht. Im Header geben Sie eine Liste der Empfänger an, die die jeweilige Berechtigung erhalten.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-acp

    • x-amz-grant-write-acp

    • x-amz-grant-full-Kontrolle

Weitere Informationen zum Verwalten von ACLs mit der finden Sie AWS CLI unter put-bucket-acl in der AWS CLI -Befehlsreferenz.

Wichtig

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