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.
Themen
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
Developmentanlegen, erstellt die Konsole ein Objekt mit dem SchlüsselDevelopment/. Beachten Sie den als Trennzeichen dienenden abschließenden Schrägstrich (/). -
Wenn Sie ein Objekt mit dem Namen
Projects1.xlsin den OrdnerDevelopmenthochladen, lädt die Konsole das Objekt hoch und weist ihm den SchlüsselDevelopment/Projects1.xlszu.Im Schlüssel ist
Developmentdas 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 OrdnerDevelopmentöffnen, listet die Konsole die Objekte im betreffenden Ordner auf. Im folgenden Beispiel enthält der OrdnerDevelopmentein Objekt.Wenn die Konsole den Ordner
Developmentim Bucketcompanybucketauflistet, sendet sie eine Anforderung an Amazon S3, in der das PräfixDevelopmentund 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 Bucketcompanybucketein Objekt mit dem SchlüsselDevelopment/Projects1.xlsenthä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 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 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 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 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/
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:
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich IAM Dashboard aus.
-
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 bei der Amazon-S3-Konsole mit ihren AWS-Konto -Anmeldeinformationen an, erstellen einen Bucket, fügen dem Bucket Ordner hinzu und laden ein oder zwei Beispieldokumente in jeden Ordner hoch.
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Erstellen Sie einen Bucket.
step-by-stepAnweisungen finden Sie unterErstellen eines Allzweck-Buckets.
-
Laden Sie ein Dokument in den Bucket hoch.
Diese Übung geht davon aus, dass sich das Dokument
s3-dg.pdfauf der Stammebene dieses Buckets befindet. Wenn Sie andere Dokumente hochladen, ändern Sie ihren Dateinamen ins3-dg.pdf. -
Fügen Sie drei Ordner mit dem Namen
Private,FinanceandDevelopmentzum Bucket hinzu.step-by-stepAnweisungen zum Erstellen eines Ordners finden Sie unter Organisieren von Objekten in der Amazon S3-Konsole mithilfe von Ordnern > im Amazon Simple Storage Service-Benutzerhandbuch.
-
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-stepAnweisungen finden Sie unterObjekte hochladen.
-
Schritt 2: Erstellen von IAM-Benutzern und einer Gruppe
Verwenden Sie nun die IAM-Konsole
Erstellen Sie auch eine administrative Gruppe mit dem Namen Consultants. Fügen Sie dann beide Benutzer zur Gruppe hinzu. step-by-stepAnweisungen 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-stepAnweisungen zum Erstellen eines neuen IAM-Benutzers finden Sie unter Erstellen eines IAM-Benutzers AWS-Konto in Ihrem 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-stepAnweisungen 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.
-
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.
-
Öffnen Sie die Amazon S3 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:ListAllMyBucketsbesitzen. -
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 Aktions3:ListBucketim Bucketcompanybucketbesitzen.
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.
-
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.
-
Erstellen Sie die verwaltete Richtlinie.
-
Wählen Sie links im Navigationsbereich Richtlinien und dann Richtlinie erstellen aus.
-
Wählen Sie den Tab JSON.
-
Kopieren Sie die folgende Zugriffsrichtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein.
Eine Richtlinie ist ein JSON-Dokument. Im Dokument ist ein
Statementein Array von Objekten, die jeweils eine Berechtigung unter Verwendung einer Sammlung von Namenswertpaaren beschreiben. Die vorangegangene Richtlinie beschreibt eine bestimmte Berechtigung. DieActiondefiniert den Zugriffstyp. In der Richtlinie ists3:ListAllMyBucketseine 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 desEffect-Elements bestimmt, ob die spezifische Berechtigung gewährt oder verweigert wird. -
Wählen Sie Review policy (Richtlinie überprüfen) aus. Geben Sie auf der nächsten Seite in das Feld Name
AllowGroupToSeeBucketListInTheConsoleein und wählen Sie dann 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.
-
-
Weisen Sie die von
AllowGroupToSeeBucketListInTheConsoleverwaltete Richtlinie, die Sie erstellt haben, der GruppeConsultantszu.step-by-stepAnweisungen 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.
-
Die Berechtigung testen.
-
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.
-
Öffnen Sie die Amazon S3 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 Unternehmens-Bucket 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 auswählen, die Antwort, die Amazon S3 zurückgibt, und wie die Konsole die Antwort interpretiert, untersuchen Sie den Ablauf etwas genauer.
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
prefixmit einer leeren Zeichenfolge als Wert. -
Der Parameter
delimitermit/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
prefixmit dem WertDevelopment/. -
Der Parameter
delimitermit 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
-
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.
-
Ersetzen Sie die vorhandene
AllowGroupToSeeBucketListInTheConsole-verwaltete Richtlinie, die der Gruppes3:ListBucketzugeordnet ist, durch die folgende Richtlinie, durch die die AktionConsultantsebenfalls gestattet wird. Denken Sie daran,in der RichtliniecompanybucketResourcedurch den Namen Ihres Buckets zu ersetzen.step-by-stepAnweisungen 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.
-
Testen Sie die aktualisierten Berechtigungen.
-
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 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
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
Developmentaufzurufen und abzulegen. -
Erlauben Sie Bob, Objekte im Ordner
Financeaufzurufen 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 Inline-Richtlinien finden Sie unter Verwaltete Richtlinien und Inline-Richtlinien im IAM-Benutzerhandbuch.
-
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.
-
Erstellen Sie eine Inline-Richtlinie, um der Benutzerin Alice die Berechtigung zu erteilen, den Inhalt des Ordners
Developmentaufzulisten.-
Wählen Sie im Navigationsbereich auf der linken Seite Users (Benutzer) aus.
-
Klicken Sie auf den Benutzernamen Alice.
-
Wählen Sie auf der Benutzerdetailseite den Tab Permissions (Berechtigungen) und dann Add inline policy (Inline-Richtlinie hinzufügen).
-
Wählen Sie den Tab JSON.
-
Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein.
-
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 Richtlinie erstellen.
-
-
Testen Sie die geänderten Berechtigungen für Alice:
-
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 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
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
/Developmentauswählt, um die Liste der darin enthaltenen Objekte anzuzeigen, sendet die Amazon-S3-Konsole die AnforderungListObjectszusammen mit dem Präfix/Developmentan Amazon S3. Weil die Benutzerin die Erlaubnis besitzt, die Objektliste mit dem PräfixDevelopmentund dem Trennzeichen/zu sehen, gibt Amazon S3 die Objektliste mit dem SchlüsselpräfixDevelopment/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/*"] }
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich an der Konsole anzumelden.
-
Bearbeiten Sie die Inline-Richtlinie, die Sie im vorherigen Schritt erstellt haben.
Wählen Sie im Navigationsbereich auf der linken Seite Users (Benutzer) aus.
Klicken Sie auf den Benutzernamen Alice.
Wählen Sie auf der Benutzerdetailseite den Tab Permissions (Berechtigungen) aus und erweitern Sie den Bereich Inline Policies (Inline-Richtlinien).
Wählen Sie neben dem Namen der im vorherigen Schritt erstellten Richtlinie Edit Policy (Richtlinie bearbeiten) aus.
Kopieren Sie die folgende Richtlinie und fügen Sie sie in das Textfeld für die Richtlinie ein, wobei die vorhandene Richtlinie ersetzt wird.
-
Testen Sie die aktualisierte Richtlinie:
-
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 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Prüfen Sie in der Amazon-S3-Konsole, ob Alice nun im Ordner
Developmentein 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
Nullstellt sicher, dass die Anforderung von Alice den Parameterprefixenthält.Der Parameter
prefixerfordert einen ordnerartigen Zugriff. Wenn Sie eine Anfrage ohne den Parameterprefixsenden, gibt Amazon S3 alle Objektschlüssel zurück.Wenn die Anforderung den Parameter
prefixmit einem Nullwert enthält, wird der Ausdruck als wahr ausgewertet, womit die gesamte BedingungConditionwahr ist. Sie müssen eine leere Zeichenfolge für den Parameterprefixgestatten. 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
StringNotLikestellt sicher, dass die Anforderung scheitert, wenn der angegebene Wert des ParametersprefixnichtDevelopment/*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.
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-stepAnweisungen 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 nicht versehentlich einem Benutzer Berechtigung 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 OrderPrivateö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.
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Verwenden Sie Ihre AWS-Konto Anmeldeinformationen, nicht die eines IAM-Benutzers, um sich an der Konsole anzumelden.
-
Ersetzen Sie die vorhandene von
AllowGroupToSeeBucketListInTheConsoleverwaltete Richtlinie, die der GruppeConsultantszugeordnet ist, durch die folgende Richtlinie. Denken Sie daran, den Namenin der Richtlinie durch den Namen Ihres Buckets zu ersetzen.companybucketWeitere 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.
Schritt 8: Bereinigen
Öffnen Sie zur Bereinigung die IAM-Konsole
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
Verwalten von IAM-Richtlinien im IAM-Benutzerhandbuch