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.
Beispiel 3: Bucket-Eigentümer, der Berechtigungen für Objekte erteilt, die ihm nicht gehören
Wichtig
Das Erteilen von Berechtigungen für IAM Rollen ist eine bessere Methode als das Erteilen von Berechtigungen für einzelne Benutzer. Weitere Informationen zur Vorgehensweise finden Sie unter Grundlegendes zu kontoübergreifenden Berechtigungen und zur Verwendung von Rollen IAM.
Themen
Das Szenario für dieses Beispiel ist, dass ein Bucket-Besitzer die Erlaubnis zum Zugriff auf Objekte gewähren möchte, aber der Bucket-Besitzer besitzt nicht alle Objekte im Bucket. In diesem Beispiel versucht der Bucket-Eigentümer, Benutzern in seinem eigenen Konto eine Berechtigung zu erteilen.
Ein Bucket-Besitzer kann anderen AWS-Konten das Hochladen von Objekten ermöglichen. Standardmäßig besitzt der Bucket-Eigentümer keine Objekte, die von einem anderen AWS-Konto in einen Bucket geschrieben wurden. Objekte gehören den Konten, die sie in einen S3-Bucket schreiben. Wenn der Bucket-Besitzer keine Objekte im Bucket besitzt, muss der Objekteigentümer dem Bucket-Besitzer zunächst mithilfe einer Objektzugriffskontrollliste (ACL) die Erlaubnis erteilen. Anschließend kann der Bucket-Besitzer einem Objekt, das er nicht besitzt, Berechtigungen gewähren. Weitere Informationen finden Sie unter Amazon-S3-Bucket- und Objekt-Eigentümerschaft.
Wenn der Bucket-Eigentümer die vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership für den Bucket anwendet, besitzt der Bucket-Eigentümer alle Objekte im Bucket, einschließlich der Objekte, die von einem anderen AWS-Konto geschrieben wurden. Dieser Ansatz löst das Problem, dass Objekte nicht dem Bucket-Besitzer gehören. Anschließend können Sie die Berechtigung an Benutzer in Ihrem eigenen Konto oder an andere AWS-Konten.
Anmerkung
S3 Object Ownership ist eine Einstellung auf Amazon S3 S3-Bucket-Ebene, mit der Sie sowohl das Eigentum an den Objekten kontrollieren können, die in Ihren Bucket hochgeladen werden, als auch um sie zu deaktivieren oder zu aktivieren. ACLs Standardmäßig ist für Object Ownership die erzwungene Einstellung des Bucket-Besitzers festgelegt, und alle sind ACLs deaktiviert. Wenn ACLs diese Option deaktiviert ist, besitzt der Bucket-Besitzer alle Objekte im Bucket und verwaltet den Zugriff darauf ausschließlich mithilfe von Zugriffsverwaltungsrichtlinien.
Für die meisten modernen Anwendungsfälle in Amazon S3 ist die Verwendung von nicht mehr erforderlichACLs. Wir empfehlen, die ACLs Option deaktiviert zu lassen, außer in Ausnahmefällen, in denen Sie den Zugriff für jedes Objekt einzeln steuern müssen. Wenn diese ACLs Option deaktiviert ist, können Sie mithilfe von Richtlinien den Zugriff auf alle Objekte in Ihrem Bucket steuern, unabhängig davon, wer die Objekte in Ihren Bucket hochgeladen hat. Weitere Informationen finden Sie unter Kontrolle des Besitzes von Objekten und Deaktivierung ACLs für Ihren Bucket.
In diesem Beispiel gehen wir davon aus, dass der Bucket-Eigentümer die vom Bucket-Eigentümer erzwungene Einstellung für Object Ownership nicht angewendet hat. Der Bucket-Eigentümer delegiert die Berechtigung an Benutzer in seinem eigenen Konto. Im Folgenden finden Sie eine Zusammenfassung der exemplarischen Schritte:
![Ein Bucket-Besitzer, der Berechtigungen für Objekte gewährt, die er nicht besitzt.](images/access-policy-ex3.png)
-
Der Administrator-Benutzer von Konto A ordnet eine Bucket-Richtlinie mit zwei Anweisungen zu.
-
Kontoübergreifende Berechtigung für Konto B, um Objekte hochzuladen.
-
Berechtigung für einen Benutzer in seinem eigenen Konto, auf Objekte im Bucket zuzugreifen.
-
-
Der Administrator-Benutzer für Konto B lädt Objekte in den Bucket hoch, der Konto A gehört.
-
Der Administrator für Konto B aktualisiert die Zuweisung ACL zum Hinzufügen von Objekten, die dem Bucket-Besitzer die volle Kontrolle über das Objekt gewährt.
-
Der Benutzer in Konto A überprüft dies durch Zugriff auf Objekte im Bucket, unabhängig davon, wem diese gehören.
Für dieses Beispiel benötigen Sie zwei Konten. Die folgende Tabelle zeigt, wie wir auf diese Konten und die Administrator-Benutzer in diesen Konten verweisen. In dieser exemplarischen Vorgehensweise verwenden Sie die Root-Benutzeranmeldedaten des Kontos nicht gemäß den empfohlenen IAM Richtlinien. Weitere Informationen finden Sie unter Informationen zur Verwendung eines Administratorbenutzers zum Erstellen von Ressourcen und Erteilen von Berechtigungen. Stattdessen erstellen Sie einen Administrator in jedem Konto, und verwenden dessen Anmeldeinformationen, um Ressourcen zu erstellen und ihnen Berechtigungen zu erteilen.
AWS-Konto ID | Konto bezeichnet als | Administrator im Konto |
---|---|---|
|
Konto A |
AccountAadmin |
|
Konto B |
AccountBadmin |
Alle Aufgaben in Verbindung mit dem Erstellen von Benutzern und Gewähren von Berechtigungen werden in der AWS Management Console ausgeführt. Um die Berechtigungen zu überprüfen, werden in der exemplarischen Vorgehensweise die Befehlszeilentools AWS Command Line Interface (AWS CLI) und verwendet AWS Tools for Windows PowerShell, sodass Sie keinen Code schreiben müssen.
Schritt 0: Vorbereitung auf den Walkthrough
-
Stellen Sie sicher, dass Sie über zwei Konten verfügen AWS-Konten und dass jedes Konto über einen Administrator verfügt, wie in der Tabelle im vorherigen Abschnitt dargestellt.
-
Melden Sie sich bei Bedarf für einen an AWS-Konto.
-
Melden Sie sich mit den Anmeldeinformationen von Konto A bei der IAMKonsole
an und gehen Sie wie folgt vor, um einen Administratorbenutzer zu erstellen: -
Erstellen Sie einen Benutzer
AccountAadmin
und notieren Sie sich die Sicherheitsanmeldedaten des Benutzers. Weitere Informationen zum Hinzufügen von Benutzern finden Sie im IAM Benutzerhandbuch unter Erstellen eines IAMBenutzers AWS-Konto in Ihrem. -
Gewähren Sie Administratorberechtigungen für, AccountAadminindem Sie eine Benutzerrichtlinie anhängen, die vollen Zugriff gewährt. Anweisungen finden Sie im IAMBenutzerhandbuch unter IAMRichtlinien verwalten.
-
Beachten Sie im IAMKonsolen-Dashboard
die IAMBenutzeranmeldung URL. Benutzer in diesem Konto müssen dies URL bei der Anmeldung bei der AWS Management Console verwenden. Weitere Informationen finden Sie im Benutzerhandbuch unter So melden sich IAM Benutzer bei Ihrem Konto an.
-
-
Wiederholen Sie den vorherigen Schritt mit den Anmeldeinformationen für Konto B und erstellen Sie einen Administratorbenutzer
AccountBadmin
.
-
-
Richten Sie entweder die Tools AWS CLI oder die Tools für Windows ein PowerShell. Stellen Sie sicher, dass Sie die Administratoranmeldeinformationen wie folgt speichern:
-
Wenn Sie das verwenden AWS CLI, erstellen Sie zwei Profile,
AccountAadmin
undAccountBadmin
, in der Konfigurationsdatei. -
Wenn Sie die Tools für Windows verwenden PowerShell, stellen Sie sicher, dass Sie die Anmeldeinformationen für die Sitzung als
AccountAadmin
und speichernAccountBadmin
.
Anweisungen finden Sie unter Einrichtung der Tools für die exemplarischen Vorgehensweisen.
-
Schritt 1: Erledigen der Aufgaben von Konto A
Führen Sie für Konto A die folgenden Schritte aus:
Schritt 1.1: Anmelden bei der Konsole
Melden Sie sich mit der IAM Benutzeranmeldung URL für Konto A beim AccountAadmin
Benutzer AWS Management Console als Benutzer an. Dieser Benutzer erstellt einen Bucket und ordnet ihm eine Richtlinie zu.
Schritt 1.2: Erstellen eines Buckets und eines Benutzers und Hinzufügen einer Bucket-Richtlinie, um Benutzerberechtigungen zu erteilen
-
Erstellen Sie in der Amazon-S3-Konsole einen Bucket. In dieser Übung wird davon ausgegangen, dass der Bucket im Osten der USA (Nord-Virginia) AWS-Region erstellt wurde und der Name lautet
.amzn-s3-demo-bucket1
Anweisungen finden Sie unter Erstellen eines Buckets.
-
Erstellen Sie in der IAMKonsole
einen Benutzer Dave
.step-by-step Anweisungen finden Sie im Benutzerhandbuch unter IAMBenutzer erstellen (Konsole). IAM
-
Notieren Sie sich die Anmeldeinformationen des Benutzers Dave.
-
Weisen Sie in der Amazon-S3-Konsole die folgende Bucket-Richtlinie dem
-Bucket zu. Anweisungen finden Sie unter Hinzufügen einer Bucket-Richtlinie mit der Amazon-S3-Konsole. Folgen Sie den Schritten, um eine Bucket-Richtlinie hinzuzufügen. Informationen dazu, wie Sie ein Konto findenIDs, finden Sie unter Ihre AWS-Konto ID finden.amzn-s3-demo-bucket1
Die Richtlinie erteilt Konto B die Berechtigung
s3:PutObject
unds3:ListBucket
. Die Richtlinie gewährtDave
dem Benutzer auch dies3:GetObject
Erlaubnis.{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountB-ID
:root" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "arn:aws:s3:::amzn-s3-demo-bucket1
" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID
:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1
/*" ] } ] }
Schritt 2: Erledigen der Aufgaben von Konto B
Da Konto B nun über die erforderlichen Berechtigungen verfügt, um Vorgänge im Bucket von Konto A durchzuführen, geht der Administrator von Konto B wie folgt vor:
-
Lädt ein Objekt in den Bucket von Konto A hoch
-
Fügt dem Objekt einen Grant hinzuACL, um Account A, dem Bucket-Besitzer, die volle Kontrolle zu gewähren
Unter Verwendung des AWS CLI
-
Laden Sie mit dem
put-object
AWS CLI Befehl ein Objekt hoch. Der Parameter--body
im Befehl identifiziert die hochzuladende Quelldatei. Wenn sich die Datei beispielsweise auf demC:
Laufwerk einer Windows Maschine befindet, geben Sie anc:\HappyFace.jpg
. Der Parameter--key
gibt den Schlüsselnamen für das Objekt an.aws s3api put-object --bucket
amzn-s3-demo-bucket1
--key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin -
Fügen Sie dem Objekt einen Grant hinzuACL, um dem Bucket-Besitzer die volle Kontrolle über das Objekt zu gewähren. Informationen darüber, wie Sie eine kanonische Benutzer-ID finden, finden Sie unter Finden Sie die kanonische Benutzer-ID für Sie AWS-Konto im Referenzhandbuch zur AWS Kontoverwaltung.
aws s3api put-object-acl --bucket
amzn-s3-demo-bucket1
--key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
Verwenden der Tools für Windows PowerShell
-
Laden Sie mit dem
Write-S3Object
Befehl ein Objekt hoch.Write-S3Object -BucketName
amzn-s3-demo-bucket1
-key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin -
Fügen Sie dem Objekt einen Grant hinzuACL, um dem Bucket-Besitzer die volle Kontrolle über das Objekt zu gewähren.
Set-S3ACL -BucketName
amzn-s3-demo-bucket1
-Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden
Schritt 3: Testen der Berechtigungen
Überprüfen Sie nun, dass der Benutzer Dave in Konto A Zugriff auf das Objekt hat, das Konto B gehört.
Unter Verwendung des AWS CLI
-
Fügen Sie der AWS CLI Konfigurationsdatei die Anmeldeinformationen des Benutzers Dave hinzu und erstellen Sie ein neues Profil,
UserDaveAccountA
. Weitere Informationen finden Sie unter Einrichtung der Tools für die exemplarischen Vorgehensweisen.[profile UserDaveAccountA] aws_access_key_id =
access-key
aws_secret_access_key =secret-access-key
region =us-east-1
-
Führen Sie den
get-object
CLI Befehl aus, um ihn herunterzuladenHappyFace.jpg
und lokal zu speichern. Sie stellen dem Benutzer Dave Anmeldeinformationen bereit, indem Sie den Parameter--profile
hinzufügen.aws s3api get-object --bucket
amzn-s3-demo-bucket1
--key HappyFace.jpgOutputfile.jpg
--profile UserDaveAccountA
Verwenden der Tools für Windows PowerShell
-
Speichern Sie die AWS Anmeldeinformationen des Benutzers Dave als
UserDaveAccountA
im persistenten Speicher.Set-AWSCredentials -AccessKey
UserDave-AccessKey
-SecretKeyUserDave-SecretAccessKey
-storeas UserDaveAccountA -
Führen Sie den Befehl
Read-S3Object
aus, um das ObjektHappyFace.jpg
herunterzuladen und es lokal zu speichern. Sie stellen dem Benutzer Dave Anmeldeinformationen bereit, indem Sie den Parameter-StoredCredentials
hinzufügen.Read-S3Object -BucketName
amzn-s3-demo-bucket1
-Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA
Schritt 4: Bereinigen
-
Nachdem Sie mit dem Testen fertig sind, können Sie wie folgt aufräumen:
-
Melden Sie sich mit den Anmeldeinformationen von Konto A an der AWS Management Console
an und machen Sie Folgendes: -
Entfernen Sie in der Amazon S3 S3-Konsole die Bucket-Richtlinie, die angehängt ist an
amzn-s3-demo-bucket1
. Löschen Sie im Bucket Properties die Richtlinie im Abschnitt Permissions. -
Wenn der Bucket für diese Übung erstellt wurde, löschen Sie in der Amazon-S3-Konsole die Objekte und dann den Bucket.
-
Entfernen Sie den AccountAadminBenutzer in der IAMKonsole
. step-by-step Anweisungen finden Sie im IAMBenutzerhandbuch unter Löschen eines IAM Benutzers.
-
-
-
Melden Sie sich mit den Anmeldeinformationen von Konto B an der AWS Management Console
an. Löschen Sie den Benutzer in der IAMKonsole AccountBadmin .