Konfigurieren der AWS CLI für die Verwendung von AWS – Einmaliges Anmelden - AWS Command Line Interface

Konfigurieren der AWS CLI für die Verwendung von AWS – Einmaliges Anmelden

Diese Funktion ist nur mit AWS CLI Version 2 verfügbar.

Die folgende Funktion ist nur verfügbar, wenn Sie AWS CLI Version 2 verwenden. Sie ist nicht verfügbar, wenn Sie AWS CLI Version 1 ausführen. Informationen zur Installation von Version 2 finden Sie unter Installieren der AWS CLI Version 2.

Wenn Ihre Organisation AWS – Einmaliges Anmelden (AWS SSO) verwendet, können sich Ihre Benutzer bei Active Directory, einem integrierten AWS SSO-Verzeichnis oder einem anderen mit AWS SSO verbundenen iDP anmelden und einer AWS Identity and Access Management (IAM)-Rolle zugeordnet werden, mit der Sie AWS CLI-Befehle ausführen können. Unabhängig davon, welchen iDP Sie verwenden, abstrahiert AWS SSO diese Unterschiede, und sie funktionieren alle mit der AWS CLI, wie unten beschrieben. Beispielsweise können Sie Microsoft Azure AD wie im Blogartikel The Next Evolution in AWS Single Sign-On beschrieben verbinden.

Weitere Informationen über AWS SSO finden Sie im AWS – Einmaliges Anmelden-Benutzerhandbuch.

In diesem Thema wird beschrieben, wie Sie die AWS CLI konfigurieren, um den Benutzer mit AWS SSO zu authentifizieren, um kurzfristige Anmeldeinformationen zum Ausführen von AWS CLI-Befehlen abzurufen. Es enthält folgende Unterabschnitte:

Konfigurieren eines benannten Profils für die Verwendung von AWS SSO

Sie können eines oder mehrere Ihrer benannten AWS CLI-Profile so konfigurieren, dass eine Rolle aus AWS SSO verwendet wird. Sie können mehrere Profile erstellen und konfigurieren und jedes Profil so konfigurieren, dass ein anderes AWS SSO-Benutzerportal oder eine andere SSO-definierte Rolle verwendet wird.

Sie können das Profil folgendermaßen konfigurieren:

  • Automatisch mit dem Befehl aws configure sso

  • Manuell, indem Sie die .aws/config-Datei bearbeiten, in der die benannten Profile gespeichert sind.

Automatische Konfiguration

Sie können Ihrer AWS CLI ein AWS SSO-aktiviertes Profil hinzufügen, indem Sie den folgenden Befehl ausführen und Ihre AWS SSO-Start-URL und die AWS-Region angeben, in der das AWS SSO-Verzeichnis gehostet wird.

$ aws configure sso SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

Die AWS CLI versucht, Ihren Standardbrowser zu öffnen und den Anmeldevorgang für Ihr AWS SSO-Konto zu starten.

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Wenn die AWS CLI den Browser nicht öffnen kann, wird die folgende Meldung mit Anweisungen zum manuellen Starten des Anmeldevorgangs angezeigt.

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

AWS SSO verwendet den Code, um die AWS SSO-Sitzung Ihrer aktuellen AWS CLI-Sitzung zuzuordnen. Auf der AWS SSO-Browserseite werden Sie aufgefordert, sich mit Ihren AWS SSO-Kontoanmeldeinformationen anzumelden. Dadurch kann die AWS CLI (durch die Berechtigungen, die Ihrem AWS SSO-Konto zugeordnet sind) die AWS-Konten und -Rollen abrufen und anzeigen,für deren Verwendung mit AWS SSO Sie autorisiert sind.

Als Nächstes zeigt die AWS CLI die AWS-Konten an, die Ihnen zur Verwendung zur Verfügung stehen. Wenn Sie berechtigt sind, nur ein Konto zu verwenden, wählt die AWS CLI dieses Konto automatisch für Sie aus und überspringt die Eingabeaufforderung. Die AWS-Konten, die Ihnen zur Verwendung zur Verfügung stehen, werden durch Ihre Benutzerkonfiguration in AWS SSO bestimmt.

There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

Wählen Sie mit den Pfeiltasten das Konto aus, das Sie mit diesem Profil verwenden möchten. Das Zeichen „>“ auf der linken Seite zeigt auf die aktuelle Auswahl. Drücken Sie die EINGABETASTE, um Ihre Auswahl zu treffen.

Als Nächstes bestätigt die AWS CLI Ihre Kontoauswahl und zeigt die IAM-Rollen an, die Ihnen im ausgewählten Konto zur Verfügung stehen. Wenn für das ausgewählte Konto nur eine Rolle aufgelistet ist, wählt die AWS CLI automatisch diese Rolle aus und überspringt die Eingabeaufforderung. Die Rollen, die Ihnen zur Verwendung zur Verfügung stehen, werden durch Ihre Benutzerkonfiguration in AWS SSO bestimmt.

Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

Verwenden Sie wie vorher die Pfeiltasten, um die IAM-Rolle auszuwählen, die Sie mit diesem Profil verwenden möchten. Das Zeichen „>“ auf der linken Seite zeigt auf die aktuelle Auswahl. Drücken Sie die <EINGABETASTE>, um Ihre Auswahl zu treffen.

Die AWS CLI bestätigt Ihre Rollenauswahl.

Using the role name "ReadOnly"

Jetzt können Sie die Konfiguration Ihres Profils abschließen, indem Sie das Standardausgabeformat, die Standard-AWS-Region, an die Befehle gesendet werden sollen, und einen Namen für das Profil angeben, damit Sie aus all diesen auf dem lokalen Computer definierten Profilen dieses Profil referenzieren können. Im folgenden Beispiel gibt der Benutzer eine Standardregion, ein Standardausgabeformat und den Namen des Profils ein. Sie können alternativ <ENTER> drücken, um alle Standardwerte auszuwählen, die zwischen den eckigen Klammern angezeigt werden. Der vorgeschlagene Profilname ist die Konto-ID-Nummer gefolgt von einem Unterstrich gefolgt von dem Rollennamen.

CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
Anmerkung

Wenn Sie default als Profilname angeben, wird dieses Profil immer dann verwendet, wenn Sie einen AWS CLI-Befehl ausführen und keinen Profilnamen angeben.

Eine abschließende Meldung beschreibt die abgeschlossene Profilkonfiguration.

To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile my-dev-profile

Die vorherigen Beispieleinträge würden zu einem benannten Profil in ~/.aws/config führen, das wie das folgende Beispiel aussieht.

[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

An dieser Stelle verfügen Sie über ein Profil, mit dem Sie temporäre Anmeldeinformationen anfordern können. Sie müssen den aws sso login-Befehl verwenden, um die temporären Anmeldeinformationen, die zum Ausführen von Befehlen erforderlich sind, tatsächlich anzufordern und abzurufen. Detaillierte Anweisungen finden Sie unter Verwenden eines AWS SSO-aktivierten benannten Profils.

Anmerkung

Sie können einen AWS CLI-Befehl auch mit dem angegebenen Profil ausführen. Wenn Sie derzeit nicht beim AWS SSO-Portal angemeldet sind, wird der Anmeldevorgang automatisch gestartet, so als hätten Sie den aws sso login-Befehlsbefehl manuell ausgeführt.

Manuelle Konfiguration

Um einem benannten Profil manuell AWS SSO-Unterstützung hinzuzufügen, müssen Sie der Profildefinition die folgenden Schlüssel und Werte in der Datei ~/.aws/config (Linux oder macOS) oder %USERPROFILE%/.aws/config (Windows) hinzufügen.

sso_start_url

Die URL, die auf das AWS SSO-Benutzerportal der Organisation verweist.

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

Die AWS-Region, die den AWS SSO-Portalhost enthält. Diese ist getrennt vom region-Standard-CLI-Parameter und kann eine andere Region sein.

sso_region = us_west-2
sso_account_id

Die AWS-Konto-ID, die die IAM-Rolle enthält, die Sie mit diesem Profil verwenden möchten.

sso_account_id = 123456789011
sso_role_name

Der Name der IAM-Rolle, die die Berechtigungen des Benutzers definiert, wenn dieses Profil verwendet wird.

sso_role_name = ReadAccess

Das Vorhandensein dieser Schlüssel identifiziert dieses Profil als ein Profil, das AWS SSO verwendet, um den Benutzer zu authentifizieren.

Sie können auch alle anderen Schlüssel und Werte einschließen, die in der .aws/config-Datei gültig sind, wie etwa region, output oder s3. Sie können jedoch keine auf Anmeldeinformationen bezogenen Werte einschließen, wie role_arn oder aws_secret_access_key. Wenn Sie dies tun, erzeugt die AWS CLI einen Fehler.

Ein typisches AWS SSO-Profil in .aws/config könnte also ähnlich wie das folgende Beispiel aussehen.

[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

An dieser Stelle verfügen Sie über ein Profil, mit dem Sie temporäre Anmeldeinformationen anfordern können. Sie können jedoch noch keinen AWS CLI-Servicebefehl ausführen. Sie müssen zuerst den aws sso login-Befehl verwenden, um die temporären Anmeldeinformationen, die zum Ausführen von Befehlen erforderlich sind, tatsächlich anzufordern und abzurufen. Anweisungen finden Sie im nächsten Abschnitt Verwenden eines AWS SSO-aktivierten benannten Profils.

Verwenden eines AWS SSO-aktivierten benannten Profils

In diesem Abschnitt wird beschrieben, wie Sie das AWS SSO-Profil verwenden, das Sie im vorherigen Abschnitt erstellt haben.

Anmelden und Abrufen von temporären Anmeldeinformationen

Nachdem Sie ein benanntes Profil automatisch oder manuell konfiguriert haben, können Sie es aufrufen, um temporäre Anmeldeinformationen von AWS anzufordern. Bevor Sie einen AWS CLI-Servicebefehl ausführen können, müssen Sie einen Satz temporärer Anmeldeinformationen abrufen und zwischenspeichern. Führen Sie den folgenden Befehl aus, um diese temporären Anmeldeinformationen abzurufen.

$ aws sso login --profile my-dev-profile

Die AWS CLI öffnet Ihren Standardbrowser und überprüft Ihre AWS SSO-Anmeldung.

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successully logged into Start URL: https://my-sso-portal.awsapps.com/start

Wenn Sie derzeit nicht in Ihrem AWS SSO-Konto angemeldet sind, müssen Sie Ihren AWS SSO-Benutzernamen und Ihr Passwort angeben.

Wenn die AWS CLI Ihren Browser nicht öffnen kann, werden Sie aufgefordert, ihn selbst zu öffnen und den angegebenen Code einzugeben.

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

Die AWS CLI öffnet Ihren Standardbrowser (oder Sie öffnen den Browser Ihrer Wahl manuell) auf der angegebenen Seite und Sie geben den bereitgestellten Code ein. Die Webseite fordert Sie dann zur Eingabe Ihrer AWS SSO-Anmeldeinformationen auf.

Ihre AWS SSO-Sitzungsanmeldeinformationen werden zwischengespeichert und enthalten einen Ablaufzeitstempel. Wenn die Anmeldeinformationen ablaufen, werden Sie von der AWS CLI aufgefordert, sich nochmals bei AWS SSO anzumelden.

Wenn Ihre AWS SSO-Anmeldeinformationen gültig sind, werden sie von der AWS CLI verwendet, um temporäre AWS-Anmeldeinformationen für die im Profil angegebene IAM-Rolle sicher abzurufen.

Welcome, you have successfully signed-in to the AWS-CLI.

Ausführen eines Befehls mit Ihrem AWS SSO-aktivierten Profil

Sie können diese temporären Anmeldeinformationen verwenden, um einen AWS CLI-Befehl mit dem zugeordneten benannten Profil aufzurufen. Das folgende Beispiel zeigt, dass der Befehl unter einer angenommenen Rolle ausgeführt wurde, die Teil des angegebenen Kontos ist.

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

Solange Sie sich bei AWS SSO angemeldet haben und diese zwischengespeicherten Anmeldeinformationen nicht abgelaufen sind, erneuert die AWS CLI abgelaufene temporäre AWS-Anmeldeinformationen bei Bedarf automatisch. Wenn Ihre AWS SSO-Anmeldeinformationen jedoch ablaufen, müssen Sie sie explizit erneuern, indem Sie sich erneut bei Ihrem AWS SSO-Konto anmelden.

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Sie können mehrere AWS SSO-aktivierte benannte Profile erstellen, die jeweils auf ein anderes AWS-Konto oder eine andere Rolle verweisen. Sie können den aws sso login-Befehl auch für mehrere Profile gleichzeitig verwenden. Wenn eines von ihnen dasselbe AWS SSO-Benutzerkonto hat, müssen Sie sich nur einmal bei diesem AWS SSO-Benutzerkonto anmelden und dann haben sie alle einen gemeinsamen Satz zwischengespeicherter AWS SSO-Anmeldeinformationen.

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to AWS SSO or your # cached credentials have expired, it opens your browser and prompts you for your # AWS SSO user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same AWS SSO portal, then it uses the SSO credentials that you retrieved in the # previoius command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # AWS SSO again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

Abmelden bei Ihren AWS SSO-Sitzungen

Wenn Sie mit den AWS SSO-aktivierten Profilen fertig sind, haben Sie die Möglichkeit, nichts tun und die temporären AWS-Anmeldeinformationen und Ihre AWS SSO-Anmeldeinformationen ablaufen lassen. Sie können jedoch auch den folgenden Befehl ausführen, um sofort alle zwischengespeicherten Anmeldeinformationen im Cache-Ordner für SSO-Anmeldeinformationen sowie alle temporären AWS-Anmeldeinformationen, die auf den AWS SSO-Anmeldeinformationen basieren, zu löschen. Dadurch können diese Anmeldeinformationen nicht für zukünftige Befehle verwendet werden.

$ aws sso logout Successfully signed out of all SSO profiles.

Wenn Sie später Befehle mit einem Ihrer AWS SSO-aktivierten Profile ausführen möchten, müssen Sie den aws sso login-Befehl erneut ausführen (siehe vorherigen Abschnitt) und das gewünschte Profil angeben.