Beispiel 4: Der Bucket-Eigentümer erteilt eine kontenübergreifende Berechtigung für Objekte, die ihm nicht gehören - Amazon Simple Storage Service

Beispiel 4: Der Bucket-Eigentümer erteilt eine kontenübergreifende Berechtigung für Objekte, die ihm nicht gehören

In diesem Beispielszenario sind Sie Eigentümer eines Buckets und haben andere AWS-Konten aktiviert, um Objekte hochzuladen. Wenn Sie die vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership für den Bucket angewendet haben, besitzen Sie alle Objekte im Bucket, einschließlich der Objekte, die von einem anderen AWS-Konto geschrieben wurden. Dies behebt das Problem, dass Objekte nicht im Besitz von Ihnen, dem Bucket-Eigentümer, gehören. Anschließend können Sie die Berechtigung an Benutzer in Ihrem eigenen Konto oder an andere AWS-Konten. Angenommen, die erzwungene Einstellung des Bucket-Eigentümers für S3 Object Ownership ist nicht aktiviert. Das bedeutet, Ihr Bucket kann Objekte enthalten, die anderen AWS-Konten gehören.

Angenommen, Sie müssen als Bucket-Eigentümer einem Benutzer in einem anderen Konto eine kontenübergreifende Berechtigung für Objekte erteilen, unabhängig davon, wer der Eigentümer ist. Dieser Benutzer könnte beispielsweise eine Buchhaltungsanwendung sein, die Zugriff auf Objekt-Metadaten benötigt. Es gibt zwei Kernprobleme:

  • Der Bucket-Eigentümer hat keine Berechtigungen für diese Objekte, die von anderen AWS-Konten erstellt wurden. Damit der Bucket-Eigentümer Berechtigungen für Objekte erteilen kann, die ihm nicht gehören, muss der Objekteigentümer, nämlich das AWS-Konto, das die Objekte erstellt hat, zuerst dem Bucket-Eigentümer die Berechtigung erteilen. Der Bucket-Eigentümer kann diese Berechtigungen delegieren.

  • Das Konto des Bucket-Eigentümers kann Berechtigungen an Benutzer in seinem eigenen Konto delegieren (siehe Beispiel 3: Bucket-Eigentümer, der Berechtigungen für Objekte erteilt, die ihm nicht gehören), aber es kann keine Berechtigungen für andere AWS-Konten delegieren, weil keine kontenübergreifende Delegation unterstützt wird.

In diesem Szenario kann der Bucket-Eigentümer eine AWS Identity and Access Management (IAM) Rolle erstellen, mit der Berechtigung zum Zugriff auf Objekte, und einem anderen AWS-Konto die Berechtigung erteilen, die Rolle vorübergehend zu übernehmen, sodass es Zugriff auf Objekte in dem Bucket erhält.

Anmerkung

Wenn ein anderes AWS-Konto ein Objekt in Ihren S3-Bucket hochlädt, besitzt dieses Konto (der Objektschreiber) standardmäßig das Objekt, hat Zugriff darauf und kann anderen Benutzern über ACLs Zugriff darauf gewähren. Sie können Object Ownership verwenden, um dieses Standardverhalten so zu ändern, dass ACLs deaktiviert sind und Sie als Bucket-Eigentümer automatisch jedes Objekt in Ihrem Bucket besitzen. Daher basiert die Zugriffskontrolle für Ihre Daten auf Richtlinien wie IAM-Richtlinien, S3-Bucket-Richtlinien, Endpunktrichtlinien für Virtual Private Cloud (VPC) und AWS Organizations Service-Kontrollrichtlinien (SCPs).

Die meisten modernen Anwendungsfälle in Amazon S3 erfordern keine ACLs mehr, und wir empfehlen Ihnen, ACLs zu deaktivieren, außer unter ungewöhnlichen Umständen, in denen Sie den Zugriff für jedes Objekt einzeln steuern müssen. Mit Object Ownership können Sie ACLs deaktivieren und sich auf Richtlinien für die Zugriffssteuerung verlassen. Wenn Sie ACLs deaktivieren, können Sie einfach einen Bucket mit Objekten verwalten, die von verschiedenen AWS-Konten hochgeladen wurden. Sie als Bucket-Eigentümer besitzen alle Objekte im Bucket und können den Zugriff darauf mithilfe von Richtlinien verwalten. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Hintergrund: Kontoübergreifende Berechtigungen und die Verwendung von IAM-Rollen

IAM-Rollen unterstützen verschiedene Szenarien, den Zugriff auf Ihre Ressourcen zu definieren. Der kontenübergreifende Zugriff ist eines der Schlüsselszenarien. In diesem Beispiel verwendet der Bucket-Eigentümer, Konto A, eine IAM-Rolle, um den Objektzugriff temporär kontenübergreifend an Benutzer in einem anderen AWS-Konto, Konto C, zu delegieren. Jeder von Ihnen erstellten IAM-Rolle sind zwei Richtlinien zugeordnet:

  • Eine Vertrauensrichtlinie, die ein anderes AWS-Konto identifiziert, das die Rolle einnehmen darf.

  • Eine Zugriffsrichtlinie, die definiert, welche Berechtigungen – z. B. s3:GetObject – zulässig sind, wenn jemand die Rolle einnimmt. Eine Liste aller Berechtigungen, die Sie in einer Richtlinie angeben können, finden Sie unter Amazon-S3-Aktionen.

Das in der Vertrauensrichtlinie identifizierte AWS-Konto erteilt dann seinem Benutzer die Berechtigung, die Rolle zu übernehmen. Der Benutzer kann dann wie folgt auf Objekte zugreifen:

  • Die Rolle einnehmen und daraufhin temporäre Sicherheitsanmeldeinformationen erhalten.

  • Verwenden der temporären Sicherheitsanmeldeinformationen, um auf die Objekte im Bucket zuzugreifen.

Weitere Informationen zu IAM-Rollen finden Sie unter IAM-Rollen im IAM-Benutzerhandbuch.

Nachfolgend finden Sie eine kurze Zusammenfassung der wichtigsten Details:

  1. Der Administrator-Benutzer von Konto A ordnet eine Bucket-Richtlinie zu, die Konto B die bedingte Berechtigung erteilt, Objekte hochzuladen.

  2. Der Administrator von Konto A erstellt eine IAM-Rolle, die eine Vertrauensbeziehung zu Konto C einrichtet, sodass Benutzer in diesem Konto auf Konto A zugreifen können. Die der Rolle zugeordnete Zugriffsrichtlinie beschränkt die Aktionen, die der Benutzer in Konto C machen kann, wenn er auf Konto A zugreift.

  3. Der Administrator von Konto B lädt ein Objekt in den Bucket hoch, der Konto A gehört, und erteilt dem Bucket-Eigentümer vollständige Berechtigungen.

  4. Der Administrator von Konto C erstellt einen Benutzer und ordnet ihm eine Benutzerrichtlinie zu, die dem Benutzer gestattet, die Rolle zu übernehmen.

  5. Der Benutzer in Konto C übernimmt zuerst die Rolle, womit er temporäre Sicherheitsanmeldeinformationen erhält. Unter Verwendung dieser temporären Sicherheitsanmeldeinformationen greift der Benutzer dann auf die Objekte im Bucket zu.

Für dieses Beispiel benötigen Sie drei Konten. Die folgende Tabelle zeigt, wie wir auf diese Konten und die Administrator-Benutzer in diesen Konten verweisen. Laut der IAM-Richtlinien (siehe Informationen zur Verwendung eines Administratorbenutzers zum Erstellen von Ressourcen und Erteilen von Berechtigungen) verwenden wir in dieser schrittweisen Anleitung nicht die Root-Anmeldeinformationen für das Konto. Stattdessen erstellen Sie einen Administrator-Benutzer in jedem Konto, und verwenden dessen Anmeldeinformationen, um Ressourcen zu erstellen und ihnen Berechtigungen zu erteilen.

AWS-Konto ID Konto bezeichnet als Administratorbenutzer im Konto

1111-1111-1111

Konto A

AccountAadmin

2222-2222-2222

Konto B

AccountBadmin

3333-3333-3333

Konto C

AccountCadmin

Schritt 0: Vorbereitung auf den Walkthrough

Anmerkung

Öffnen Sie gegebenenfalls einen Texteditor und schreiben Sie sich die Informationen innerhalb der einzelnen Schritte auf. Insbesondere brauchen Sie Konten-IDs, kanonische Benutzer-IDs, URLs für die Anmeldung von IAM-Benutzern für jedes Konto, das mit der Konsole verbunden wird, sowie die ARNs (Amazon Resource Names) der IAM-Benutzer und -Rollen.

  1. Stellen Sie sicher, dass Sie drei AWS-Konten haben und dass jedes Konto einen Administrator hat, wie in der Tabelle im vorigen Abschnitt gezeigt.

    1. Melden Sie sich nach Bedarf bei den AWS-Konten an. Wir bezeichnen diese Konten als Konto A, Konto B und Konto C.

      1. Wechseln Sie zu https://aws.amazon.com/s3/ und klicken Sie auf Create an AWS Account (Ein AWS-Konto erstellen).

      2. Folgen Sie den Anweisungen auf dem Bildschirm.

        AWS wird per E-Mail von uns benachrichtigt, sobald Ihr Konto aktiv ist und verwendet werden kann.

    2. Melden Sie sich mit den Anmeldeinformationen für Konto A an der IAM-Konsole an und erstellen Sie wie folgt einen Administrator-Benutzer:

      • Erstellen Sie den Benutzer AccountAadmin und schreiben Sie sich die Sicherheitsanmeldeinformationen auf. Weitere Informationen zum Hinzufügen von Benutzern finden Sie unter Erstellen eines IAM-Benutzers in Ihrem AWS-Konto im IAM-Benutzerhandbuch.

      • Erteilen Sie dem Administrator AccountAadmin Berechtigungen, indem Sie ihm eine Benutzerrichtlinie zuordnen, die ihm vollen Zugriff bietet. Weitere Informationen finden Sie unter Arbeiten mit Richtlinien im IAM-Benutzerhandbuch.

      • Schreiben Sie sich auf dem Dashboard der IAM-Konsole die URL für die Anmeldung des IAM-Benutzers auf. Benutzer in diesem Konto müssen diese URL für die Anmeldung an der AWS Management Console verwenden. Weitere Informationen finden Sie unter Wie sich Benutzer in Ihrem Konto anmelden im IAM-Benutzerhandbuch.

    3. Wiederholen Sie den obigen Schritt, um Administrator-Benutzer in Konto B und Konto C zu erstellen.

  2. Notieren Sie für Konto C die kanonische Benutzer-ID.

    Wenn Sie eine IAM-Rolle in Konto A erstellen, erteilt die Vertrauensrichtlinie Konto C die Berechtigung, die Rolle durch Angabe der Konto-ID zu übernehmen. Sie finden die Konteninformationen wie folgt:

    1. Verwenden Sie Ihre AWS-Konto-ID oder Ihren Konto-Alias, Ihren IAM-Benutzernamen und Ihr Passwort, um sich an der Amazon-S3-Konsole anzumelden.

    2. Wählen Sie den Namen eines Amazon-S3-Buckets aus, um die Details zu diesem Bucket anzuzeigen.

    3. Klicken Sie auf den Tab Berechtigungen und anschließend auf Access Control List.

    4. Im Abschnitt Access for your AWS-Konto (Zugriff für Ihr AWS-Konto) in der Spalte Konto befindet sich eine lange Kennung, z. B. c1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6. Dies ist Ihre kanonische Benutzer-ID.

  3. Für das Erstellen einer Bucket-Richtlinie benötigen Sie die folgenden Informationen. Schreiben Sie sich diese Werte auf:

    • Kanonische Benutzer-ID von Konto A – Wenn der Administrator von Konto A dem Administrator von Konto B die bedingte Berechtigung erteilt, Objekte hochzuladen, gibt die Bedingung die kanonische Benutzer-ID des Benutzers von Konto A an, der vollständige Kontrolle über die Objekte benötigt.

      Anmerkung

      Die kanonische Benutzer-ID ist ein nur für Amazon S3 geltendes Konzept. Es handelt sich dabei um eine 64 Zeichen lange verschleierte Version der Konto-ID.

    • Benutzer-ARN für den Administrator von Konto B – Die Benutzer-ARN finden Sie in der IAM-Konsole. Wählen Sie den Benutzer aus. Sie finden die ARN des Benutzers im Tab Summary.

      In der Bucket-Richtlinie erteilen Sie AccountBadmin die Berechtigung, Objekte hochzuladen, und Sie geben unter Verwendung des ARN den Benutzer an. Ein Beispiel für einen ARN-Wert:

      arn:aws:iam::AccountB-ID:user/AccountBadmin
  4. Einrichten der AWS Command Line Interface (CLI) oder von AWS Tools for Windows PowerShell. Stellen Sie sicher, dass Sie die Anmeldeinformationen speichern, wie folgt:

    • Wenn Sie die AWS CLI verwenden, erstellen Sie die Profile, AccountAadmin und AccountBadmin, in der Config-Datei.

    • Wenn Sie AWS Tools for Windows PowerShell verwenden, stellen Sie sicher, dass sie die Anmeldeinformationen für die Sitzung als AccountAadmin und AccountBadmin speichern.

    Detaillierte Anweisungen finden Sie unter Einrichten der Tools für die beispielhaften Walkthroughs.

Schritt 1: Erledigen der Aufgaben von Konto A

In diesem Beispiel ist Konto A der Bucket-Eigentümer. Der Benutzer AccountAadmin in Konto A erstellt also einen Bucket, ordnet eine Bucket-Richtlinie zu, die dem Administrator von Konto B die Berechtigung zum Hochladen von Objekten erteilt, erstellt eine IAM-Rolle, die Konto C die Berechtigung erteilt, die Rolle zu übernehmen, so dass es auf Objekte im Bucket zugreifen kann.

Schritt 1.1: Melden Sie sich bei der AWS Management Console an.

Melden Sie sich unter Verwendung der URL für die Anmeldung als IAM-Benutzer für Konto A zuerst als Benutzer AccountAadmin bei der AWS Management Console an. Dieser Benutzer erstellt einen Bucket und ordnet ihm eine Richtlinie zu.

Schritt 1.2: Erstellen eines Buckets und Anfügen einer Richtlinie

Führen Sie in der Amazon-S3-Konsole die folgenden Schritte aus:

  1. Erstellen Sie einen Bucket. Diese Übung setzt voraus, dass der Bucket-Name examplebucket ist.

    Detaillierte Anweisungen finden Sie unter Erstellen eines Buckets.

  2. Ordnen Sie die folgende Bucket-Richtlinie zu, die dem Administrator von Konto B die bedingte Berechtigung erteilt, Objekte hochzuladen.

    Sie müssen die Richtlinie aktualisieren, indem Sie Ihre eigenen Werte für examplebucket, AccountB-ID und CanonicalUserId-of-AWSaccountA-BucketOwner angeben.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*" }, { "Sid": "112", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Condition": { "StringNotEquals": { "s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-BucketOwner" } } } ] }

Schritt 1.3: Erstellen einer IAM-Rolle, um Konto C kontenübergreifenden Zugriff in Konto A zu erteilen

Erstellen Sie in der IAM-Konsole eine IAM-Rolle ("examplerole"), die Konto C die Berechtigung erteilt, die Rolle zu übernehmen. Stellen Sie sicher, dass sie noch als Administrator von Konto A angemeldet sind, weil die Rolle in Konto A erstellt werden muss.

  1. Bevor Sie die Rolle erstellen, richten Sie die verwaltete Richtlinie ein, die die von der Rolle benötigten Berechtigungen definiert. Diese Richtlinie fügen Sie zu einem späteren Zeitpunkt der Rolle an.

    1. Klicken Sie im Navigationsbereich links auf Policies und dann auf Create Policy.

    2. Klicken Sie neben Create Your Own Policy auf Select.

    3. Geben Sie access-accountA-bucket in das Feld Policy Name ein.

    4. Kopieren Sie die folgende Zugriffsrichtlinie und fügen Sie sie in das Feld Policy Document ein. Die Zugriffsrichtlinie erteilt der Rolle die Berechtigung s3:GetObject, wenn also der Benutzer von Konto C die Rolle übernimmt, kann er nur die Operation s3:GetObject ausführen.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
    5. Klicken Sie auf Create Policy.

      Die neue Richtlinie wird in der Liste der verwalteten Richtlinien angezeigt.

  2. Klicken Sie im Navigationsbereich links auf Roles und dann auf Create New Role.

  3. Wählen Sie unter Select Role Type (Rollentyp auswählen) Role for Cross-Account Access (Rolle für kontoübergreifenden Zugriff) aus und klicken Sie auf die Schaltfläche Select (Auswählen) neben Provide access between AWS-Konten you own (Zugriff zwischen AWS-Konten-Konten, die Sie besitzen, bereitstellen).

  4. Geben Sie die Konto-ID von Konto C ein.

    In dieser Schritt-für-Schritt-Anleitung müssen Sie noch nicht die Multi-Factor Authentication (MFA) von den Benutzern verlangen, um die Rolle zu übernehmen. Aktivieren Sie daher diese Option noch nicht.

  5. Klicken Sie auf Next Step (Nächster Schritt), um die mit der Rolle verknüpften Berechtigungen einzurichten.

  6. Aktivieren Sie das Kontrollkästchen neben der zuvor erstellten Richtlinie access-accountA-bucket und klicken Sie auf Next Step.

    Die Prüfseite wird angezeigt, sodass Sie die Einstellungen bestätigen können, bevor Sie die Rolle erstellen. Ein sehr wichtiges, auf dieser Seite zu beachtendes Element ist der Link, den Sie an die Benutzer senden können, die die Rolle verwenden müssen. Die Benutzer, die auf den Link klicken, werden direkt zur Seite Switch Role geleitet, in der die Felder Account ID und Role Name bereits ausgefüllt sind. Dieser Link wird auch auf der Seite Role Summary für beliebige kontoübergreifende Rollen angezeigt.

  7. Geben Sie examplerole für den Rollennamen ein und klicken Sie dann auf Next Step.

  8. Nachdem Sie die Rolle überprüft haben, klicken Sie auf Create Role.

    Die Rolle examplerole wird in der Liste der Rollen angezeigt.

  9. Klicken Sie auf den Rollennamen examplerole.

  10. Wählen Sie den Tab Trust Relationships.

  11. Klicken Sie auf Show policy document und überprüfen Sie, ob die angezeigte Vertrauensrichtlinie mit der folgenden Richtlinie übereinstimmt.

    Die folgende Vertrauensrichtlinie richtet eine Vertrauensbeziehung zu Konto C ein und gestattet ihm die Aktion sts:AssumeRole. Weitere Informationen finden Sie unter AssumeRole in der AWS Security Token Service-API-Referenz.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountC-ID:root" }, "Action": "sts:AssumeRole" } ] }
  12. Schreiben Sie sich den Amazon-Ressourcennamen (ARN) der von Ihnen erstellten Rolle examplerole auf.

    In den nachfolgenden Schritten ordnen Sie eine Benutzerrichtlinie ein, um einem IAM-Benutzer zu erlauben, diese Rolle einzunehmen. Sie identifizieren die Rolle über den ARN-Wert.

Schritt 2: Erledigen der Aufgaben von Konto B

Der Beispiel-Bucket, der Konto A gehört, benötigt Objekte, die anderen Konten gehören. In diesem Schritt lädt der Administrator von Konto B unter Verwendung der Befehlszeilen-Tools ein Objekt hoch.

  • Laden Sie unter Verwendung des AWS CLI-Befehls put-object ein Objekt in den examplebucket hoch.

    aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body HappyFace.jpg --grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin

    Beachten Sie Folgendes:

    • Der Parameter --Profile gibt das Profil AccountBadmin an, das Objekt gehört also Konto B.

    • Der Parameter grant-full-control erteilt dem Bucket-Eigentümer vollständige Berechtigungen für das Objekt, wie für die Bucket-Richtlinie erforderlich.

    • Der Parameter --body identifiziert die hochzuladende Quelldatei. Befindet sich die Datei beispielsweise auf dem Laufwerk C: eines Windows-Computers, geben Sie c:\HappyFace.jpg an.

Schritt 3: Erledigen der Aufgaben von Konto C

In den vorigen Schritten hat Konto A bereits eine Rolle erstellt, examplerole, die eine Vertrauensbeziehung zu Konto C einrichtet. Aus diesem Grund können die Benutzer in Konto C auf Konto A zugreifen. In diesem Schritt erstellt der Administrator von Konto C einen Benutzer (Dave) und delegiert die Berechtigung sts:AssumeRole an ihn, die er von Konto A erhalten hat. Damit kann Dave examplerole übernehmen und erhält temporären Zugriff auf Konto A. Die Zugriffsrichtlinie, die Konto A der Rolle zugeordnet hat, beschränkt die Aktionen, die Dave ausführen kann, wenn er auf Konto A zugreift – insbesondere, Objekte in examplebucket hochzuladen.

Schritt 3.1: Erstellen eines Benutzers in Konto C und Delegieren der Berechtigung, examplerole anzunehmen

  1. Melden Sie sich zuerst unter Verwendung der URL für die Anmeldung als IAM-Benutzer für Konto C als Benutzer AccountCadmin bei der AWS Management Console an.

  2. Erstellen Sie in der IAM-Konsole einen Benutzer Dave.

    Detaillierte Anleitungen finden Sie unter Creating IAM Users (AWS Management Console) (Erstellen von IAM-Benutzern) im IAM-Benutzerhandbuch.

  3. Schreiben Sie sich die Anmeldeinformationen für Dave auf. Dave benötigt diese Anmeldeinformationen, um die Rolle examplerole zu übernehmen.

  4. Erstellen Sie eine interne Richtlinie für den IAM-Benutzer Dave, um die Berechtigung sts:AssumeRole für Dave für die Rolle examplerole in Konto A zu delegieren.

    1. Klicken Sie im linken Navigationsbereich auf Users.

    2. Klicken Sie auf den Benutzernamen Dave.

    3. Wählen Sie auf der Seite mit den Benutzerinformationen den Tab Permissions aus und erweitern Sie den Abschnitt Inline Policies.

    4. Wählen Sie hier klicken (oder Create User Policy).

    5. Klicken Sie auf Custom Policy und dann auf Select.

    6. Geben Sie einen Namen für die Richtlinie in das Feld Policy Name ein.

    7. Kopieren Sie die folgende Richtlinie in das Feld Policy Document:.

      Sie müssen die Richtlinie aktualisieren, indem Sie die ID von Konto A angeben.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::AccountA-ID:role/examplerole" } ] }
    8. Klicken Sie auf Apply Policy.

  5. Speichern Sie die Anmeldeinformationen von Dave in der Config-Datei der AWS CLI, indem Sie ein weiteres Profil hinzufügen, AccountCDave.

    [profile AccountCDave] aws_access_key_id = UserDaveAccessKeyID aws_secret_access_key = UserDaveSecretAccessKey region = us-west-2

Schritt 3.2: Übernehmen der Rolle (examplerole) und Zugreifen auf Objekte

Jetzt kann Dave auf Objekte in dem Bucket zugreifen, der Konto A gehört, nämlich wie folgt:

  • Dave übernimmt zuerst die examplerole unter Verwendung seiner eigenen Anmeldeinformationen. Damit werden temporäre Anmeldeinformationen zurückgegeben.

  • Unter Verwendung der temporären Anmeldeinformationen greift Dave dann auf die Objekte im Bucket von Konto A zu.

  1. Führen Sie in der Befehlszeile den folgenden AWS CLI-Befehl assume-role aus. Verwenden Sie dazu das Profil AccountCDave.

    Sie müssen in dem Befehl den ARN-Wert aktualisieren, indem Sie die ID von Konto A angeben, in dem examplerole definiert ist.

    aws sts assume-role --role-arn arn:aws:iam::accountA-ID:role/examplerole --profile AccountCDave --role-session-name test

    Der AWS Security Token Service STS (Security Token Service) wiederum gibt temporäre Sicherheits-Anmeldeinformationen zurück (Zugriffsschlüssel-ID, geheimen Zugriffsschlüssel und ein Sitzungstoken).

  2. Speichern Sie die temporären Sicherheitsanmeldeinformationen in der AWS CLI-Config-Datei unter dem Profil TempCred.

    [profile TempCred] aws_access_key_id = temp-access-key-ID aws_secret_access_key = temp-secret-access-key aws_session_token = session-token region = us-west-2
  3. Führen Sie in der Befehlszeile den folgenden AWS CLI-Befehl aus, um auf Objekte zuzugreifen. Verwenden Sie dazu die temporären Anmeldeinformationen. Beispielsweise gibt der Befehl die Head-Objekt API an, um die Objekt-Metadaten für das Objekt HappyFace.jpg abzurufen.

    aws s3api get-object --bucket examplebucket --key HappyFace.jpg SaveFileAs.jpg --profile TempCred

    Die examplerole zugeordnete Zugriffsrichtlinie erlaubt die Aktionen, deshalb verarbeitet Amazon S3 die Anforderung. Sie können das mit jeder anderen Aktion für jedes andere Objekt im Bucket ausprobieren.

    Wenn Sie eine andere Aktion ausprobieren, z. B. get-object-acl, wird die Berechtigung verweigert, weil die Rolle diese Aktion nicht ausführen darf.

    aws s3api get-object-acl --bucket examplebucket --key HappyFace.jpg --profile TempCred

    Wir haben den Benutzer Dave verwendet, um die Rolle zu übernehmen und unter Verwendung temporärer Anmeldeinformationen auf das Objekt zuzugreifen. Es könnte auch eine Anwendung in Konto C sein, die auf Objekte in examplebucket zugreift. Die Anwendung kann temporäre Anmeldeinformationen erhalten, und Konto C kann die Berechtigung der Anwendung delegieren, um examplerole zu übernehmen.

Schritt 4: Bereinigen

  1. Nachdem Sie mit den Tests fertig sind, räumen Sie wie folgt auf.

    1. Melden Sie sich mit den Anmeldeinformationen von Konto A an der AWS Management Console (AWS Management Console) an und machen Sie Folgendes:

      • Entfernen Sie in der Amazon-S3-Konsole die an examplebucket angefügte Bucket-Richtlinie. Löschen Sie in den 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 in der IAM-Konsole die examplerole, die Sie in Konto A erstellt haben.

      • Entfernen Sie in der IAM-Konsole den Benutzer AccountAadmin.

  2. Melden Sie sich mit den Anmeldeinformationen von Konto B an der AWS Management Console (AWS Management Console) an. Löschen Sie in der IAM-Konsole den Benutzer AccountBadmin.

  3. Melden Sie sich mit den Anmeldeinformationen von Konto C an der AWS Management Console (AWS Management Console) an. Löschen Sie in der IAM-Konsole den Benutzer AccountCadmin und den Benutzer Dave.

Zugehörige Ressourcen