Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Anleitung: Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien

Diese Anleitung erklärt, wie Benutzerberechtigungen in Amazon S3 funktionieren. In diesem Beispiel erstellen Sie einen Bucket mit Ordnern. Sie können dann in Ihrem AWS-Konto AWS Identity and Access Management (IAM)-Benutzer erstellen und diesen Benutzern inkrementelle Berechtigungen für Ihren Amazon S3-Bucket und die darin enthaltenen Ordner erteilen.

Grundlagen zu Buckets und Ordnern

Das Amazon S3-Datenmodell ist eine Flatfile-Struktur: Sie erstellen einen Bucket und der Bucket speichert Objekte. Es gibt keine Hierarchie für Unter-Buckets oder Unterordner. Sie können aber eine Ordnerhierarchie nachbilden. Tools, wie die Amazon S3-Konsole, können eine Ansicht dieser logischen Ordner und Unterordner in Ihrem Bucket präsentieren, wie in der folgenden Abbildung dargestellt.


                Bildschirm der Konsole mit einer Hierarchie der Buckets, Ordner und Objekte.

Die Konsole zeigt, dass sich in einem Bucket mit dem Namen companybucket die drei Ordner Private, Development und Finance und das Objekt s3-dg.pdf befinden. Die Konsole verwendet die Objektnamen (Schlüssel), um eine logische Hierarchie mit Ordnern und Unterordnern zu erzeugen. Betrachten Sie die folgenden Beispiele:

  • Wenn Sie den Ordner Development anlegen, erstellt die Konsole ein Objekt mit dem Schlüssel Development/. Beachten Sie den als Trennzeichen dienenden abschließenden Schrägstrich (/).

  • Wenn Sie ein Objekt mit dem Namen Projects1.xls in den Ordner Development hochladen, lädt die Konsole das Objekt hoch und weist ihm den Schlüssel Development/Projects1.xls zu.

    Im Schlüssel ist Development das Präfix und / ist der Separator. Das Amazon S3-API unterstützt in ihren Operationen Präfixe und Separatoren. Beispielsweise können Sie eine Liste aller Objekte in einem Bucket mit einem bestimmten Präfix und Separator erhalten. Wenn Sie in der Konsole den Ordner Development öffnen, listet die Konsole die Objekte im betreffenden Ordner auf. Im folgenden Beispiel enthält der Ordner Development ein Objekt.

     

    
                        Bildschirm der Konsole mit einer Hierarchie der Buckets, Ordner und Objekte.

     

    Wenn die Konsole den Ordner Development im Bucket companybucket auflistet, sendet sie eine Anforderung an Amazon S3, in der das Präfix Development und das Trennzeichen / in der Anforderung angegeben werden. Die Antwort der Konsole sieht genauso aus, wie eine Ordnerliste im Dateisystem Ihres Computers. Das vorherige Beispiel zeigt, dass der Bucket companybucket ein Objekt mit dem Schlüssel Development/Projects1.xls enthält.

Die Konsole verwendet Objektschlüssel, um eine logische Hierarchie herzuleiten. Amazon S3 besitzt keine physische Hierarchie, sondern nur Buckets, die Objekte in einer Flatfile-Struktur enthalten. Wenn Sie Objekte mit der Amazon S3-API erstellen, können Sie Objektschlüssel verwenden, die eine logische Hierarchie implizieren. Wenn Sie eine logische Hierarchie von Objekten erstellen, können Sie den Zugriff auf einzelne Ordner verwalten, wie in dieser exemplarischen Anleitung veranschaulicht.

Bevor Sie beginnen, müssen Sie mit dem Konzept des Bucket-Inhalts auf Stammebene vertraut sein. Angenommen, Ihr Bucket companybucket enthält die folgenden Objekte:

  • Private/privDoc1.txt

  • Private/privDoc2.zip

  • Development/project1.xls

  • Development/project2.xls

  • Finance/Tax2011/document1.pdf

  • Finance/Tax2011/document2.pdf

  • s3-dg.pdf

Diese Objektschlüssel erzeugen eine logische Hierarchie mit Private, Development und Finance als Stammebenen-Ordner und s3-dg.pdf als Stammebenen-Objekt. Wenn Sie den Bucket-Namen in der Amazon S3-Konsole auswählen, erscheinen die Elemente in der Stammebene, wie in der folgenden Abbildung dargestellt. Die Konsole zeigt die Präfixe der obersten Ebene (Private/, Development/ und Finance/) als Stammebenen-Ordner. Der Objektschlüssel s3-dg.pdf hat kein Präfix und erscheint daher als Stammebenen-Element.


                Screenshot der Konsole mit der Registerkarte der Objekte und dem Objekt s3-dg.pdf in der Liste.

Schrittweise Anleitung – Übersicht

In dieser Anleitung erstellen Sie einen Bucket mit drei Ordnern (Private, Development und Finance).

Sie haben zwei User, Alice und Bob. Sie möchten, dass Alice nur auf den Ordner Development und Bob nur auf den Ordner Finance zugreift. Sie möchten, das der Inhalt des Ordners Private privat bleibt. In der Anleitung verwalten Sie den Zugriff durch Erstellen von IAM-Benutzern (im Beispiel werden die Benutzernamen Alice und Bob verwendet) und gewähren ihnen die erforderlichen Berechtigungen.

IAM unterstützt auch die Schaffung von Benutzergruppen und von Berechtigungen auf Gruppenebene, die für alle User in der Gruppe gelten. Dies hilft Ihnen bei der Verwaltung der Berechtigungen. In dieser Übung benötigen sowohl Alice als auch Bob einige gemeinsame Berechtigungen. Sie erstellen also eine Gruppe mit dem Namen Consultants und fügen dann Alice und Bob der Gruppe hinzu. Sie erteilen zunächst Berechtigungen, indem Sie der Gruppe eine Gruppenrichtlinie zuweisen. Fügen Sie dann benutzerspezifische Berechtigungen durch Zuweisen von Richtlinien zu bestimmten Benutzern hinzu.

Anmerkung

Die Anleitung verwendet companybucket als Bucket-Namen, Alice und Bob als IAM-Benutzer und Consultants als Gruppennamen. Da Bucket-Namen in Amazon S3 global eindeutig sein müsssen, müssen Sie den Bucket-Namen durch einen von Ihnen erstellten Namen ersetzen.

Vorbereitung auf die Schritt-für-Schritt-Anleitung

In diesem Beispiel verwenden Sie Ihre AWS-Anmeldeinformationen, um IAM-Benutzer zu erstellen. Zu Beginn haben diese Benutzer keine Berechtigungen. Sie gewähren diesen Benutzern nach und nach Berechtigungen, damit sie spezifische Amazon S3-Aktionen ausführen können. Um diese Berechtigungen zu testen, melden Sie sich mit den Anmeldeinformationen eines jeden Benutzers bei der Konsole an. Wenn Sie als AWS-Kontoinhaber schrittweise die Berechtigungen ausbauen und als IAM-Benutzer testen, müssen Sie sich mit den unterschiedlichen Anmeldeinformationen an- und abmelden. Sie können diesen Test auch mit einem Browser durchführen, das Verfahren schreitet aber schneller fort, wenn Sie zwei verschiedene Browser verwenden. Verwenden Sie einen Browser, um eine Verbindung mit der AWS Management Console mit den Anmeldeinformationen Ihres AWS-Kontos herzustellen, und einen anderen, um eine Verbindung mit den IAM-Benutzer-Anmeldeinformationen herzustellen.

Um sich bei der AWS Management Console mit Ihren AWS-Anmeldeinformationen anzumelden, gehen Sie zu https://console.aws.amazon.com/. Ein IAM-Benutzer kann sich nicht über denselben Link anmelden. Ein IAM-Benutzer muss eine IAM-aktivierte Anmeldeseite verwendet werden. Als Kontoinhaber können Sie diesen Link Ihren Benutzern bereitstellen.

Weitere Informationen zu IAM finden Sie unter Die Benutzeranmeldeseite der AWS Management Console im IAM-Benutzerhandbuch.

So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich IAM Dashboard aus.

  3. Notieren Sie sich die URL unter IAM users sign in link: (Anmelde-Link für IAM-Benutzer:). Sie geben diesen Link an die IAM-Benutzer weiter, damit sie sich mit ihrem IAM-Benutzernamen und -Passwort in der Konsole anmelden können.

Schritt 1: Erstellen eines Buckets

In diesem Schritt melden Sie sich bei der Amazon S3-Konsole mit ihren AWS-Konto-Anmeldeinformationen an, erstellen einen Bucket, fügen dem Bucket Ordner (Development, Finance und Private) hinzu und laden ein oder zwei Beispieldokumente in jeden Ordner hoch.

  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Erstellen Sie einen Bucket.

    Schrittweise Anleitungen finden Sie unter Wie erstelle ich einen S3-Bucket? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

  3. Laden Sie ein Dokument in den Bucket hoch.

    Diese Übung geht davon aus, dass sich das Dokument s3-dg.pdf auf der Stammebene dieses Buckets befindet. Wenn Sie andere Dokumente hochladen, ändern Sie ihren Dateinamen in s3-dg.pdf.

  4. Fügen Sie drei Ordner mit dem Namen Private, Finance and Development zum Bucket hinzu.

    Schrittweise Anleitungen zum Erstellen eines Ordners finden Sie unter Erstellen eines Ordners im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

  5. Laden Sie ein oder zwei Dokumente in jeden Ordner hoch.

    Für diese Übung wird angenommen, dass Sie einige Dokumente in jeden Ordner hochgeladen haben, sodass der Bucket Objekte mit den folgenden Schlüsseln enthält:

    • Private/privDoc1.txt

    • Private/privDoc2.zip

    • Development/project1.xls

    • Development/project2.xls

    • Finance/Tax2011/document1.pdf

    • Finance/Tax2011/document2.pdf

    • s3-dg.pdf

    Schrittweise Anleitungen finden Sie unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Schritt 2: Erstellen von IAM-Benutzern und einer Gruppe

Sie verwenden jetzt die IAM-Konsole, um die beiden IAM-Benutzer Alice und Bob zu Ihrem AWS-Konto hinzuzufügen. Sie erstellen auch eine Administratorgruppe mit dem Namen Consultants und fügen dann beide Benutzer der Gruppe hinzu.

Warnung

Wenn Sie die Benutzer und die Gruppe erstellen, fügen Sie keine Richtlinien an, die diesen Benutzern Berechtigungen erteilen. Anfänglich haben diese Benutzer keine Berechtigungen. In den folgenden Abschnitten gewähren Sie nach und nach Berechtigungen. Sie müssen zunächst sicherstellen, dass Sie diesen IAM-Benutzern Passwörter zugewiesen haben. Sie verwenden diese Benutzer-Anmeldeinformationen zum Testen der Amazon S3-Aktionen und zum Überprüfen, ob die Berechtigungen wie erwartet funktionieren.

Schrittweise Anleitungen zum Erstellen eines neuen IAM-Benutzers finden Sie unter Erstellen eines IAM-Benutzers in Ihrem AWS-Konto im IAM-Benutzerhandbuch. Wenn Sie die Benutzer für diese Anleitung erstellen, wählen Sie AWS Management Console access (AWS-Managementkonsolenzugriff) aus und deaktivieren Sie Programmatic access (Programmgesteuerter Zugriff).

Eine schrittweise Anleitung zum Erstellen einer Administratorgruppe finden Sie unter Erstellen Ihres ersten Administratorbenutzers und Ihrer ersten Administratorgruppe in IAM im IAM-Benutzerhandbuch.

Schritt 3: Überprüfen Sie, dass die IAM-Benutzer über keine Berechtigungen verfügen

Wenn Sie zwei Browser verwenden, können Sie jetzt den zweiten Browser verwenden, um sich mit einer der IAM-Benutzer-Anmeldeinformationen bei der Konsole anzumelden.

  1. Melden Sie sich über den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit) bei der AWS Management Console an und verwenden Sie dazu eine der IAM-Benutzeranmeldeinformationen.

  2. Öffnen Sie die Amazon S3-Konsole unter der Adresse https://console.aws.amazon.com/s3/.

    Die folgende Konsolenmeldung informiert Sie darüber, dass der Zugang verweigert wurde.

    
                        Screenshot der Konsole mit einer Fehlermeldung bei nicht genehmigtem Zugriff.

Nun können Sie damit beginnen, den Benutzern schrittweise Berechtigungen zu erteilen. Sie weisen zunächst eine Gruppenrichtlinie zu, die beiden Benutzern die erforderlichen Berechtigungen gewährt.

Schritt 4: Gewähren von Berechtigungen auf Gruppenebene

Sie möchten den Benutzern Folgendes ermöglichen:

  • Auflisten aller Buckets, die dem übergeordneten Konto gehören. Um das zu tun, müssen Bob und Alice die Berechtigung für die Aktion s3:ListAllMyBuckets besitzen.

  • Auflisten aller Elemente, Ordner und Objekte auf Stammebene im Bucket companybucket. Um das zu tun, müssen Bob und Alice die Berechtigung für die Aktion s3:ListBucket im Bucket companybucket besitzen.

Zuerst erstellen Sie eine Richtlinie, die diese Berechtigungen gewährt, und dann weisen Sie sie der Gruppe Consultants zu.

Schritt 4.1: Gewähren der Berechtigung, um alle Buckets aufzulisten

In diesem Schritt erstellen Sie eine verwaltete Richtlinie, die den Benutzern die Mindestberechtigungen für die Auflistung aller Buckets des übergeordneten Kontos erteilt. Dann weisen Sie die Richtlinie der Gruppe Consultants zu. Wenn Sie einem Benutzer oder einer Benutzergruppe die verwaltete Richtlinie zuordnen, erhält der Benutzer oder die Gruppe die Berechtigung, alle Buckets des übergeordneten AWS-Kontos aufzulisten.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

    Anmerkung

    Da Sie Benutzerberechtigungen erteilen, müssen Sie sich mit Ihren Anmeldeinformationen für das AWS-Konto anmelden und nicht als IAM-Benutzer.

  2. Erstellen Sie die verwaltete Richtlinie.

    1. Wählen Sie links im Navigationsbereich Policies (Richtlinien) und dann Create Policy (Richtlinie erstellen) aus.

    2. Wählen Sie die Registerkarte JSON.

    3. Kopieren Sie die folgende Zugriffsrichtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": ["s3:ListAllMyBuckets"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] } ] }

      Eine Richtlinie ist ein JSON-Dokument. Im Dokument ist ein Statement ein Array von Objekten, die jeweils eine Berechtigung unter Verwendung einer Sammlung von Namenswertpaaren beschreiben. Die vorangegangene Richtlinie beschreibt eine bestimmte Berechtigung. Die Action definiert den Zugriffstyp. In der Richtlinie ist s3:ListAllMyBuckets eine vordefinierte Amazon S3-Aktion. Diese Aktion umfasst die Operation Amazon S3 GET Service, die eine Liste aller Buckets des authentifizierten Absenders zurückgibt. Der Wert des Effect-Elements bestimmt, ob die spezifische Berechtigung gewährt oder verweigert wird.

    4. Wählen Sie Review policy (Richtlinie überprüfen) aus. Geben Sie auf der nächsten Seite in das Feld Name AllowGroupToSeeBucketListInTheConsole ein und wählen Sie dann Create policy (Richtlinie erstellen).

      Anmerkung

      Der Eintrag Summary (Übersicht) enthält eine Nachricht, die angibt, dass die Richtlinie keinerlei Berechtigungen gewährt. Für diese Anleitung können Sie diese Nachricht getrost ignorieren.

  3. Weisen Sie die von AllowGroupToSeeBucketListInTheConsole verwaltete Richtlinie, die Sie erstellt haben, der Gruppe Consultants zu.

    Schrittweise Informationen zum Anfügen einer verwalteten Richtlinie finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien im IAM-Benutzerhandbuch.

    Sie fügen die Richtliniendokumente in der IAM-Konsole den IAM-Benutzern und Gruppen hinzu. Da Sie möchten, dass beide Benutzer die Buckets auflisten können, weisen Sie die Richtlinie der Gruppe zu.

  4. Die Berechtigung testen.

    1. Melden Sie sich über den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit) bei der Konsole an und verwenden Sie eine der IAM-Benutzeranmeldeinformationen.

    2. Öffnen Sie die Amazon S3-Konsole unter der Adresse https://console.aws.amazon.com/s3/.

      Die Konsole sollte nun alle Buckets auflisten, nicht aber die Objekte in den jeweiligen Buckets.

      
                                    Screenshot der Konsole mit einer Liste der Buckets.

Schritt 4.2: Den Benutzern gestatten, dass sie den Bucket-Inhalt auf Stammebene auflisten

Als Nächstes gestatten Sie allen Benutzern in der Gruppe Consultants, Elemente im Bucket companybucket aufzulisten. Wenn ein Benutzer den Unternehmensbucket in der Amazon S3-Konsole auswählt, werden die Elemente in der Stammebene des Buckets angezeigt.


                    Screenshot der Konsole mit dem Inhalt von companybucket.

Anmerkung

Dieses Beispiel verwendet companybucket zur Veranschaulichung. Sie müssen den Namen des Bucket verwenden, den Sie erstellt haben.

Um zu verstehen, welche Anforderung die Konsole an Amazon S3 sendet, wenn Sie einen Bucket-Namen auswählen, welche Antwort Amazon S3 zurückgibt und wie die Konsole die Antwort interpretiert, ist es notwendig, etwas tiefer in die Materie einzudringen.

Wenn Sie auf einen Bucket-Namen klicken, sendet die Konsole die Anforderung GET Bucket (List Objects) an Amazon S3. Diese Anforderung enthält die folgenden Parameter:

  • Der Parameter prefix mit einer leeren Zeichenfolge als Wert.

  • Der Parameter delimiter mit / als Wert.

Es folgt ein Beispiel einer Anforderung.

GET ?prefix=&delimiter=/ HTTP/1.1 Host: companybucket.s3.amazonaws.com Date: Wed, 01 Aug 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=

Amazon S3 gibt eine Antwort zurück, die das folgende <ListBucketResult/>-Element enthält:

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix></Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>s3-dg.pdf</Key> ... </Contents> <CommonPrefixes> <Prefix>Development/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Finance/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Private/</Prefix> </CommonPrefixes> </ListBucketResult>

Der Schlüsselobjekt s3-dg.pdf enthält nicht das Schrägstrich-Trennzeichen (/), und Amazon S3 gibt den Schlüssel im <Contents>-Element zurück. Alle anderen Schlüssel im Beispiel-Bucket enthalten jedoch das Trennzeichen /. Amazon S3 gruppiert diese Schlüssel und gibt ein <CommonPrefixes>-Element für jeden der verschiedenen Präfixwerte Development/, Finance/ und Private/ zurück, also eine Unterzeichenfolge vom Anfang dieser Schlüssel bis zum ersten Auftreten des angegebenen Trennzeichens /.

Die Konsole interpretiert dieses Ergebnis und zeigt die Elemente auf der Stammebene als drei Ordner und einen Objektschlüssel an.


                    Screenshot der Konsole mit dem Inhalt von companybucket mit drei Ordnern und einer PDF-Datei.

Wenn nun Bob oder Alice den Ordner Development öffnen, sendet die Konsole die Anforderung GET Bucket (List Objects) an Amazon S3, wobei die Parameter prefix und delimiter auf die folgenden Werte eingestellt sind:

  • Der Parameter prefix mit dem Wert Development/.

  • Der Parameter delimiter mit dem Wert "/".

In der Antwort gibt Amazon S3 die Objektschlüssel mit dem angegebenen Präfix zurück.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix>Development</Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>Project1.xls</Key> ... </Contents> <Contents> <Key>Project2.xls</Key> ... </Contents> </ListBucketResult>

Die Konsole zeigt die Objektschlüssel an.


                    Screenshot der Konsole mit dem Development-Ordner mit zwei XLS-Dateien.

Kehren Sie nun wieder zu dem Vorgang zurück, Benutzern die Berechtigung zum Auflisten von Elementen auf der Stammebene zu erteilen. Damit der Bucket-Inhalt aufgelistet werden kann, müssen die Benutzer die Berechtigung zum Aufruf der s3:ListBucket-Aktion besitzen, wie in der folgenden Richtlinienanweisung dargestellt. Um sicherzustellen, dass sie nur den Inhalt auf der Stammebene sehen, können Sie als Bedingung hinzufügen, dass Benutzer in der Anforderung ein leeres prefix angeben müssen – d. h., dass es ihnen nicht gestattet sein soll, auf einen der Stammebenen-Ordner doppelzuklicken. Schließlich fügen Sie noch eine Bedingung hinzu, die den Zugriff im Ordnerstil dadurch vorschreibt, dass Benutzeranforderungen den Parameter delimiter mit dem Wert "/" enthalten müssen.

{ "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } }

Wenn Sie einen Bucket in der Amazon S3-Konsole auswählen, sendet die Konsole zuerst die Anforderung GET Bucket location, um die AWS-Region zu finden, in der der Bucket bereitgestellt wird. Dann verwendet die Konsole den regionsspezifischen Endpunkt für den Bucket, um die Anforderung GET Bucket (List Objects) zu senden. Wenn Benutzer die Konsole verwenden sollen, müssen Sie ihnen folglich die Berechtigung für die Aktion s3:GetBucketLocation gewähren, wie in der folgenden Richtlinienanweisung veranschaulicht.

{ "Sid": "RequiredByS3Console", "Action": ["s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }

Den Benutzern gestatten, den Bucket-Inhalt auf Stammebene aufzulisten

  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

    Verwenden Sie für die Anmeldung in der Konsole ihre Anmeldeinformationen für das AWS-Konto, nicht jene eines IAM-Benutzers.

  2. Ersetzen Sie die vorhandene AllowGroupToSeeBucketListInTheConsole-verwaltete Richtlinie, die der Gruppe s3:ListBucket zugeordnet ist, durch die folgende Richtlinie, durch die die Aktion Consultants ebenfalls gestattet wird. Denken Sie daran, den Namen companybucket in der Richtlinie Resource durch den Namen Ihres Buckets zu ersetzen.

    Schritt-für Schritt-Anleitungen finden Sie unter Bearbeiten von IAM-Richtlinien im IAM-Benutzerhandbuch. Wenn Sie den schrittweisen Anweisungen folgen, beachten Sie bitte die Anweisungen zum Anwenden Ihrer Änderungen auf alle Prinzipal-Entitäten, denen die Richtlinie zugeordnet ist.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } } ] }
  3. Testen Sie die aktualisierten Berechtigungen.

    1. Verwenden Sie den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit) für die Anmeldung in der AWS Management Console.

      Öffnen Sie die Amazon S3-Konsole unter der Adresse https://console.aws.amazon.com/s3/.

    2. Wählen Sie den von Ihnen erstellten Bucket aus. Die Konsole zeigt die Bucket-Elemente auf Stammebene an. Wenn Sie Ordner im Bucket auswählen, können Sie den Ordnerinhalt nicht sehen, da Sie diese Berechtigungen noch nicht gewährt haben.

      
                                    Screenshot der Konsole mit dem Unternehmensbucket mit drei Ordnern.

Dieser Test ist erfolgreich, wenn Benutzer die Amazon S3-Konsole verwenden. Wenn Sie einen Bucket in der Konsole auswählen, sendet die Konsolenimplementierung eine Anforderung mit dem Parameter prefix mit einer leeren Zeichenfolge als Wert und dem Parameter delimiter mit "/" als Wert.

Schritt 4.3: Übersicht über die Gruppenrichtlinie

Die Wirkung der von Ihnen hinzugefügten Gruppenrichtlinie ist, dass die IAM-Benutzer Alice und Bob über die folgenden Mindestberechtigungen verfügen:

  • Auflisten aller Buckets, die dem übergeordneten Konto gehören.

  • Ansicht der Elemente auf Stammebene im Bucket companybucket.

Die Benutzer können jedoch noch nicht sehr viele Aktionen ausführen. Als Nächstes erteilen Sie die folgenden benutzerspezifischen Berechtigungen:

  • Erlauben Sie Bob, Objekte im Ordner Development aufzurufen und abzulegen.

  • Erlauben Sie Bob, Objekte im Ordner Finance aufzurufen und abzulegen.

Für benutzerspezifische Berechtigungen fügen Sie eine Richtlinie zum spezifischen Benutzer hinzu, nicht für die Gruppe. Im folgenden Abschnitt erteilen Sie Alice die Berechtigung, mit dem Ordner Development zu arbeiten. Sie können die Schritte wiederholen, um Bob eine ähnliche Berechtigung für das Arbeiten im Ordner Finance zu erteilen.

Schritt 5: Der IAM-Benutzerin Alice spezifische Berechtigungen erteilen

Nun gewähren Sie Alice zusätzliche Berechtigungen, damit sie den Inhalt des Ordners Development aufrufen und Objekte in diesem Ordner ablegen kann.

Schritt 5.1: Der IAM-Benutzerin Alice die Berechtigung erteilen, den Inhalt des Development-Ordners aufzulisten

Damit Alice den Inhalt des Ordners Development auflisten kann, müssen Sie der Benutzerin Alice eine Richtlinie zuweisen, die die Berechtigung für die Aktion s3:ListBucket für den Bucket companybucket erteilt, unter der Voraussetzung, dass die Anforderung das Präfix Development/ enthält. Da diese Richtlinie nur auf die Benutzerin Alice angewendet werden soll, verwenden Sie eine Inline-Richtlinie. Weitere Informationen zu eingebundenen Richtlinien finden Sie unter Verwaltete Richtlinien und eingebundene Richtlinien im IAM-Benutzerhandbuch.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

    Verwenden Sie für die Anmeldung in der Konsole ihre Anmeldeinformationen für das AWS-Konto, nicht jene eines IAM-Benutzers.

  2. Erstellen Sie eine Inline-Richtlinie, um der Benutzerin Alice die Berechtigung zu erteilen, den Inhalt des Ordners Development aufzulisten.

    1. Wählen Sie im Navigationsbereich auf der linken Seite Users (Benutzer) aus.

    2. Klicken Sie auf den Benutzernamen Alice.

    3. Wählen Sie auf der Benutzerdetailseite die Registerkarte Permissions (Berechtigungen) und dann Add inline policy (Inline-Richtlinie hinzufügen) aus.

    4. Wählen Sie die Registerkarte JSON.

    5. Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] }
    6. Wählen Sie Review policy (Richtlinie überprüfen) aus. Geben Sie auf der nächsten Seite in das Feld Name einen Namen ein und wählen Sie dann Create policy (Richtlinie erstellen).

  3. Testen Sie die geänderten Berechtigungen für Alice:

    1. Verwenden Sie den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit) für die Anmeldung bei der AWS Management Console.

    2. Öffnen Sie die Amazon S3-Konsole unter der Adresse https://console.aws.amazon.com/s3/.

    3. Prüfen Sie in der Amazon S3-Konsole, ob Alice die Liste der Objekte im Ordner Development/ des Buckets sehen kann.

      Wenn die Benutzerin den Ordner /Development auswählt, um die Liste der darin enthaltenen Objekte anzuzeigen, sendet die Amazon S3-Konsole die Anforderung ListObjects zusammen mit dem Präfix /Development an Amazon S3. Da die Benutzerin dazu berechtigt ist, die Objektliste mit dem Präfix Development und dem Trennzeichen / anzuzeigen, gibt Amazon S3 die Objektliste mit dem Schlüsselpräfix Development/ zurück, und die Konsole zeigt die Liste an.

      
                                    Screenshot der Konsole mit dem Development-Ordner mit zwei XLS-Dateien.

Schritt 5.2: Der IAM-Benutzerin Alice die Berechtigung erteilen, auf die Objekte im Development-Ordners zuzugreifen und Objekte darin abzulegen

Damit Alice Objekte im Ordner Development ablegen und aufrufen kann, benötigt sie die Berechtigung für die Aktionen s3:GetObject und s3:PutObject. Die folgenden Richtlinienanweisungen räumen diese Berechtigungen ein, vorausgesetzt die Anforderung enthält den Parameter prefix mit dem Wert Development/.

{ "Sid":"AllowUserToReadWriteObjectData", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }
  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

    Verwenden Sie für die Anmeldung in der Konsole ihre Anmeldeinformationen für das AWS-Konto, nicht jene eines IAM-Benutzers.

  2. Bearbeiten Sie die Inline-Richtlinie, die Sie im vorherigen Schritt erstellt haben.

    1. Wählen Sie im Navigationsbereich auf der linken Seite Users (Benutzer) aus.

    2. Klicken Sie auf den Benutzernamen "Alice".

    3. Wählen Sie auf der Benutzerdetailseite die Registerkarte Permissions (Berechtigungen) aus und erweitern Sie den Bereich Inline Policies (Inline-Richtlinien).

    4. Wählen Sie neben dem Namen der im vorherigen Schritt erstellten Richtlinie Edit Policy (Richtlinie bearbeiten) aus.

    5. Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein, wobei die vorhandene Richtlinie ersetzt wird.

      { "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] } ] }
  3. Testen Sie die aktualisierte Richtlinie:

    1. Verwenden Sie den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmelde-Link für IAM-Benutzer bereit) für die Anmeldung in der AWS Management Console.

    2. Öffnen Sie die Amazon S3-Konsole unter der Adresse https://console.aws.amazon.com/s3/.

    3. Prüfen Sie in der Amazon S3-Konsole, ob Alice nun im Ordner Development ein Objekt hinzufügen oder herunterladen kann.

Schritt 5.3: Der IAM-Benutzerin Alice die Berechtigung für den Zugriff auf alle anderen Ordner im Bucket ausdrücklich verweigern

Die Benutzerin kann jetzt den Inhalt auf Stammebene im Bucket companybucket auflisten. Sie kann auch Objekte im Ordner Development aufrufen und ablegen. Wenn Sie die Zugriffsberechtigungen weiter verbessern möchten, können Sie Alice den Zugriff auf andere Ordner im Bucket explizit verweigern. Wenn es irgendeine andere Richtlinie (Bucket-Richtlinie oder ACL) gibt, die Alice den Zugriff auf andere Ordner im Bucket gewährt, überschreibt diese explizite Ablehnung diese Berechtigungen.

Sie können die folgende Anweisung zur Benutzerrichtlinie für Alice hinzufügen, die von allen Anforderungen von Alice an Amazon S3 erfordert, dass der Parameter prefix enthalten ist, dessen Wert entweder Development/* oder eine leere Zeichenfolge ist.

{ "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } }

Beachten Sie, dass im Block Condition zwei bedingte Ausdrücke enthalten sind. Das Ergebnis dieser bedingten Ausdrücke wird durch das logische AND verknüpft. Wenn beide Bedingungen wahr sind, ist das Ergebnis der bedingten Ausdrücke wahr. Da der Wert für Effect in dieser Richtlinie Deny lautet, wenn Condition als "true" bewertet wird, können Benutzer die angegebene Action nicht durchführen.

  • Der bedingte Ausdruck Null stellt sicher, dass die Anforderung von Alice den Parameter prefix enthält.

    Der Parameter prefix erfordert einen ordnerartigen Zugriff. Wenn Sie eine Anforderung ohne den Parameter prefix senden, gibt Amazon S3 alle Objektschlüssel zurück.

    Wenn die Anforderung den Parameter prefix mit einem Nullwert enthält, wird der Ausdruck als wahr ausgewertet, womit die gesamte Bedingung Condition wahr ist. Sie müssen eine leere Zeichenfolge für den Parameter prefix gestatten. Erinnern Sie sich an die vorangegangene Diskussion. Die leere Zeichenfolge lässt zu, dass Alice Bucket-Elemente auf Stammebene abrufen kann, wie es die Konsole in der vorhergehenden Diskussion macht. Weitere Informationen finden Sie unter Schritt 4.2: Den Benutzern gestatten, dass sie den Bucket-Inhalt auf Stammebene auflisten.

  • Der bedingte Ausdruck StringNotLike stellt sicher, dass die Anforderung scheitert, wenn der angegebene Wert des Parameters prefix nicht Development/* ist.

Folgen Sie den Schritten im vorherigen Abschnitt und aktualisieren Sie die Inline-Richtlinie noch einmal, die Sie für die Benutzerin Alice erstellt haben.

Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein, wobei die vorhandene Richtlinie ersetzt wird.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }, { "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } } ] }

Schritt 6: Dem IAM-Benutzer Bob spezifische Berechtigungen erteilen

Sie können die Schritte wiederholen, um Bob eine ähnliche Berechtigung für den Ordner Finance zu erteilen. Führen Sie die Schritte aus, mit denen Sie zuvor Alice Berechtigungen erteilt haben, aber ersetzen Sie den Ordner Development durch den Ordner Finance. Schrittweise Anleitungen hierzu finden Sie unter Schritt 5: Der IAM-Benutzerin Alice spezifische Berechtigungen erteilen.

Schritt 7: Absichern des Ordners "Private"

In diesem Beispiel haben Sie nur zwei Benutzer. Sie haben auf Gruppenebene alle erforderlichen Mindestberechtigungen erteilt und auf Benutzerebene die Berechtigungen nur dann gewährt, wenn die einzelnen Benutzer die Berechtigungen wirklich benötigen. Dieser Ansatz minimiert den Aufwand beim Verwalten der Berechtigungen. Wenn die Anzahl der Benutzer steigt, kann das Verwalten der Berechtigungen mühsam werden. Sie möchten z. B. nicht, dass irgendwelche der Benutzer in diesem Beispiel auf den Inhalt des Ordners Private zugreifen können. Wie stellen Sie sicher, dass Sie nicht versehentlich einem Benutzer Berechtigung darauf erteilen? Sie fügen eine Richtlinie hinzu, die explizit den Zugriff auf den Ordner verweigert. Eine explizite Zugriffsverweigerung überschreibt alle anderen Berechtigungen.

Um sicherzustellen, dass der Ordner Private auch privat bleibt, können Sie die folgenden beiden Ablehnungsanweisungen zur Gruppenrichtlinie hinzufügen:

  • Fügen Sie die folgende Anweisung hinzu, um jede Aktion auf die Ressourcen im Private-Ordner (companybucket/Private/*) zu verweigern.

    { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }
  • Sie verweigern auch die Berechtigung für die Aktion Objekte auflisten, wenn die Anforderung das Präfix Private/ angibt. Wenn Bob oder Alice in der Konsole den Order Private öffnen, bewirkt diese Richtlinie, dass Amazon S3 eine Fehlermeldung zurückgibt.

    { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } }

Ersetzen Sie die Gruppenrichtlinie Consultants durch eine aktualisierte Richtlinie, die die vorherigen Ablehnungsanweisungen enthält. Nachdem die aktualisierte Richtlinie angewendet wurde, kann keiner der Benutzer in der Gruppe mehr auf den Order Private in Ihrem Bucket zugreifen.

  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

    Verwenden Sie für die Anmeldung in der Konsole ihre Anmeldeinformationen für das AWS-Konto, nicht jene eines IAM-Benutzers.

  2. Ersetzen Sie die vorhandene von AllowGroupToSeeBucketListInTheConsole verwaltete Richtlinie, die der Gruppe Consultants zugeordnet ist, durch die folgende Richtlinie. Denken Sie daran, den Namen companybucket in der Richtlinie durch den Namen Ihres Buckets zu ersetzen.

    Weitere Anweisungen finden Sie unter Bearbeiten von kundenverwalteten Richtlinien im IAM-Benutzerhandbuch. Wenn Sie die Anweisungen nachvollziehen, beachten Sie bitte die Anweisungen zum Ändern aller Hauptentitäten, denen die Richtlinie zugeordnet ist.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{"s3:prefix":[""]} } }, { "Sid": "RequireFolderStyleList", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringNotEquals":{"s3:delimiter":"/"} } }, { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }, { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } } ] }

Schritt 8: Bereinigen

Öffnen Sie zur Bereinigung die IAM-Konsole und entfernen Sie die Benutzer Alice und Bob. Schritt-für-Schritt-Anleitungen finden Sie unter Löschen eines IAM-Benutzers im IAM-Benutzerhandbuch.

Um sicherzustellen, dass Sie für die Speicherung nicht künftig belastet werden, sollten Sie auch die Objekte und den Bucket löschen, die Sie für diese Übung erstellt haben.

Verwandte Ressourcen