Acquisizione di credenziali con un processo esterno nella CLI
avvertimento
Il seguente argomento illustra le credenziali di approvvigionamento da un processo esterno. Potrebbe insorgere un rischio per la sicurezza se il comando per generare le credenziali diventa accessibile a utenti o processi non riconosciuti. Ti consigliamo di utilizzare le soluzioni alternative sicure e supportate offerte dall'AWS CLI e AWS per ridurre il rischio di compromettere le tue credenziali. Assicurati di proteggere il file config e altri strumenti e file di supporto per evitare la divulgazione.
Assicurati che lo strumento delle credenziali personalizzate non scriva informazioni segrete in StdErr perché gli SDK e la AWS CLI possono acquisire e registrare tali informazioni, esponendole potenzialmente a utenti non autorizzati.
Se disponi di un metodo per generare o cercare le credenziali non direttamente supportato dalla AWS CLI, puoi fare in modo che venga utilizzato dalla AWS CLI configurando l’impostazione credential_process nel file config.
Puoi ad esempio includere una voce simile al seguente file config.
[profile developer] credential_process = /opt/bin/awscreds-custom --username helen
Sintassi
Per creare questa stringa in modo compatibile con qualsiasi sistema operativo, segui queste regole:
-
Se il percorso o il nome del file contiene uno spazio, circondare il percorso completo e il nome del file con virgolette doppie (" "). Il percorso e il nome del file possono essere composti solo dai caratteri: A-Z a-z 0-9 - _ . spazio
-
Se un nome di parametro o un valore di parametro contiene uno spazio, circondare tale elemento con virgolette doppie (" "). È possibile racchiudere solo il nome o il valore, non la coppia.
-
Non includere variabili di ambiente nelle stringhe. Ad esempio, non puoi includere
$HOMEo%USERPROFILE%. -
Non specificare la cartella home come
~. Devi specificare il percorso completo.
Esempio per Windows
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
Esempio per Linux o macOS
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
Output previsto dal programma Credentials
L'AWS CLI esegue il comando esattamente come specificato nel profilo, quindi legge i dati da STDOUT. Il comando specificato deve generare in STDOUT l'output JSON corrispondente alla sintassi seguente:
{ "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" }
Nota
Al momento della stesura del presente documento, la chiave Version deve essere configurata su 1. Questo valore potrebbe incrementare nel tempo, man mano che la struttura evolve.
La chiave Expiration è un timestamp formattato ISO8601Expiration non è presente nell'output dello strumento, l'interfaccia a riga di comando presuppone che le credenziali siano a lungo termine, non soggette ad aggiornamento. In caso contrario, le credenziali vengono considerate provvisorie e aggiornate automaticamente mediante una nuova esecuzione del comando credential_process prima della relativa scadenza.
Nota
AWS CLI non esegue il caching delle credenziali dei processi esterni, come nel caso delle credenziali di assunzione del ruolo. Se il caching è necessario, dovrai implementarlo nel processo esterno.
Il processo esterno può restituire un codice diverso da zero per indicare che si è verificato un errore durante il recupero delle credenziali.