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
- Walkthrough-Übersicht
- Vorbereitung auf den Walkthrough
- Schritt 1: Erstellen eines Buckets
- Schritt 2: Erstellen von IAM-Benutzern und einer Gruppe
- Schritt 3: Überprüfen Sie, dass die IAM-Benutzer über keine Berechtigungen verfügen
- Schritt 4: Erteilen von Berechtigungen auf Gruppenebene
- Schritt 5: Der IAM-Benutzerin Alice spezifische Berechtigungen erteilen
- Schritt 6: Dem IAM-Benutzer Bob spezifische Berechtigungen erteilen
- Schritt 7: Absichern des Ordners „Private“
- Schritt 8: Bereinigen
- Zugehörige Ressourcen
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üsselDevelopment/
. Beachten Sie den als Trennzeichen dienenden abschließenden Schrägstrich (/
). -
Wenn Sie ein Objekt mit dem Namen
Projects1.xls
in den OrdnerDevelopment
hochladen, lädt die Konsole das Objekt hoch und weist ihm den SchlüsselDevelopment/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 OrdnerDevelopment
öffnen, listet die Konsole die Objekte im betreffenden Ordner auf. Im folgenden Beispiel enthält der OrdnerDevelopment
ein Objekt.Wenn die Konsole den Ordner
Development
im Bucketcompanybucket
auflistet, sendet sie eine Anforderung an Amazon S3, in der das PräfixDevelopment
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 Bucketcompanybucket
ein Objekt mit dem SchlüsselDevelopment/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/
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:
-
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 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.
Melden Sie sich bei der Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/
. -
Erstellen Sie einen Bucket.
step-by-step Eine Anleitung finden Sie unterErstellen eines Buckets.
-
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 ins3-dg.pdf
. -
Fügen Sie drei Ordner mit dem Namen
Private
,Finance
andDevelopment
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.
-
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
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.
-
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-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 Aktions3:ListBucket
im Bucketcompanybucket
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.
-
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 Policies (Richtlinien) und dann Create Policy (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.
{ "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. DieAction
definiert den Zugriffstyp. In der Richtlinie ists3: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 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
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.
-
-
Weisen Sie die von
AllowGroupToSeeBucketListInTheConsole
verwaltete Richtlinie, die Sie erstellt haben, der GruppeConsultants
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.
-
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-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 WertDevelopment/
. -
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
-
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:ListBucket
zugeordnet ist, durch die folgende Richtlinie, durch die die AktionConsultants
ebenfalls gestattet wird. Denken Sie daran, die RichtlinieResource
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":["/"] } } } ] } -
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-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
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.
-
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
Development
aufzulisten.-
Wählen Sie im Navigationsbereich auf der linken Seite Users (Benutzer) aus.
-
Wählen Sie 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 Richtlinientextfeld ein.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] } -
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).
-
-
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-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
/Development
auswählt, um die Liste der darin enthaltenen Objekte anzuzeigen, sendet die Amazon-S3-Konsole die AnforderungListObjects
zusammen mit dem Präfix/Development
an Amazon S3. Weil die Benutzerin die Erlaubnis besitzt, die Objektliste mit dem PräfixDevelopment
und 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 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.
-
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.
{ "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/*"] } ] }
-
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-Konsole unter https://console.aws.amazon.com/s3/
. -
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 Parameterprefix
enthält.Der Parameter
prefix
erfordert einen ordnerartigen Zugriff. Wenn Sie eine Anfrage ohne den Parameterprefix
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 BedingungCondition
wahr ist. Sie müssen eine leere Zeichenfolge für den Parameterprefix
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 Parametersprefix
nichtDevelopment/*
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 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 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.
-
Ersetzen Sie die vorhandene von
AllowGroupToSeeBucketListInTheConsole
verwaltete Richtlinie, die der GruppeConsultants
zugeordnet ist, durch die folgende Richtlinie. Denken Sie daran, den Namen
in der Richtlinie durch den Namen Ihres Buckets zu ersetzen.companybucket
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
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