Verwenden einer IAM Rolle in der AWS CLI - AWS Command Line Interface

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.

Verwenden einer IAM Rolle in der AWS CLI

Eine Rolle AWS Identity and Access Management (IAM) ist ein Autorisierungstool, mit dem ein Benutzer zusätzliche (oder andere) Berechtigungen oder Berechtigungen zum Ausführen von Aktionen in einem anderen AWS Konto erhält.

Voraussetzungen

Wenn Sie diese iam-Befehle verwenden möchten, müssen Sie die AWS CLI installieren und konfigurieren. Weitere Informationen finden Sie unter Installation oder Aktualisierung auf die neueste Version von AWS CLI.

Überblick über die Verwendung von IAM Rollen

Sie können AWS Command Line Interface (AWS CLI) für die Verwendung einer IAM Rolle konfigurieren, indem Sie ein Profil für die Rolle in der ~/.aws/config Datei definieren.

Im folgenden Beispiel sehen Sie ein Rollenprofil namens marketingadmin. Wenn Sie Befehle mit ausführen --profile marketingadmin (oder sie mit der AWS_PROFILEUmgebungsvariablen angeben), AWS CLI verwendet der die in einem separaten Profil definierten Anmeldeinformationen, user1 um die Rolle mit dem Amazon-Ressourcennamen (ARN) anzunehmenarn:aws:iam::123456789012:role/marketingadminrole. Sie können alle Operationen ausführen, die gemäß den der Rolle zugewiesenen Berechtigungen zulässig sind.

[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole source_profile = user1

Sie können dann ein source_profile angeben, das auf ein separates benanntes Profil zeigt, welches Benutzer-Anmeldeinformationen mit der Berechtigung zur Verwendung der Rolle enthält. Im vorherigen Beispiel verwendet das Profil marketingadmin die Anmeldeinformationen im Profil user1. Wenn Sie angeben, dass ein AWS CLI Befehl das Profil verwenden sollmarketingadmin, sucht das AWS CLI automatisch nach den Anmeldeinformationen für das verknüpfte user1 Profil und verwendet sie, um temporäre Anmeldeinformationen für die angegebene IAM Rolle anzufordern. Der CLI verwendet dazu die AssumeRole Operation sts: im Hintergrund. Diese temporären Anmeldeinformationen werden dann verwendet, um den angeforderten AWS CLI -Befehl ausführen. An die angegebene Rolle müssen IAM Berechtigungsrichtlinien angehängt sein, die die Ausführung des angeforderten AWS CLI Befehls ermöglichen.

Um einen AWS CLI Befehl innerhalb einer Amazon Elastic Compute Cloud (AmazonEC2) -Instance oder eines Amazon Elastic Container Service (AmazonECS) -Containers auszuführen, können Sie eine IAM Rolle verwenden, die dem Instance-Profil oder dem Container zugewiesen ist. Wenn Sie kein Profil angeben oder keine Umgebungsvariablen festlegen, wird diese Rolle direkt verwendet. So müssen Sie keine Langzeit-Zugriffsschlüssel in Ihren Instances speichern. Sie können diese Instance- oder Container-Rollen auch verwenden, um Anmeldeinformationen für eine andere Rolle abzurufen. Zu diesem Zweck verwenden Sie credential_source (anstelle von source_profile), um anzugeben, wie die Anmeldeinformationen zu finden sind. Das Attribut credential_source unterstützt die folgenden Werte:

  • Environment – um die Quell-Anmeldeinformationen aus Umgebungsvariablen abzurufen.

  • Ec2InstanceMetadata— Verwendet die IAM Rolle, die dem EC2 Amazon-Instance-Profil zugewiesen ist.

  • EcsContainer— Verwendet die IAM Rolle, die dem ECS Amazon-Container zugewiesen ist.

Das folgende Beispiel zeigt dieselbe marketingadminrole Rolle, die verwendet wird, indem auf ein EC2 Amazon-Instance-Profil verwiesen wird.

[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole credential_source = Ec2InstanceMetadata

Wenn Sie eine Rolle aufrufen, stehen Ihnen zusätzliche Optionen zur Verfügung, die Sie anfordern können, z. B. die Verwendung einer Multifaktor-Authentifizierung und einer externen ID (die von Drittanbietern für den Zugriff auf die Ressourcen ihrer Kunden verwendet wird). Sie können auch eindeutige Namen für Rollensitzungen angeben, die einfacher in AWS CloudTrail Protokollen überprüft werden können.

Konfigurieren und Verwenden einer Rolle

Wenn Sie Befehle mit einem Profil ausführen, das eine IAM Rolle spezifiziert, AWS CLI verwendet das die Anmeldeinformationen des Quellprofils, um AWS Security Token Service (AWS STS) aufzurufen und temporäre Anmeldeinformationen für die angegebene Rolle anzufordern. Der Benutzer im Quellprofil muss über die Berechtigung zum Aufrufen von sts:assume-role für die Rolle im angegebenen Profil verfügen. Die Rolle muss über eine Vertrauensstellung verfügen, die es dem Benutzer im Quellprofil ermöglicht, die Rolle zu übernehmen. Der Prozess des Abrufens mit anschließendem Verwenden von temporären Anmeldeinformationen für eine Rolle wird oft als Annehmen der Rolle bezeichnet.

Sie können eine Rolle IAM mit den Berechtigungen erstellen, die Benutzer annehmen sollen, indem Sie das Verfahren unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM Benutzer im AWS Identity and Access Management Benutzerhandbuch befolgen. Wenn die Rolle und der -Benutzer des Quellprofils im selben Konto vorhanden sind, können Sie beim Konfigurieren der Vertrauensstellung der Rolle Ihre eigene Konto-ID eingeben.

Nachdem Sie die Rolle erstellt haben, ändern Sie die Vertrauensstellung, um die Übernahme durch den -Benutzer zuzulassen.

Im folgenden Beispiel sehen Sie eine Vertrauensrichtlinie, die Sie einer Rolle anfügen könnten. Mit dieser Richtlinie kann die Rolle von jedem Benutzer im Konto 123456789012 angenommen werden, falls der Administrator des Kontos dem Benutzer explizit die Berechtigung sts:AssumeRole erteilt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole" } ] }

Die Vertrauensrichtlinie selbst gewährt keine Berechtigungen. Der Administrator des Kontos muss die Berechtigung zur Übernahme der Rolle an einzelne Benutzer delegieren, indem eine Richtlinie mit den entsprechenden Berechtigungen angefügt wird. Das folgende Beispiel zeigt eine Richtlinie, die Sie einem Benutzer anfügen können und mit der der Benutzer nur die Rolle marketingadminrole annehmen kann. Weitere Informationen darüber, wie Sie einem Benutzer Zugriff auf die Übernahme einer Rolle gewähren können, finden Sie im Benutzerhandbuch unter Erteilen von Benutzerberechtigungen zum Rollenwechsel. IAM

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/marketingadminrole" } ] }

Der Benutzer benötigt keine zusätzlichen Berechtigungen, um die AWS CLI Befehle mithilfe des Rollenprofils auszuführen. Die Berechtigungen zum Ausführen des Befehls entstammen aus den der Rolle angefügten Berechtigungen. Sie fügen der Rolle Berechtigungsrichtlinien hinzu, um anzugeben, welche Aktionen für welche AWS Ressourcen ausgeführt werden können. Weitere Informationen zum Zuweisen von Berechtigungen an eine Rolle (was genauso funktioniert wie bei einem Benutzer) finden Sie unter Ändern von Berechtigungen für einen IAM Benutzer im IAMBenutzerhandbuch.

Nachdem Sie nun das Rollenprofil, die Rollenberechtigungen, die Rollen-Vertrauensstellung und die Benutzerberechtigungen konfiguriert haben, können Sie die Rolle an der Befehlszeile verwenden, indem Sie die Option --profile aufrufen. Beispiel: Der folgende Befehl ruft den Amazon-S3-Befehl ls mit den Berechtigungen auf, die an die marketingadmin-Rolle angefügt sind, wie im Beispiel zu Beginn dieses Themas angegeben.

$ aws s3 ls --profile marketingadmin

Um die Rolle für mehrere Aufrufe zu verwenden, können Sie die Umgebungsvariable AWS_PROFILE für die aktuelle Sitzung über die Befehlszeile festlegen. Da die Umgebungsvariable definiert ist, müssen Sie die Option --profile nicht bei jedem Befehl angeben.

Linux oder macOS

$ export AWS_PROFILE=marketingadmin

Windows

C:\> setx AWS_PROFILE marketingadmin

Weitere Informationen zur Konfiguration von Benutzern und Rollen finden Sie im Benutzerhandbuch unter IAMIdentitäten (Benutzer, Benutzergruppen und Rollen) und IAMRollen. IAM

Verwenden von Multi-Factor Authentication (MFA)

Für zusätzliche Sicherheit können Sie verlangen, dass Benutzer einen einmaligen Schlüssel angeben, der von einem Gerät mit Multifaktor-Authentifizierung (MFA), einem U2F-Gerät oder einer mobilen App generiert wurde, wenn sie versuchen, über das Rollenprofil einen Anruf zu tätigen.

Zunächst können Sie die Vertrauensstellung für die IAM Rolle so ändern, dass sie erforderlich ist. MFA Auf diese Weise wird verhindert, dass jemand die Rolle verwenden kann, ohne sich zuvor mithilfe MFA von zu authentifizieren. Ein Beispiel finden Sie im folgenden Code in der Zeile Condition. Diese Richtlinie ermöglicht es dem genannten Benutzer, die Rolle anika anzunehmen, mit der die Richtlinie verknüpft ist, aber nur, wenn er sich mithilfe von authentifiziert. MFA

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:multifactorAuthPresent": true } } } ] }

Als Nächstes fügen Sie dem Rollenprofil eine Zeile hinzu, die das MFA Gerät ARN des Benutzers angibt. In den folgenden Einträgen der Beispieldatei config verwenden zwei Rollenprofile die Zugriffsschlüssel für den Benutzer anika, um temporäre Anmeldeinformationen für die Rolle cli-role anzufordern. Der Benutzer anika hat die Berechtigung, die Rolle zu übernehmen. Sie wird ihm von der Vertrauensrichtlinie der Rolle erteilt.

[profile role-without-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile=cli-user [profile role-with-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile = cli-user mfa_serial = arn:aws:iam::128716708097:mfa/cli-user [profile cli-user] region = us-west-2 output = json

Die mfa_serial Einstellung kannARN, wie abgebildet, eine oder die Seriennummer eines MFA Hardwaretokens annehmen.

Das erste Profilrole-without-mfa,, erfordert nichtMFA. Da das vorherige Beispiel für die der Rolle zugeordnete Vertrauensrichtlinie dies erfordertMFA, schlägt jedoch jeder Versuch fehl, einen Befehl mit diesem Profil auszuführen.

$ aws iam list-users --profile role-without-mfa An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied

Der zweite Profileintrag,role-with-mfa, identifiziert ein zu MFA verwendendes Gerät. Wenn der Benutzer versucht, einen AWS CLI Befehl mit diesem Profil auszuführen, AWS CLI fordert er den Benutzer auf, das vom MFA Gerät bereitgestellte Einmalkennwort (OTP) einzugeben. Wenn die MFA Authentifizierung erfolgreich ist, führt der Befehl den angeforderten Vorgang aus. Das OTP wird nicht auf dem Bildschirm angezeigt.

$ aws iam list-users --profile role-with-mfa Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user: { "Users": [ { ...

Kontenübergreifende Rollen und externe ID

Sie können -Benutzern ermöglichen, Rollen zu verwenden, die zu verschiedenen Konten gehören, indem Sie kontenübergreifende Rollen konfigurieren. Stellen Sie bei der Rollenerstellung den Rollentyp auf Anderes AWS Konto ein, wie unter Eine Rolle zum Delegieren von Berechtigungen an einen IAM Benutzer erstellen beschrieben. Wählen Sie optional Erforderlich aus. MFA MFARequire konfiguriert die entsprechende Bedingung in der Vertrauensbeziehung, wie unter beschriebenVerwenden von Multi-Factor Authentication (MFA).

Wenn Sie eine externe ID verwenden, um besser zu kontrollieren, wer eine kontenübergreifende Rolle verwenden kann, müssen Sie auch den Parameter external_id zum Rollenprofil hinzufügen. Normalerweise verwenden Sie dieses nur, wenn das andere Konto von einer Person außerhalb Ihres Unternehmens kontrolliert wird.

[profile crossaccountrole] role_arn = arn:aws:iam::234567890123:role/SomeRole source_profile = default mfa_serial = arn:aws:iam::123456789012:mfa/saanvi external_id = 123456

Angeben eines Rollensitzungsnamens für eine einfachere Prüfung

Wenn viele Personen eine Rolle gemeinsam nutzen, wird die Prüfung zu einer größeren Herausforderung. Sie möchten jede aufgerufene Operation mit der Person verknüpfen, die diese Aktion aufgerufen hat. Wenn die Person jedoch eine Rolle verwendet, ist die Annahme der Rolle durch die Person eine vom Aufrufen einer Operation getrennte Aktion und Sie müssen die beiden manuell korrelieren.

Sie können dies vereinfachen, indem Sie eindeutige Rollensitzungsnamen angeben, wenn Benutzer eine Rolle annehmen. Dazu fügen Sie jedem benannten Profil in der Datei config, die eine Rolle angibt, einen role_session_name-Parameter hinzu. Der role_session_name Wert wird an den AssumeRole Vorgang übergeben und wird Teil der ARN For-the-Rollensitzung. Er ist auch in den AWS CloudTrail Protokollen für alle protokollierten Vorgänge enthalten.

Sie können beispielsweise folgendermaßen ein rollenbasiertes Profil erstellen.

[profile namedsessionrole] role_arn = arn:aws:iam::234567890123:role/SomeRole source_profile = default role_session_name = Session_Maria_Garcia

Dies führt dazu, dass die Rollensitzung wie folgt aussiehtARN.

arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia

Außerdem enthalten alle AWS CloudTrail Protokolle den Namen der Rollensitzung in den für jeden Vorgang erfassten Informationen.

Übernehmen einer Rolle mit Web-Identität

Sie können ein Profil so konfigurieren, dass es angibt, dass sie mithilfe von Web Identity Federation und Open ID Connect (OIDC) eine Rolle übernehmen AWS CLI sollen. Wenn Sie dies in einem Profil angeben, führt der AWS CLI automatisch den entsprechenden AWS STS AssumeRoleWithWebIdentity Anruf für Sie durch.

Anmerkung

Wenn Sie ein Profil angeben, das eine IAM Rolle verwendet, werden die AWS CLI entsprechenden Aufrufe ausgeführt, um temporäre Anmeldeinformationen abzurufen. Diese Anmeldeinformationen werden in ~/.aws/cli/cache gespeichert. Nachfolgende AWS CLI Befehle, die dasselbe Profil angeben, verwenden die zwischengespeicherten temporären Anmeldeinformationen, bis sie ablaufen. Zu diesem Zeitpunkt werden die AWS CLI Anmeldeinformationen automatisch aktualisiert.

Um mithilfe des Web-Identitätsverbunds temporäre Anmeldeinformationen abzurufen und zu verwenden, können Sie die folgenden Konfigurationswerte in einem freigegebenen Profil angeben.

role_arn

Gibt die Rolle ARN an, die übernommen werden soll.

web_identity_token_file

Gibt den Pfad zu einer Datei an, die ein OAuth 2.0-Zugriffstoken oder ein OpenID Connect-ID-Token enthält, das vom Identitätsanbieter bereitgestellt wird. Die AWS CLI lädt diese Datei und übergibt den Inhalt als WebIdentityToken-Argument an die Operation AssumeRoleWithWebIdentity.

role_session_name

Gibt einen optionalen Namen an, der auf diese Rollenübernahme-Sitzung angewendet wird.

Unten finden Sie eine Beispielkonfiguration für den mindestens erforderlichen Umfang einer Konfiguration für eine angenommene Rolle mit Web-Identitätsprofil.

# In ~/.aws/config [profile web-identity] role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume web_identity_token_file=/path/to/a/token

Sie können diese Konfiguration auch mithilfe von Umgebungsvariablen bereitstellen.

AWS_ROLE_ARN

Die ARN Rolle, die übernommen werden soll.

AWS_WEB_IDENTITY_TOKEN_FILE

Der Pfad zur Datei mit dem Web-Identitäts-Token.

AWS_ROLE_SESSION_NAME

Der Name für diese Sitzung der Rollenübernahme.

Anmerkung

Diese Umgebungsvariablen gelten derzeit nur für die Anbieter für Rollenübernahme mit Web-Identität. Sie gelten nicht für die allgemeine Konfiguration für einen Anbieter für Rollenübernahme.

Anmeldeinformationen aus dem Cache löschen

Wenn Sie eine Rolle verwenden, werden die temporären Anmeldeinformationen lokal AWS CLI zwischengespeichert, bis sie ablaufen. Wenn Sie das nächste Mal versuchen, sie zu verwenden, wird AWS CLI versucht, sie in Ihrem Namen zu erneuern.

Wenn die temporären Anmeldeinformationen Ihrer Rolle widerrufen werden, werden sie nicht automatisch erneuert und Versuche, sie zu verwenden, schlagen fehl. Sie können den Cache jedoch löschen, um das Abrufen neuer Anmeldeinformationen AWS CLI zu erzwingen.

Linux oder macOS

$ rm -r ~/.aws/cli/cache

Windows

C:\> del /s /q %UserProfile%\.aws\cli\cache