Uso delle credenziali AWS - AWS Tools for PowerShell

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Uso delle credenziali AWS

Ogni comando AWS Tools for PowerShell deve includere un set di credenziali AWS, che vengono utilizzate per effettuare l'accesso crittografico corrispondente alla richiesta del servizio Web. Puoi specificare le credenziali per comando, per sessione o per tutte le sessioni.

avvertimento

Per evitare rischi per la sicurezza, non utilizzare gli utenti IAM per l'autenticazione quando sviluppi software creato ad hoc o lavori con dati reali. Utilizza invece la federazione con un provider di identità come AWS IAM Identity Center.

Nota

Le informazioni contenute in questo argomento riguardano le circostanze in cui è necessario ottenere e gestire manualmente le credenziali a breve o lungo termine. Per ulteriori informazioni sulle credenziali a breve e lungo termine, consulta l'argomento relativo agli altri modi di autenticazione disponibili nella Guida di riferimento per SDK e strumenti AWS.

Per le best practice relative alla sicurezza, usa AWS IAM Identity Center, come descritto in Configurazione dell'autenticazione degli strumenti.

Come buona pratica, evitare di esporre le proprie credenziali, non utilizzare le credenziali letterali in un comando. Invece, creare un profilo per ogni set di credenziali che si desidera utilizzare e memorizzare il profilo in uno dei due archivi delle credenziali. Specificando il profilo corretto per nome nel comando, gli AWS Tools for PowerShell recuperano le credenziali associate. Per una discussione generale su come gestire in modo sicuro le credenziali AWS, consulta Best practice per la gestione delle chiavi di accesso AWS nella Riferimenti generali di Amazon Web Services.

Nota

Hai bisogno di un account AWS per ottenere le credenziali e utilizzare gli AWS Tools for PowerShell. Per creare un AWS account, consulta la pagina introduttiva dedicata agli utenti AWS alle prime armi nella Guida di riferimento di AWS Account Management.

Posizioni degli archivi per credenziali

Gli AWS Tools for PowerShell possono utilizzare entrambi gli archivi delle credenziali:

  • L'archivio SDK AWS, che crittografa le credenziali e le archivia nella cartella home. In Windows, questo archivio si trova in: C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json.

    L'AWS SDK for .NET e il Toolkit for Visual Studio possono anche utilizzare l'archivio SDK AWS.

  • Il file delle credenziali condiviso, che si trova anche nella tua cartella home, ma archivia le credenziali come testo semplice.

    Per impostazione predefinita, i file delle credenziali vengono archiviati qui:

    • Su Windows: C:\Users\username\.aws\credentials

    • Su Mac/Linux: ~/.aws/credentials

    L'SDK AWS e la AWS Command Line Interface possono anche utilizzare i file delle credenziali. Se è in esecuzione uno script al di fuori del contesto utente AWS, accertati che il file delle credenziali venga copiato in un percorso in cui tutti gli account utente (sistema locale e utente) possono accedere alle tue credenziali.

Gestione dei profili

I profili consentono di fare riferimento a diversi set di credenziali con AWS Tools for PowerShell. Puoi utilizzare i cmdlet AWS Tools for PowerShell per gestire i profili nell'archivio SDK AWS. Inoltre, puoi gestire i profili nell'archivio SDK AWS utilizzando il Toolkit for Visual Studio o a livello di programmazione utilizzando l'AWS SDK for .NET. Per istruzioni su come gestire i profili nel file delle credenziali, consulta le Best practice per la gestione delle chiavi di accesso AWS.

Aggiunta di un nuovo profilo

Per aggiungere un nuovo profilo all'archivio SDK AWS, esegui il comando Set-AWSCredential. In questo modo la chiave di accesso e la chiave segreta vengono archiviate nel file delle credenziali predefinito sotto il nome del profilo specificato.

PS > Set-AWSCredential ` -AccessKey AKIA0123456787EXAMPLE ` -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ` -StoreAs MyNewProfile
  • -AccessKey – L'ID chiave di accesso.

  • -SecretKey – La chiave segreta.

  • -StoreAs– Il nome del profilo, deve essere univoco. Per specificare il profilo predefinito, utilizza il nome default.

Aggiornamento di un profilo

L'archivio SDK AWS deve essere gestito manualmente. Se successivamente si modificano le credenziali nel servizio, ad esempio utilizzando la console IAM, eseguendo un comando con le credenziali archiviate in locale e questo ha esito negativo con il seguente messaggio di errore:

The Access Key Id you provided does not exist in our records.

È possibile aggiornare un profilo ripetendo il comando Set-AWSCredential per il profilo e passando a esso le nuove chiavi segrete e di accesso.

Elenco dei profili

Puoi controllare l'elenco corrente dei nomi con il seguente comando. In questo esempio, un utente denominato Shirley ha accesso a tre profili che sono tutti archiviati nel file delle credenziali condiviso (~/.aws/credentials).

PS > Get-AWSCredential -ListProfileDetail ProfileName StoreTypeName ProfileLocation ----------- ------------- --------------- default SharedCredentialsFile /Users/shirley/.aws/credentials production SharedCredentialsFile /Users/shirley/.aws/credentials test SharedCredentialsFile /Users/shirley/.aws/credentials

Rimozione di un profilo

Per rimuovere un profilo non più necessario, utilizza il comando seguente.

PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need

Il parametro -ProfileName specifica il profilo da eliminare.

Il comando obsoleto Clear-AWSCredential è ancora disponibile per la compatibilità con le versioni precedenti, ma Remove-AWSCredentialProfile è preferibile.

Specifica delle credenziali

Esistono vari modi per specificare le credenziali. Il modo migliore è identificare un profilo anziché incorporare credenziali letterali nella riga di comando. AWS Tools for PowerShell individua il profilo utilizzando un ordine di ricerca descritto in Ordine di ricerca credenziali.

In Windows, le credenziali AWS archiviate nell'archivio SDK AWS vengono crittografate con l'identità dell'utente di Windows connesso. Non è possibile decrittografarle utilizzando un altro account o utilizzarle su un dispositivo diverso da quello in cui sono state create originariamente. Per eseguire attività che richiedono le credenziali di un altro utente, ad esempio un account utente utilizzato per eseguire un'attività pianificata, configura un profilo delle credenziali, come descritto nella sezione precedente, che è possibile utilizzare quando accedi al computer come tale utente. Accedi come utente che esegue attività per completare le fasi di configurazione delle credenziali e creare un profilo che funzioni per tale utente. Quindi disconnettiti e accedi di nuovo con le tue credenziali per configurare l'attività pianificata.

Nota

Utilizzare il parametro comune -ProfileName per specificare un profilo. Questo parametro equivale al parametro -StoredCredentials nelle versioni precedenti degli AWS Tools for PowerShell. Per garantire la compatibilità con le versioni precedenti, -StoredCredentials è ancora supportato.

Tutti gli strumenti di gestione e gli SDK AWS possono trovare le credenziali automaticamente sul tuo computer locale se le credenziali vengono archiviate in un profilo denominato default. Ad esempio, se disponi di un profilo denominato default sul computer locale, non devi eseguire il cmdlet Initialize-AWSDefaultConfiguration o il cmdlet Set-AWSCredential. Gli strumenti utilizzano automaticamente i dati della chiave segreta e di accesso archiviati in quel profilo. Per usare una regione AWS diversa dalla regione predefinita (i risultati di Get-DefaultAWSRegion), puoi eseguire Set-DefaultAWSRegion e specificare una regione.

Se il profilo non è denominato default, ma si desidera utilizzarlo come profilo predefinito per la sessione corrente, eseguire Set-AWSCredential per impostare il profilo come predefinito.

Anche se l'esecuzione di Initialize-AWSDefaultConfiguration consente di specificare un profilo predefinito per ogni sessione di PowerShell, il cmdlet carica le credenziali dal profilo con nome personalizzato, ma sovrascrive il profilo default con il profilo denominato.

È consigliabile non eseguire Initialize-AWSDefaultConfiguration a meno che tu non stia eseguendo una sessione PowerShell su un'istanza Amazon EC2 che non è stata avviata con un profilo dell'istanza e desideri impostare in modo manuale il profilo delle credenziali. Tieni presente che il profilo delle credenziali in questo caso non contiene le credenziali. Il profilo delle credenziali risultante dall'esecuzione di Initialize-AWSDefaultConfiguration su un'istanza EC2 non archivia direttamente le credenziali, ma punta invece ai metadati dell'istanza (che forniscono credenziali temporanee che ruotano automaticamente). Tuttavia, archivia la regione dell'istanza. Un altro scenario che potrebbe richiedere l'esecuzione di Initialize-AWSDefaultConfiguration si verifica se desideri eseguire una chiamata su una regione differente rispetto a quella in cui è in esecuzione l'istanza. L'esecuzione di questo comando sostituisce definitivamente la regione archiviata nei metadati delle istanze.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
Nota

Le credenziali di default sono incluse nell'archivio SDK AWS sotto il nome del profilo default. Il comando sovrascrive qualsiasi profilo esistente con lo stesso nome.

Se l'istanza EC2 è stata avviata con un profilo dell'istanza, PowerShell ottiene le informazioni della regione e le credenziali AWS dal profilo dell'istanza. Non devi eseguire Initialize-AWSDefaultConfiguration. L'esecuzione del cmdlet Initialize-AWSDefaultConfiguration in un'istanza EC2 avviata con un profilo dell'istanza non è necessaria, perché per impostazione predefinita utilizza gli stessi dati del profilo dell'istanza già usati da PowerShell.

Profilo di sessione

Utilizzare Set-AWSCredential per specificare un profilo predefinito per una sessione particolare. Questo profilo sostituisce ogni profilo predefinito per la durata della sessione. Questo è consigliato se desideri utilizzare un profilo con nome personalizzato nella sessione anziché il profilo default corrente.

PS > Set-AWSCredential -ProfileName MyProfileName
Nota

Nelle versioni dei Tools for Windows PowerShell precedenti alla 1.1, il cmdlet Set-AWSCredential non funzionava correttamente e sostituiva il profilo specificato da "MyProfileName". Ti consigliamo di utilizzare una versione più recente dei Tools for Windows PowerShell.

Profilo di comando

Su singoli comandi, puoi aggiungere il parametro -ProfileName per specificare un profilo che si applica a un solo comando. Questo profilo sostituisce qualsiasi profilo predefinito o di sessione, come illustrato nell'esempio seguente.

PS > Get-EC2Instance -ProfileName MyProfileName
Nota

Quando specifichi un profilo predefinito o di sessione, puoi anche aggiungere un parametro -Region per sostituire una sessione predefinita o la regione della sessione. Per ulteriori informazioni, consulta Specificare AWS le regioni. L'esempio seguente specifica un profilo predefinito e la regione.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2

Per impostazione predefinita, il file delle credenziali AWS condiviso viene archiviato nella cartella home dell'utente (C:\Users\username\.aws su Windows o ~/.aws su Linux). Per specificare un file delle credenziali in un percorso diverso, includi il parametro -ProfileLocation e specifica il percorso del file delle credenziali. L'esempio seguente specifica un file delle credenziali non predefinito per un determinato comando.

PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
Nota

Per l'esecuzione di uno script PowerShell durante un periodo in cui normalmente non sei connesso ad AWS, ad esempio l'esecuzione di uno script PowerShell come processo pianificato al di fuori dei normali orari di lavoro, aggiungi il parametro -ProfileLocation quando specifichi il profilo che desideri utilizzare e imposta il valore sul percorso del file che archivia le tue credenziali. Per essere certo che gli script degli AWS Tools for PowerShell siano eseguiti con le credenziali dell'account corretto, devi aggiungere il parametro -ProfileLocation ogni volta che lo script viene eseguito in un contesto o in un processo che non utilizza un account AWS. È anche possibile copiare il file delle credenziali in un percorso accessibile al sistema locale o ad altri account che lo script utilizza per eseguire le attività.

Ordine di ricerca credenziali

Quando esegui un comando, AWS Tools for PowerShell cerca le credenziali nell'ordine seguente. Si interrompe quando trova le credenziali utilizzabili.

  1. Credenziali letterali incorporate come parametri nella riga di comando.

    Consigliamo di utilizzare i profili anziché inserire credenziali letterali nelle righe di comando.

  2. Un nome specifico del profilo o la posizione del profilo.

    • Se specifichi solo un nome del profilo, il comando cerca il profilo specificato nell'archivio SDK AWS e, se non esiste, cerca il profilo specificato nel file delle credenziali AWS condivise nella posizione predefinita.

    • Se specifichi solo una posizione del profilo, il comando cerca il profilo default dal file delle credenziali.

    • Se specifichi sia un nome sia un percorso, il comando cerca il profilo specificato nel file delle credenziali.

    Se il profilo specificato o il percorso non è stato trovato, il comando genera un'eccezione. La ricerca procede nelle seguenti fasi solo se non hai specificato un profilo o una posizione.

  3. Credenziali specificate dal parametro -Credential.

  4. Il profilo di sessione, se esiste.

  5. Il profilo predefinito nell'ordine seguente:

    1. Il profilo di default nell'archivio SDK AWS.

    2. Il profilo di default nel file delle credenziali AWS condiviso.

    3. Il profilo di AWS PS Default nell'archivio SDK AWS.

  6. Se il comando è in esecuzione su un'istanza Amazon EC2 configurata per l'utilizzo di un ruolo IAM, le credenziali temporanee dell'istanza EC2 a cui si accede dal profilo dell'istanza.

    Per ulteriori informazioni sull'utilizzo dei ruoli IAM per le istanze Amazon EC2, consulta l'AWS SDK for .NET.

Se la ricerca ha esito negativo per individuare le credenziali specificate, il comando genera un'eccezione.

Gestione delle credenziali negli AWS Tools for PowerShell Core

I cmdlet negli AWS Tools for PowerShell Core accettano le chiavi di accesso e segrete di AWS o i nomi dei profili delle credenziali quando vengono eseguiti, in modo analogo agli AWS Tools for Windows PowerShell. Quando vengono eseguiti su Windows, entrambi i moduli hanno accesso ai file di archivio delle credenziali AWS SDK for .NET (archiviati per ogni utente in AppData\Local\AWSToolkit\RegisteredAccounts.json).

Questo file memorizza le proprie chiavi in formato crittografato e non può essere utilizzato su un altro computer. È il primo file in cui AWS Tools for PowerShell cerca un profilo delle credenziali ed è anche il file in cui gli AWS Tools for PowerShell archiviano i profili delle credenziali. Per ulteriori informazioni sul file dell'archivio delle credenziali AWS SDK for .NET, consulta l'articolo relativo alla Configurazione delle credenziali AWS. Il modulo Tools for Windows PowerShell attualmente non supporta la scrittura di credenziali in altri file o altre posizioni.

Entrambi i moduli sono in grado di leggere i profili dal file delle credenziali AWS condiviso che è utilizzato da altri SDK AWS e dalla AWS CLI. In Windows, la posizione predefinita per questo file è C:\Users\<userid>\.aws\credentials. Su piattaforme non Windows, questo file viene memorizzato in ~/.aws/credentials. Il parametro -ProfileLocation può essere utilizzato per puntare a un nome di file non predefinito o a una posizione del file.

L'archivio delle credenziali SDK contiene le credenziali in forma crittografata utilizzando le API di crittografia di Windows. Queste API non sono disponibili per altre piattaforme, perciò il modulo AWS Tools for PowerShell Core utilizza il file delle credenziali AWS condiviso in modo esclusivo e supporta la scrittura di nuovi profili delle credenziali nel file delle credenziali condiviso.

I seguenti script di esempio che utilizzano il cmdlet Set-AWSCredential mostrano le opzioni per gestire i profili delle credenziali su Windows con il modulo AWSPowerShell o con il modulo AWSPowerShell.NetCore.

# Writes a new (or updates existing) profile with name "myProfileName" # in the encrypted SDK store file Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Checks the encrypted SDK credential store for the profile and then # falls back to the shared credentials file in the default location Set-AWSCredential -ProfileName myProfileName # Bypasses the encrypted SDK credential store and attempts to load the # profile from the ini-format credentials file "mycredentials" in the # folder C:\MyCustomPath Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials

I seguenti esempi mostrano il comportamento del modulo AWSPowerShell.NetCore sui sistemi operativi Linux o macOS.

# Writes a new (or updates existing) profile with name "myProfileName" # in the default shared credentials file ~/.aws/credentials Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Writes a new (or updates existing) profile with name "myProfileName" # into an ini-format credentials file "~/mycustompath/mycredentials" Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials # Reads the default shared credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName # Reads the specified credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials