Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien - 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.

Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien

Diese schrittweise Anleitung erklärt, wie Benutzerberechtigungen in Amazon S3 funktionieren. In diesem Beispiel erstellen Sie einen Bucket mit Ordnern. Anschließend erstellen Sie AWS Identity and Access Management IAM-Benutzer in Ihrem AWS-Konto und gewähren diesen Benutzern inkrementelle Berechtigungen für Ihren Amazon S3 S3-Bucket und die darin enthaltenen Ordner.

Grundlagen zu Buckets und Ordnern

Das Amazon-S3-Datenmodell ist eine flache 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.

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 das Trennzeichen. Die Amazon-S3-API unterstützt in ihren Vorgängen 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.

    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 abzuleiten. Amazon S3 hat keine physische Hierarchie. Amazon S3 hat nur Buckets, die Objekte in einer flachen Dateistruktur 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 der Stammebene. 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.

Walkthrough-Ü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 exemplarischen Vorgehensweise verwalten Sie den Zugriff, indem Sie IAM-Benutzer erstellen (im Beispiel werden die Benutzernamen Alice und Bob verwendet) und ihnen die erforderlichen Berechtigungen erteilen.

IAM unterstützt auch die Erstellung von Benutzergruppen und von Berechtigungen auf Gruppenebene, die für alle Benutzer 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 Gruppenname. Da Bucket-Namen in Amazon S3 global eindeutig sein müssen, müssen Sie den Bucket-Namen durch einen von Ihnen erstellten Namen ersetzen.

Vorbereitung auf den Walkthrough

In diesem Beispiel verwenden Sie Ihre AWS-Konto 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. Da Sie als AWS-Konto Eigentümer schrittweise Berechtigungen gewähren und als IAM-Benutzer Testberechtigungen erteilen, müssen Sie sich jedes Mal mit 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 AWS Management Console mit Ihren AWS-Konto Anmeldeinformationen eine Verbindung herzustellen, und einen anderen Browser, um eine Verbindung mit den IAM-Benutzeranmeldedaten herzustellen.

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

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

So stellen Sie einen Anmeldelink für IAM-Benutzer bereit:

  1. Melden Sie sich bei der an AWS Management Console 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 die URL unter IAM users sign in link (Anmeldelink 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 mit Ihren AWS-Konto Anmeldeinformationen bei der Amazon S3-Konsole an, erstellen einen Bucket, fügen dem Bucket Ordner hinzu und laden in jeden Ordner ein oder zwei Beispieldokumente hoch.

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

  2. Erstellen Sie einen Bucket.

    step-by-step Eine Anleitung finden Sie unterErstellen eines Buckets.

  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.

    step-by-step Anweisungen zum Erstellen eines Ordners finden Sie unter Organisieren von Objekten in der Amazon S3-Konsole mithilfe von Ordnern > im Amazon Simple Storage Service-Benutzerhandbuch.

  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

    step-by-step Anweisungen finden Sie unterObjekte hochladen.

Schritt 2: Erstellen von IAM-Benutzern und einer Gruppe

Verwenden Sie nun die IAM-Konsole, um zwei IAM-Benutzer, Alice und Bob, zu Ihrem hinzuzufügen. AWS-Konto step-by-step Anweisungen finden Sie unter Einen IAM-Benutzer erstellen in Ihrem AWS-Konto im IAM-Benutzerhandbuch.

Erstellen Sie außerdem eine administrative Gruppe mit dem Namen. Consultants Fügen Sie dann beide Benutzer zur Gruppe hinzu. step-by-step Anweisungen finden Sie unter IAM-Benutzergruppen erstellen.

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.

step-by-step Anweisungen 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 -Zugriff aus und deaktivieren Sie Programmgesteuerter Zugriff.

step-by-step Anweisungen zum Erstellen einer administrativen Gruppe finden Sie unter Erstellen Ihres ersten IAM-Admin-Benutzers und Ihrer ersten Gruppe 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 in der Konsole einen IAM-Benutzer mit seinen Anmeldeinformationen anzumelden.

  1. Melden Sie sich über den Anmeldelink des IAM-Benutzers (siehe So stellen Sie einen Anmeldelink für IAM-Benutzer bereit:) bei der AWS Management Console unter Verwendung einer der IAM-Benutzeranmeldeinformationen an.

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

    Überprüfen Sie die Konsolenmeldung, die Ihnen mitteilt, dass der Zugriff verweigert wurde.

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: Erteilen 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: Erteilen der Berechtigung zum Auflisten aller Buckets

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-Konto aufzulisten.

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

    Anmerkung

    Da Sie Benutzer-Berechtigungen erteilen, müssen Sie sich mit Ihren AWS-Konto -Anmeldeinformationen 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 den Tab 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 deckt den Amazon S3 GET Service-Vorgang ab, der eine Liste aller Buckets zurückgibt, die dem authentifizierten Absender gehören. 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.

    step-by-step Anweisungen zum Anhängen einer verwalteten Richtlinie finden Sie unter Hinzufügen und Entfernen von IAM-Identitätsberechtigungen 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. Verwenden Sie den Anmeldelink für IAM-Benutzer (siehe So stellen Sie einen Anmeldelink für IAM-Benutzer bereit:) beim Anmelden in der Konsole mit den beiden verschiedenen IAM-Anmeldeinformationen.

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

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

Schritt 4.2: 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.

Anmerkung

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

Um die Anfrage zu verstehen, die die Konsole an Amazon S3 sendet, wenn Sie einen Bucket-Namen wählen, die Antwort, die Amazon S3 zurückgibt, und wie die Konsole die Antwort interpretiert, sollten Sie den Ablauf etwas genauer untersuchen.

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>

Das 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 in unserem Beispiel-Bucket enthalten jedoch das /-Trennzeichen. Amazon S3 gruppiert diese Schlüssel und gibt ein einziges <CommonPrefixes>-Element für jeden der verschiedenen Präfix-Werte Development/, Finance/ und Private/ zurück, 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.

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.

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 auf der Amazon S3 S3-Konsole einen Bucket auswählen, sendet die Konsole zunächst die GET-Bucket-Standortanfrage, um herauszufinden, AWS-Region wo 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 an AWS Management Console und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

    Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich bei der Konsole anzumelden.

  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, die Richtlinie Resource durch den Namen Ihres Buckets zu ersetzen companybucket.

    step-by-step Anweisungen finden Sie im IAM-Benutzerhandbuch unter Bearbeiten von IAM-Richtlinien. Wenn Sie den step-by-step Anweisungen folgen, achten Sie darauf, dass Sie die Schritte befolgen, um Ihre Änderungen auf alle Haupteinheiten anzuwenden, 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 Anmeldelink für IAM-Benutzer bereit:) für die Anmeldung in der AWS Management Console.

      Öffnen Sie die Amazon S3-Konsole unter 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.

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 Development Ordnerinhalt auflisten kann, müssen Sie dem Benutzer Alice eine Richtlinie zuweisen, die die Erlaubnis für die s3:ListBucket Aktion im companybucket Bucket erteilt, vorausgesetzt, die Anfrage enthält das PräfixDevelopment/. Da diese Richtlinie nur auf die Benutzerin Alice angewendet werden soll, verwenden Sie eine Inline-Richtlinie. Weitere Informationen zu Inline-Richtlinien finden Sie unter Verwaltete Richtlinien und Inline-Richtlinien im IAM-Benutzerhandbuch.

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

    Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich bei der Konsole anzumelden.

  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. Wählen Sie den Benutzernamen Alice.

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

    4. Wählen Sie den Tab JSON.

    5. Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Richtlinientextfeld 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 Anmeldelink für IAM-Benutzer bereit:) für die Anmeldung in der AWS Management Console.

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

    3. Prüfen Sie in der Amazon-S3-Konsole, ob Alice die Liste der Objekte im Ordner Development/ im Bucket 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. Weil die Benutzerin die Erlaubnis besitzt, die Objektliste mit dem Präfix Development und dem Trennzeichen / zu sehen, gibt Amazon S3 die Objektliste mit dem Schlüsselpräfix Development/ zurück, und die Konsole gibt die Liste aus.

Schritt 5.2: Der IAM-Benutzerin Alice die Berechtigung erteilen, auf die Objekte im Development-Ordner 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 Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/.

    Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich bei der Konsole anzumelden.

  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 den Tab 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 Anmeldelink für IAM-Benutzer bereit:) für die Anmeldung in der AWS Management Console.

    2. Öffnen Sie die Amazon S3-Konsole unter 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 Zugriffsverweigerung diese Berechtigungen.

Sie können die folgende Anweisung zur Benutzerrichtlinie für Alice hinzufügen, die von allen Anfragen 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 Anfrage 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: 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. step-by-step Anweisungen finden Sie unterSchritt 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 einem Benutzer nicht versehentlich Berechtigungen für den Private Ordner 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 Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/.

    Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich bei der Konsole anzumelden.

  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.

    Anweisungen finden Sie im IAM-Benutzerhandbuch unter Vom Kunden verwaltete Richtlinien bearbeiten. 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 zum Aufräumen die IAM-Konsole und entfernen Sie die Benutzer Alice und Bob. step-by-step Anweisungen 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.

Zugehörige Ressourcen