Tutorial: Delegieren des Zugriffs in allen AWS-Konten mithilfe von IAM-Rollen - AWS Identity and Access Management

Tutorial: Delegieren des Zugriffs in allen AWS-Konten mithilfe von IAM-Rollen

In diesem Tutorial erfahren Sie, wie Sie mit einer Rolle den Zugriff auf Ressourcen in anderer Ihrer AWS-Konten namens Produktion und Entwicklung delegieren. Sie teilen Ressourcen in einem Konto mit Benutzern in einem anderen Konto. Indem Sie auf diese Weise den kontoübergreifenden Zugriff einrichten, müssen Sie keine einzelnen IAM-Benutzer in jedem Konto erstellen. Darüber hinaus müssen sich Benutzer nicht von einem Konto abmelden und bei einem anderen Konto anmelden, um auf Ressourcen in unterschiedlichen AWS-Konten zuzugreifen. Nach der Konfiguration der Rolle wird erläutert, wie Sie die Rolle mit der AWS Management Console, der AWS CLI und der API verwenden können.

Anmerkung

IAM-Rollen und ressourcenbasierte Richtlinien delegieren den Zugriff auf Konten nur innerhalb einer einzelnen Partition. Nehmen wir zum Beispiel an, Sie haben ein Konto in US West (Nordkalifornien) in der Standardpartition aws. Sie haben auch ein Konto in China (Peking) in der aws-cn-Partition. Sie können keine ressourcenbasierte Amazon S3-Richtlinie in Ihrem Konto in China (Peking) verwenden, um Benutzern in Ihrem Standard-aws-Konto den Zugriff zu ermöglichen.

In diesem Tutorial verwaltet die Produktionsabrechnung Live-Anwendungen. Entwickler und Tester verwenden das Entwicklungskonto als eine Sandbox, um Anwendungen frei zu testen. In jedem Konto werden Anwendungsinformationen in Amazon-S3-Buckets gespeichert. Sie verwalten IAM-Benutzer im Entwicklungskonto, in dem Sie über zwei IAM-Gruppen verfügen: Entwickler und Tester. Die Benutzer in beiden Gruppen verfügen über Berechtigungen für die Nutzung des Development-Kontos und den Zugriff auf dessen Ressourcen. Von Zeit zu Zeit muss ein Entwickler die Live-Anwendungen in der Produktionsabrechnung aktualisieren. Die Entwickler speichern diese Anwendungen in einem Amazon-S3-Bucket mit dem Namen productionapp.

Am Ende dieses Tutorials ist Folgendes verfügbar:

  • Benutzer im Entwicklungskonto (das vertrauenswürdige Konto), die eine bestimmte Rolle in der Produktionsabrechnung übernehmen dürfen.

  • Eine Rolle in der Produktionsabrechnung (das vertrauende Konto), die auf einen bestimmten Amazon-S3-Bucket zugreifen darf.

  • Ein productionapp-Bucket in der Produktionsabrechnung.

Entwickler können die Rolle in der AWS Management Console für den Zugriff auf den productionapp-Bucket in der Produktionsabrechnung verwenden. Sie können auf den Bucket auch mithilfe von API-Aufrufen zugreifen, die anhand von der Rolle bereitgestellten temporären Anmeldeinformationen authentifiziert werden. Tester können diese Rolle nicht verwenden.

Dieser Workflow umfasst drei grundlegende Schritte:

Erstellen einer Rolle im Produktionskonto

Zunächst verwenden Sie die AWS Management Console, um Vertrauen zwischen der Produktionsabrechnung (ID-Nummer 999999999999) und dem Entwicklungskonto (ID-Nummer 111111111111) herzustellen. Beginnen Sie mit dem Erstellen einer IAM-Rolle mit dem Namen UpdateApp. Wenn Sie die Rolle erstellen, definieren Sie das Entwicklungskonto als vertrauenswürdige Entität und geben Sie eine Berechtigungsrichtlinie an, die den vertrauenswürdigen Benutzern die Aktualisierung des productionapp-Buckets gestattet.

Erteilen der Zugriffsberechtigung auf die Rolle

In diesem Abschnitt ändern Sie die IAM-Benutzergruppenrichtlinie so, dass Testern der Zugriff auf die UpdateApp-Rolle verweigert wird. Da die Tester in diesem Szenario über PowerUser-Zugriff verfügen, muss der Zugriff auf die Rolle explizit verweigert werden.

Testen des Zugriffs durch Rollenwechsel

Schließlich verwenden Sie als Entwickler die UpdateApp-Rolle zum Aktualisieren des productionapp-Buckets in der Produktionsabrechnung. Sie erfahren, wie Sie auf die Rolle über die AWS-Konsole, die AWS CLI und die API zugreifen können.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Folgendes bereits vorhanden ist:

  • Zwei getrennte AWS-Konten, von denen Sie eins als Entwicklungskonto und das andere als Produktionskonto verwenden können.

  • Benutzer und Benutzergruppen im Entwicklungskonto, wie folgt erstellt und konfiguriert:

    Benutzer Benutzergruppe Berechtigungen
    David Entwickler Beide Benutzer können sich anmelden und die AWS Management Console im Entwicklungskonto verwenden.
    Jane Tester
  • Sie benötigen keine Benutzer oder Benutzergruppen, die in der Produktionsabrechnung erstellt wurden.

  • Ein Amazon-S3-Bucket, das in der Produktionsabrechnung erstellt wurde. In diesem Tutorial nennen wir dies ProductionApp, S3-Bucket-Namen sind jedoch global eindeutig, daher müssen Sie einen Bucket mit einem anderen Namen verwenden.

Erstellen einer Rolle im Produktionskonto

Sie können Benutzern eines AWS-Konto erlauben, auf Ressourcen in einem anderen AWS-Konto zuzugreifen. Erstellen Sie dazu eine Rolle, die definiert, wer darauf zugreifen kann und welche Berechtigungen Benutzern gewährt werden, die wechseln.

In diesem Schritt des Tutorials erstellen Sie die Rolle in der Produktionsabrechnung und geben das Entwicklungskonto als vertrauenswürdige Entität an. Außerdem beschränken Sie die Berechtigungen der Rolle auf den Lese- und Schreibzugriff auf den Bucket productionapp. Jeder Benutzer, dem die Berechtigung zur Verwendung der Rolle erteilt wird, kann auf dem Bucket productionapp Lese- und Schreibvorgänge ausführen.

Bevor Sie eine Rolle erstellen können, müssen Sie die Konto-ID des Development-AWS-Konto ermitteln. Jedem AWS-Konto ist eine eindeutige Konto-ID zugewiesen.

So ermitteln Sie die ID des Entwicklungs-AWS-Konto
  1. Melden Sie sich bei der AWS Management Console als Administrator des Entwicklungskontos an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Klicken Sie im Navigationsbereich auf Support und dann auf Support Center. Ihre aktuell angemeldete 12-stellige Kontonummer (ID) wird im Bereich Support-Center-Navigationsbereich. Für dieses Szenario können Sie die Konto-ID 111111111111 für das Entwicklungskonto verwenden. Sie sollten jedoch eine gültige Konto-ID verwenden, wenn Sie das Szenario in Ihrer Testumgebung rekonstruieren.

So erstellen Sie eine Rolle im Produktionskonto, die vom Entwicklungs-Konto verwendet werden kann
  1. Melden Sie sich bei der AWS Management Console als Administrator der Produktionsabrechnung an und öffnen Sie die IAM-Konsole.

  2. 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.

    Sie möchten Lese- und Schreibberechtigungen für den Bucket productionapp erteilen. Obwohl AWS einige von Amazon S3 verwaltete Richtlinien bereitstellt, gibt es keine, die Lese- und Schreibzugriff auf einen einzelnen Amazon S3-Bucket ermöglicht. Sie können aber Ihre eigene Richtlinie erstellen.

    Wählen Sie im Navigationsbereich Policies (Richtlinien) und dann Create policy (Richtlinie erstellen) aus.

  3. Wählen Sie die Registerkarte JSON aus und kopieren Sie den Text aus dem folgenden JSON-Richtliniendokument. Fügen Sie den Text in das Textfeld JSON ein und ersetzen Sie dabei den Ressourcen-ARN (arn:aws:s3:::productionapp) durch den passenden ARN für Ihren Amazon-S3-Bucket.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::productionapp/*" } ] }

    Die Aktion ListAllMyBuckets gewährt die Berechtigung zum Auflisten aller Buckets, die dem authentifizierten Sender der Anforderung gehören. Die Berechtigung ListBucket ermöglicht den Benutzern, Objekte im Bucket productionapp anzuzeigen. Die Berechtigungen GetObject, PutObject und DeleteObject ermöglichen den Benutzern, Inhalte im Bucket productionapp anzuzeigen, zu aktualisieren und zu löschen.

  4. Beheben Sie alle Sicherheitswarnungen, Fehler oder allgemeinen Warnungen, die während der Richtlinien-Validierung erzeugt wurden, und wählen Sie dann Next (Weiter).

    Anmerkung

    Sie können jederzeit zwischen den Editoroptionen Visual und JSON wechseln. Wenn Sie jedoch Änderungen vornehmen oder im Visual-Editor Next (Weiter) wählen, strukturiert IAM Ihre Richtlinie möglicherweise um, um sie für den visuellen Editor zu optimieren. Weitere Informationen finden Sie unter Umstrukturierung einer Richtlinie.

  5. Geben Sie auf der Seite Review and create (Überprüfen und erstellen) als Richtliniennamen read-write-app-bucket ein. Überprüfen Sie die von ihrer Richtlinie erteilten Berechtigungen und wählen Sie dann zum Speichern Ihrer Arbeit Create policy (Richtlinie erstellen) aus.

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

  6. Wählen Sie im Navigationsbereich Roles und dann Create role.

  7. Wählen Sie den Rollentyp AWS-Konto.

  8. Geben Sie für Account ID (Konto-ID), die Entwicklungskonto-ID an.

    In diesem Tutorial wird für das Entwicklungs-Konto die Beispiel-Konto-ID 111111111111 verwendet. Verwenden Sie eine gültige Konto-ID. Wenn Sie eine ungültige Konto-ID verwenden, wie z. B. 111111111111, lässt Sie IAM keine neue Rolle erstellen.

    Zu diesem Zeitpunkt benötigen Sie jedoch noch keine externe ID und müssen keine Multi-Faktor-Authentifizierung (MFA) von den Benutzern verlangen, um die Rolle zu übernehmen. Wählen Sie daher diese Option nicht. Weitere Informationen finden Sie unter Verwenden von Multi-Factor Authentication (MFA) in AWS.

  9. Wählen Sie Next: Permissions (Weiter: Berechtigungen) aus, um die mit der Rolle verknüpften Berechtigungen einzurichten.

  10. Markieren Sie das Kontrollkästchen neben der vorher erstellten Richtlinie.

    Tipp

    Klicken Sie bei Filter auf Customer managed (Benutzerdefiniert), um nur die von Ihnen erstellten Richtlinien anzuzeigen. Dadurch werden die von AWS erstellten Richtlinien ausgeblendet und Ihnen wird das Auffinden der gesuchten Richtlinie erleichtert.

    Wählen Sie anschließend Weiter aus.

  11. (Optional) Fügen Sie der Rolle Metadaten hinzu, indem Sie Tags als Schlüssel-Wert-Paare anfügen. Weitere Informationen zur Verwendung von Tags in IAM finden Sie unter Markieren von IAM-Ressourcen.

  12. (Optional) Geben Sie unter Role description (Rollenbeschreibung) eine Beschreibung für die neue Rolle ein.

  13. Nachdem Sie die Rolle überprüft haben, klicken Sie auf Create role (Rolle erstellen).

    Die Rolle UpdateApp erscheint in der Liste der Rollen.

Jetzt müssen Sie den Amazon-Ressourcennamen (ARN) ermitteln. Dabei handelt es sich um eine eindeutige Kennung der Rolle. Wenn Sie die Richtlinie der Entwickler- und Tester-Benutzergruppe ändern, geben Sie den ARN der Rolle an, um Berechtigungen zu erteilen oder zu verweigern.

So erhalten Sie den ARN für UpdateApp
  1. Wählen Sie im Navigationsbereich der IAM Console Roles.

  2. Wählen Sie in der Rollenliste die Rolle UpdateApp.

  3. Im Abschnitt Summary (Übersicht) im Detailbereich kopieren Sie den Wert Role ARN (Rollen-ARN).

    Das Produktionskonto hat eine Konto-ID von 999999999999, die ARN der Rolle ist also arn:aws:iam::999999999999:role/UpdateApp. Stellen Sie sicher, dass Sie die tatsächliche AWS-Konto-ID für das Produktionskonto bereitstellen.

An diesem Punkt haben Sie eine Vertrauensstellung zwischen den Produktions- und Entwicklungskonten eingerichtet. Dazu haben Sie eine Rolle in der Produktionsabrechnung erstellt, die das Entwicklungskonto als vertrauenswürdigen Auftraggeber identifiziert. Sie haben auch definiert, was die Benutzer tun dürfen, die in die UpdateApp-Rolle wechseln.

Ändern Sie dann die Berechtigungen für die Benutzergruppen.

Erteilen der Zugriffsberechtigung auf die Rolle

An diesem Punkt verfügen sowohl die Tester als auch die Entwickler über Berechtigungen, um Anwendungen im Entwicklungskonto uneingeschränkt zu testen. Nachstehend werden die erforderlichen Schritte zum Hinzufügen von Berechtigungen beschrieben, um zur Rolle zu wechseln.

So ändern Sie die Entwickler-Gruppe, um ihr die Berechtigung zum Wechseln zur Rolle UpdateApp zu erteilen
  1. Melden Sie sich als Administrator beim Entwicklungskonto an und öffnen Sie die IAM-Konsole.

  2. Wählen Sie Groups (Gruppen) und dann Developers (Entwickler).

  3. Wählen Sie die Registerkarte Berechtigungen, wählen Sie Berechtigungen hinzufügen und wählen Sie dann Inline-Richtlinie erstellen.

  4. Wählen Sie den Tab JSON.

  5. Fügen Sie die folgende Richtlinienanweisung hinzu, um die Aktion AssumeRole in der Rolle UpdateApp im Production-Konto zu ermöglichen. Stellen Sie sicher, dass Sie PRODUCTION-ACCOUNT-ID in dem Resource-Element in die tatsächliche AWS-Konto-ID des Produktionskontos ändern.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    Die Aktion Allow gewährt der Entwickler-Gruppe explizit den Zugriff auf die Rolle UpdateApp im Production-Konto. Alle Entwickler können problemlos auf die Rolle zugreifen.

  6. Wählen Sie Review policy (Richtlinie prüfen).

  7. Geben Sie einen Namen ein, z. B. allow-assume-S3-role-in-production.

  8. Wählen Sie Create Policy (Richtlinie erstellen) aus.

In den meisten Umgebungen ist folgende Vorgehensweise wahrscheinlich nicht erforderlich. Wenn Sie jedoch PowerUserAccess-Berechtigungen verwenden, sind einige Gruppen möglicherweise bereits in der Lage, die Rolle zu wechseln. Das folgende Verfahren zeigt, wie Sie der Gruppe Tester die Berechtigung "Deny" hinzufügen, um sicherzustellen, dass sie die Rolle nicht übernehmen können. Wenn dieses Verfahren in Ihrer Umgebung nicht benötigt wird, empfehlen wir Ihnen, es nicht hinzuzufügen. "Deny"-Berechtigungen machen die Verwaltung und das Verständnis der gesamten Berechtigungsstruktur komplizierter. Verwenden Sie "Deny"-Berechtigungen nur, wenn es keine bessere Option gibt.

Um die Benutzergruppe der Tester so zu ändern, dass sie die Berechtigung zur Übernahme der UpdateApp-Rolle nicht erhält
  1. Wählen Sie Groups (Gruppen) und dann Testers (Tester).

  2. Wählen Sie die Registerkarte Berechtigungen, wählen Sie Berechtigungen hinzufügen und wählen Sie dann Inline-Richtlinie erstellen.

  3. Wählen Sie den Tab JSON.

  4. Fügen Sie die folgende Richtlinienanweisung hinzu, um die Aktion AssumeRole in der Rolle UpdateApp zu verweigern. Stellen Sie sicher, dass Sie PRODUCTION-ACCOUNT-ID in dem Resource-Element in die tatsächliche AWS-Konto-ID des Produktionskontos ändern.

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    Die Aktion Deny verweigert der Tester-Gruppe explizit den Zugriff auf die Rolle UpdateApp im Production-Konto. Allen Testern, die versuchen, auf die Rolle zuzugreifen, wird der Zugriff verweigert.

  5. Wählen Sie Review policy (Richtlinie prüfen).

  6. Geben Sie einen Namen wie deny-assume-S3-role-in-production ein.

  7. Wählen Sie Create Policy (Richtlinie erstellen) aus.

Die Entwickler-Gruppe verfügt jetzt über Berechtigungen für die Verwendung der Rolle UpdateApp im Production-Konto. Der Tester-Gruppe wird der Zugriff auf die Rolle UpdateApp verweigert.

Als Nächstes erfahren Sie, wie der Entwickler David auf den productionapp-Bucket in der Produktionsabrechnung zugreifen kann. David kann über die AWS Management Console, die AWS-API oder die AWS CLI auf den Bucket zugreifen.

Testen des Zugriffs durch Rollenwechsel

Nachdem Sie die ersten beiden Schritte dieses Tutorials abgeschlossen haben, verfügen Sie über eine Rolle, die den Zugriff auf eine Ressource in der Produktionsabrechnung gewährt. Außerdem verfügen Sie über eine Gruppe im Entwicklungskonto, deren Benutzer diese Rolle verwenden dürfen. In diesem Schritt wird erörtert, wie der Wechsel zu dieser Rolle über die AWS Management Console, AWS CLI und AWS-API getestet werden kann.

Wichtig

Um zu einer anderen Rolle zu wechseln, müssen Sie sich als IAM-Benutzer oder Verbundbenutzer angemeldet haben. Wenn Sie eine Amazon EC2-Instance starten, um eine Anwendung auszuführen, kann die Anwendung außerdem über ihr Instance-Profil eine Rolle übernehmen. Sie können nicht zu einer Rolle wechseln, wenn Sie sich als Root-Benutzer des AWS-Kontos anmelden.

Wechseln der Rollen (Konsole)

Wenn David in der Produktionsumgebung in der AWS Management Console arbeiten muss, ist dies unter Verwendung von Switch Role (Rolle wechseln) möglich. Nach Angabe der Konto-ID oder des Alias und des Rollennamens erfolgt sofort der Wechsel zu den von der Rolle erteilten Berechtigungen. Er kann dann die Konsole zum Arbeiten mit dem productionapp Bucket verwenden, allerdings hat er keinen Zugriff auf alle anderen Ressourcen in Produktion. Während David die Rolle verwendet, kann er auch nicht seine Power-User-Privilegien im Entwicklungskonto nutzen. Dies liegt daran, dass jeweils nur eine Gruppe von Berechtigungen wirksam sein kann.

Wichtig

Das Wechseln von Rollen über die AWS Management Console ist nur bei Konten möglich, für die kein ExternalId erforderlich ist. Nehmen wir an, dass Sie Dritten Zugriff auf Ihr Konto gewähren und eine ExternalId in einem Condition-Element in Ihrer Berechtigungsrichtlinie benötigen. In diesem Fall kann der Drittanbieter nur über die AWS-API oder ein Befehlszeilen-Tool auf Ihr Konto zugreifen. Der Dritte kann nicht die Konsole verwenden, da sie keine ExternalId bereitstellt. Weitere Informationen zu diesem Szenario finden Sie unter Verwenden einer externen ID, um Dritten Zugriff auf Ihre AWS-Ressourcen zu gewähren und So aktivieren Sie den kontoübergreifenden Zugriff auf die AWS Management Console im AWS-Sicherheits-Blog.

IAM bietet zwei Möglichkeiten, mit denen David die Seite Switch Role (Rolle wechseln) aufrufen kann:

  • David erhält einen Link von seinem Administrator, der auf eine vordefinierte Konfiguration zum Wechseln der Rolle verweist. Der Link wird dem Administrator auf der letzten Seite des Assistenten Create role (Rolle wechseln) oder auf der Seite Role Summary (Rollenübersicht) für kontoübergreifende Rollen bereitgestellt. Wenn David diesem Link folgt, wird er zur Seite Switch Role (Rolle wechseln) weitergeleitet, in der die Felder Account ID (Konto-ID) und Role name (Rollenname) bereits ausgefüllt sind. David muss lediglich Switch Roles (Rollen wechseln) auswählen.

  • Der Administrator sendet nicht den Link mit der E-Mail, sondern die Werte für die Konto-ID-Nummer und den Rollennamen. Um die Rollen zu wechseln, muss David die -Werte manuell eingeben. Dies wird in der folgenden Anleitung veranschaulicht.

So übernehmen Sie eine Rolle
  1. David meldet sich bei AWS Management Console mit seinem normalen Benutzernamen in der Entwicklungsbenutzergruppe an.

  2. Er wählt den Link, den ihm der Administrator per E-Mail zugeschickt hat. Dadurch wird David auf die Seite Switch Role (Rolle wechseln) weitergeleitet, in der die Angaben zu Konto-ID und Rollenname bereits ausgefüllt sind.

    –oder –

    David wählt seinen Namen (im Identity-Menü) auf der Navigationsleiste aus und wählt dann Switch Roles (Rollen wechseln).

    Wenn dies das erste Mal ist, dass David versucht, auf die Seite "Switch Role" zuzugreifen, landet er zunächst auf einer initialen Switch Role (Rolle wechseln)-Seite. Auf dieser Seite finden Sie weitere Informationen darüber, wie durch das Wechseln von Rollen die Benutzer befähigt werden, Ressourcen in verschiedenen AWS-Konten zu verwalten. David muss auf dieser Seite auf die Schaltfläche Switch Role (Rolle wechseln) klicken, um den Rest des beschriebenen Verfahrens abzuschließen.

  3. Als Nächstes muss David manuell die ID-Nummer des produktiven Kontos (999999999999) und den Rollennamen (UpdateApp) eingeben, um auf die Rolle zugreifen zu können.

    David möchte außerdem überwachen, welche Rollen und zugehörigen Berechtigungen derzeit in IAM aktiv sind. Zum Nachverfolgen dieser Informationen gibt er PRODUCTION in das Textfeld Display Name (Anzeigename) ein, wählt die Option für Rot und dann Switch Role (Rolle wechseln).

  4. David kann nun die Amazon S3-Konsole verwenden, um mit dem Amazon S3-Bucket oder einer anderen Ressource zu arbeiten, für die die UpdateApp-Rolle Berechtigungen hat.

  5. Sobald dies erledigt ist, kann David zu seinen ursprünglichen Berechtigungen zurückkehren. Hierzu muss er den Anzeigenamen der PRODUCTION-Rolle aus der Navigationsleiste wählen und dann Back to David @ 111111111111 (Zurück zu David @ 111111111111).

  6. Wenn David das nächste Mal die Rolle wechseln möchte und das Identitätsmenü in der Navigationsleiste aufruft, sieht er immer noch den Eintrag PRODUKTION vom letzten Mal. Durch Klicken auf diesen Eintrag kann er die Rolle sofort wechseln, ohne die Konto-ID und den Rollennamen erneut angeben zu müssen.

Wechseln der Rolle (AWS CLI)

Wenn David in der Produktionsumgebung mit der Befehlszeile arbeiten muss, ist dies über die AWS CLI möglich. Er führt den Befehl aws sts assume-role aus und übergibt den ARN der Rolle, um temporäre Sicherheitsanmeldeinformationen für diese Rolle zu erhalten. Anschließend konfiguriert er diese Anmeldeinformationen in Umgebungsvariablen, sodass die nachfolgenden AWS CLI-Befehle mit den Berechtigungen der Rolle ausgeführt werden. Solange David die Rolle verwendet, kann er nicht seine Power-User-Privilegien im Entwicklungskonto verwenden, da immer nur eine Gruppe von Berechtigungen gleichzeitig gültig sein kann.

Beachten Sie, dass alle Zugriffsschlüssel und Token nur Beispiele sind und nicht wie hier dargestellt verwendet werden können. Ersetzen Sie sie mit den entsprechenden Werten aus Ihrer Live-Umgebung.

So übernehmen Sie eine Rolle
  1. David öffnet ein Befehlszeilenfenster und bestätigt durch die Eingabe des folgenden Befehls, dass der AWS CLI-Client funktioniert:

    aws help
    Anmerkung

    Die Standardumgebung von David verwendet die Anmeldeinformationen des Benutzers David aus seinem Standardprofil, das er mit dem Befehl aws configure erstellt hat. Weitere Informationen finden Sie unter Konfigurieren der AWS Command Line Interface im AWS Command Line Interface-Leitfaden.

  2. Er beginnt mit dem Verfahren zum Wechseln der Rolle, indem er folgenden Befehl ausführt, um zur Rolle UpdateApp in der Produktionsabrechnung zu wechseln. Der ARN der Rolle wurde ihm vom Administrator, der die Rolle erstellt hat, mitgeteilt. Der Befehl erfordert, dass Sie außerdem einen Sitzungsnamen angeben. Sie können hierfür einen beliebigen Text eingeben.

    aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/UpdateApp" --role-session-name "David-ProdUpdate"

    David erhält dann die folgende Ausgabe:

    { "Credentials": { "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLE CvSRyh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDy EXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3Uuysg sKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87e NhyDHq6ikBQ==", "Expiration": "2014-12-11T23:08:07Z", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE" } }
  3. David sieht die drei Teile im Anmeldeinformationen-Abschnitt der Ausgabe, die er benötigt.

    • AccessKeyId

    • SecretAccessKey

    • SessionToken

    David muss die AWS CLI-Umgebung konfigurieren, um diese Parameter in den nachfolgenden Aufrufen zu verwenden. Weitere Informationen zu den verschiedenen Möglichkeiten zum Konfigurieren Ihrer Anmeldeinformationen finden Sie unter Konfigurieren der AWS Command Line Interface. Den Befehl aws configure können Sie nicht verwenden, da er nicht die Erfassung des Sitzungs-Token unterstützt. Sie können jedoch die Informationen manuell in eine Konfigurationsdatei eingeben. Da die Ablaufzeit dieser temporären Anmeldeinformationen relativ kurz ist, fügen Sie sie besser der Umgebung Ihrer aktuellen Befehlszeilensitzung hinzu.

  4. Um die drei Werte zur Umgebung hinzuzufügen, kopiert David die Ausgabe aus dem vorherigen Schritt und fügt sie in die folgenden Befehle ein. Fügen Sie die Ausgabe in einen einfachen Texteditor ein, um Probleme mit Zeilenumbrüchen in der Ausgabe des Sitzungs-Token zu vermeiden. Er muss als eine einzige lange Zeichenfolge hinzugefügt werden, auch wenn er hier aus Darstellungsgründen mit Zeilenumbrüchen angezeigt wird.

    Anmerkung

    Das folgende Beispiel zeigt Befehle in der Windows-Umgebung, wobei „set“ der Befehl zum Erstellen einer Umgebungsvariablen ist. Auf einem Linux- oder macOS-Computer würden Sie stattdessen den Befehl für „Exportieren“ verwenden. Alle anderen Teile des Beispiels sind in allen drei Umgebungen gültig.

    Details zur Verwendung von Tools für Windows PowerShell finden Sie hier: Wechseln zu einer IAM-Rolle (Tools for Windows PowerShell)

    set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvS Ryh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXA MPLEKEY9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UusKd EXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLENhykxiHen DHq6ikBQ==

    Ab diesem Zeitpunkt werden alle folgenden Befehle mit den Berechtigungen der von diesen Anmeldeinformationen identifizierten Rolle ausgeführt. Im Fall von David handelt es sich um die Rolle UpdateApp.

  5. Führen Sie den Befehl für den Zugriff auf die Ressourcen im Production-Konto. In diesem Beispiel listet David mit dem folgenden Befehl den Inhalt seines S3-Buckets auf.

    aws s3 ls s3://productionapp

    Da die Namen von Amazon-S3-Buckets universell eindeutig sind, muss die ID des Kontos, in dem der Bucket enthalten ist, nicht angegeben werden. Um auf Ressourcen von anderen AWS-Services zuzugreifen, finden Sie weitere Informationen zu den Befehlen und der Syntax, die zum Referenzieren von deren Ressourcen erforderlich sind, in der AWS CLI-Dokumentation des jeweiligen Services.

Verwenden von AssumeRole (AWS API)

Wenn David eine Aktualisierung des Codes für die Produktionsabrechnung vornehmen muss, führt er einen AssumeRole-Aufruf aus, um die UpdateApp-Rolle zu übernehmen. Der Aufruf gibt temporäre Anmeldeinformationen für den Zugriff auf den Bucket productionapp in der Produktionsabrechnung zurück. Mit diesen Anmeldeinformationen kann David API-Aufrufe ausführen, um den Bucket productionapp zu aktualisieren. Er kann jedoch keine API-Aufrufe für den Zugriff auf andere Ressourcen in der Produktionsabrechnung ausführen, selbst wenn er über Power-User-Privilegien im Entwicklungskonto verfügt.

So übernehmen Sie eine Rolle
  1. David ruft AssumeRole als Teil einer Anwendung auf. Er muss den UpdateApp-ARN angeben: arn:aws:iam::999999999999:role/UpdateApp.

    Die Antwort auf den AssumeRole-Aufruf enthält die temporären Anmeldeinformationen mit einem AccessKeyId und einem SecretAccessKey. Sie enthält auch eine Expiration-Zeit, die angibt, wann die Anmeldeinformationen ablaufen und neue angefordert werden müssen.

  2. Mit den temporären Anmeldeinformationen führt David einen Aufruf s3:PutObject aus, um den Bucket productionapp zu aktualisieren. Er übergibt die Anmeldeinformationen als AuthParams-Parameter an den API-Aufruf. Da die temporären Anmeldeinformationen der Rolle nur über Lese- und Schreibberechtigungen für den Bucket productionapp verfügen, werden alle andere Aktionen im Production-Konto verweigert.

Ein Code-Beispiel (mit Python) finden Sie unter Wechseln zu einer IAM-Rolle (AWS-API).

Übersicht

Sie haben das Tutorial für den kontoübergreifenden API-Zugriff abgeschlossen. Sie haben eine Rolle zum Einrichten einer Vertrauensstellung mit einem anderen Konto und zur Definition der Aktionen erstellt, zu deren Ausführung die vertrauenswürdigen Entitäten berechtigt sind. Anschließend haben Sie eine Gruppenrichtlinie geändert, um zu steuern, welche IAM-Benutzer auf die Rolle zugreifen können. Folglich können Entwickler aus dem Entwicklungskonto mithilfe von temporären Anmeldeinformationen Aktualisierungen am Bucket productionapp in der Produktionsabrechnung vornehmen.