Beschaffung von Anmeldeinformationen über einen externen Prozess - AWS Command Line Interface

Beschaffung von Anmeldeinformationen über einen externen Prozess

Warnung

In diesem Thema wird die Beschaffung von Anmeldeinformationen von einem externen Prozess erläutert. Dies könnte ein Sicherheitsrisiko darstellen, wenn der Befehl zum Generieren der Anmeldeinformationen nicht zulässigen Prozessen oder Benutzern zugänglich wird. Wir empfehlen Ihnen, die unterstützten, sicheren Alternativen zu verwenden, die von der AWS CLI und AWS bereitgestellt werden, um das Risiko einer Gefährdung Ihrer Anmeldeinformationen zu verringern. Sorgen Sie dafür, dass Sie die config-Datei und alle zugehörigen Dateien und Tools vor einer Offenlegung sichern.

Stellen Sie sicher, dass Ihr benutzerdefiniertes Anmeldeinformationstool keine geheimen Informationen in StdErr schreibt, da die SDKs und die CLI solche Informationen erfassen und protokollieren sowie möglicherweise Benutzern zugänglich machen können, die nicht autorisiert sind.

Wenn Ihre Methode zum Generieren oder Suchen von Anmeldeinformationen von der AWS CLI nicht direkt unterstützt wird, können Sie die CLI für die Verwendung der Methode konfigurieren, indem Sie die Einstellung credential_process in der config-Datei konfigurieren.

Beispielsweise könnten Sie einen etwa wie folgt aussehenden Eintrag in die config-Datei aufnehmen.

[profile developer] credential_process = /opt/bin/awscreds-custom --username helen

Syntax

Um diese Zeichenfolge auf eine Weise zu erstellen, die mit jedem Betriebssystem kompatibel ist, gehen Sie nach den folgenden Regeln vor:

  • Wenn der Pfad oder Dateiname ein Leerzeichen enthält, umgeben Sie den vollständigen Pfad und Dateinamen mit doppelten Anführungszeichen („ “). Pfad und Dateiname dürfen nur aus folgenden Zeichen bestehen: A-Z a-z 0-9 – _. Leerzeichen

  • Wenn ein Parametername oder ein Parameterwert ein Leerzeichen enthält, umgeben Sie dieses Element mit doppelten Anführungszeichen („ “). Umgeben Sie dabei nur den Namen oder den Wert, nicht beides.

  • Fügen Sie keine Umgebungsvariablen in die Zeichenfolgen ein. Sie können beispielsweise nicht $HOME oder %USERPROFILE% einschließen.

  • Geben Sie den Basisordner nicht als ~ an. Sie müssen den vollständigen Pfad angeben.

Beispiel für Windows

credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"

Beispiel für Linux oder macOS

credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"

Erwartete Ausgabe des Anmeldeinformationsprogramms

Die AWS CLI führt den Befehl genau wie im Profil angegeben aus und liest anschließend Daten aus STDOUT. Der von Ihnen angegebene Befehl muss eine JSON-Ausgabe in STDOUT generieren, die der folgenden Syntax entspricht.

{ "Version": 1, "AccessKeyId": "an AWS access key", "SecretAccessKey": "your AWS secret access key", "SessionToken": "the AWS session token for temporary credentials", "Expiration": "ISO8601 timestamp when the credentials expire" }
Anmerkung

Derzeit muss der Version-Schlüssel auf 1 gesetzt sein. Im Laufe der Zeit kann ein höherer Wert erforderlich sein, wenn sich die Struktur weiterentwickelt.

Der Expiration-Schlüssel ist ein ISO8601-formatierter Zeitstempel. Wenn der Expiration-Schlüssel nicht in der Ausgabe des Tools vorhanden ist, geht die CLI davon aus, dass es sich bei den Anmeldeinformationen um langfristige Anmeldeinformationen handelt, die nicht aktualisiert werden. Andernfalls werden die Anmeldeinformationen als temporäre Anmeldeinformationen angesehen und automatisch aktualisiert, indem der Befehl credential_process vor ihrem Ablauf erneut ausgeführt wird.

Anmerkung

Die AWS CLI speichert Anmeldeinformationen externer Prozesse nicht auf dieselbe Art und Weise wie Anmeldeinformationen für die Rollenübernahme im Cache. Wenn Caching erforderlich ist, müssen Sie dies im externen Prozess implementieren.

Der externe Prozess kann einen Rückgabecode ungleich Null zurückgeben, um anzuzeigen, dass beim Abrufen der Anmeldeinformationen ein Fehler aufgetreten ist.