Proteggere le chiavi di accesso
Chiunque abbia le tue chiavi di accesso dispone del tuo stesso livello di accesso alle risorse AWS. Di conseguenza, AWS si assicura di proteggere le tue chiavi di accesso e, in linea con il nostro modello di responsabilità condivisa
Espandi le seguenti sezioni per ulteriori informazioni su come proteggere le chiavi di accesso.
Nota
La tua organizzazione può avere policy e requisiti di sicurezza differenti rispetto a quelli descritti in questo argomento. I suggerimenti qui forniti sono destinati a essere linee guida generali.
Uno dei modi migliori per proteggere il tuo account è non disporre di chiavi di accesso dell Utente root dell'account AWS. A meno che non necessiti di disporre delle chiavi di accesso dell'utente root (il che è raro), è consigliabile non generarle. Crea invece un utente amministrativo in AWS IAM Identity Center per le attività amministrative quotidiane. Per informazioni su come creare un utente amministrativo in Centro identità IAM, consulta la pagina Nozioni di base della Guida per l'utente di Centro identità IAM.
Se già disponi di chiavi di accesso dell'utente root per il tuo account, ti consigliamo di attenerti alle seguenti indicazioni: trova i punti nelle applicazioni in cui stai attualmente utilizzando le chiavi di accesso (se presenti) e sostituisci le chiavi di accesso dell'utente root con le chiavi di accesso dell'utente IAM. Quindi disabilita e rimuovi le chiavi di accesso dell'utente root. Per ulteriori informazioni sull'aggiornamento delle chiavi di accesso, consulta la pagina Aggiornare le chiavi di accesso
In molti scenari, non è necessaria una chiave di accesso a lungo termine a validità illimitata (come accade invece per gli utenti IAM). Al contrario, è possibile creare ruoli IAM e generare credenziali di sicurezza temporanee. Tali credenziali sono composte dall'ID della chiave di accesso e dalla chiave di accesso segreta, ma includono anche un token di sicurezza che ne indica la scadenza.
Le chiavi di accesso a lungo termine, ad esempio quelle associate a utenti IAM ed all'utente root, rimangono valide finché non vengono revocate manualmente. Tuttavia, le credenziali di sicurezza temporanee ottenute mediante ruoli IAM e altre caratteristiche di AWS Security Token Servicescadono dopo un breve periodo di tempo. Utilizza le credenziali di sicurezza temporanee per ridurre i rischi in caso di esposizione accidentale delle credenziali.
Utilizzare un ruolo IAM e le credenziali di sicurezza temporanee in questi scenari:
-
Disponi di un'applicazione o degli script AWS CLI in esecuzione su un'istanza Amazon EC2. Non utilizzare le chiavi di accesso direttamente nell'applicazione. Non passare le chiavi di accesso all'applicazione, incorporarle nell'applicazione o lasciare che l'applicazione legga una chiave da qualsiasi origine. Al contrario, definisci un ruolo IAM con le autorizzazioni appropriate per l'applicazione e avvia l'istanza Amazon Elastic Compute Cloud (Amazon EC2) con i ruoli per EC2. In questo modo viene associato un ruolo IAM all'istanza Amazon EC2. Questa pratica, inoltre, consente all'applicazione di ottenere credenziali di sicurezza temporanee, che a sua volta può utilizzare per effettuare chiamate a livello di programmazione ad AWS. Gli SDK AWS e AWS Command Line Interface (AWS CLI) possono ottenere automaticamente le credenziali temporanee dal ruolo.
-
Devi concedere l'accesso tra account. Utilizzare un ruolo IAM per stabilire l'attendibilità tra gli account, quindi concedere agli utenti di un account autorizzazioni limitate per accedere all'account attendibile. Per ulteriori informazioni, consulta Tutorial IAM: Delega dell'accesso tra account AWS tramite i ruoli IAM.
-
Hai a disposizione un'app mobile. Non integrare le chiavi di accesso con l'app, anche nell'archiviazione crittografata. Al contrario, utilizzare Amazon Cognito
per la gestione dell'identità degli utenti nell'applicazione. Questo servizio consente di autenticare gli utenti utilizzando Login with Amazon, Facebook, Google o qualsiasi provider di identità compatibile con OpenID Connect (OIDC). È quindi possibile utilizzare il provider di credenziali Amazon Cognito per gestire le credenziali che l'app usa per le richieste ad AWS. -
Vuoi eseguire la federazione in AWS e la tua organizzazione supporta SAML 2.0. Se si lavora per un'organizzazione che dispone di un provider di identità che supporta SAML 2.0, configurare il provider per l'utilizzo di SAML. È possibile utilizzare SAML per scambiare informazioni di autenticazione con AWS e recuperare un set di credenziali di sicurezza temporanee. Per ulteriori informazioni, consulta Federazione SAML 2.0.
-
Vuoi eseguire la federazione in AWS e la tua organizzazione ha un archivio identità on-premises. Se gli utenti possono effettuare l'autenticazione all'interno della tua organizzazione, puoi scrivere un'applicazione in grado di assegnare loro credenziali di sicurezza temporanee per l'accesso alle risorse AWS. Per ulteriori informazioni, consulta Abilitare l'accesso personalizzato del gestore di identità alla console AWS.
-
Utilizza le condizioni nelle policy IAM per consentire l'accesso solo dalle reti previste. Puoi limitare dove e come vengono utilizzate le tue chiavi di accesso implementando policy IAM con condizioni che specificano e consentano solo le reti previste, come gli indirizzi IP pubblici o i cloud privati virtuali (VPC). In questo modo sai che le chiavi di accesso possono essere utilizzate solo da reti previste e accettabili.
Nota
Utilizzi un'istanza Amazon EC2 con un'applicazione che richiede l'accesso a livello di programmazione alle risorse AWS? In tal caso, utilizza i ruoli IAM per EC2.
Se hai la necessità di creare chiavi di accesso per l'accesso a livello di programmazione ad AWS, creale per gli utenti IAM e concedi agli utenti soltanto le autorizzazioni di cui hanno bisogno.
Osserva queste precauzioni per proteggere le chiavi di accesso degli utenti IAM:
-
Non incorporare le chiavi di accesso direttamente nel codice. Gli SDK AWS
e gli Strumenti da linea di comando AWS consentono di collocare le chiavi di accesso in posizioni note in modo da evitare di conservarle nel codice. Colloca le chiavi di accesso in una delle posizioni seguenti:
-
File delle credenziali AWS. Gli SDK AWS e AWS CLI utilizzano automaticamente le credenziali che archivi nel file delle credenziali AWS.
Per ulteriori informazioni sull'utilizzo del file delle credenziali AWS, consulta la documentazione per il tuo SDK. Alcuni esempi includono Configurazione della regione e delle credenziali AWS nella Guida per gli sviluppatori di AWS SDK per Java e File di configurazione e delle credenziali nella Guida per l'utente di AWS Command Line Interface.
Per archiviare le credenziali per AWS SDK per .NET e AWS Tools for Windows PowerShell, ti consigliamo di usare l'SDK Store. Per ulteriori informazioni, consulta Utilizzo dell'SDK Store nella Guida per gli sviluppatori di AWS SDK per .NET.
-
Variabili di ambiente. In un sistema multi-tenant, scegli le variabili di ambiente dell'utente e non le variabili di ambiente del sistema.
Per ulteriori informazioni sull'utilizzo di variabili di ambiente per archiviare le credenziali, consultare la sezione Variabili di ambiente nella Guida per l'utente di AWS Command Line Interface.
-
-
Utilizza chiavi di accesso diverse per applicazioni differenti. Esegui questa operazione in modo da isolare le autorizzazioni e revocare le chiavi di accesso per le singole applicazioni in caso una di esse venga esposta. Avere chiavi di accesso separate per applicazioni diverse genera anche voci distinte nei file di log AWS CloudTrail
. Questa configurazione consente di determinare più facilmente quale applicazione ha eseguito azioni specifiche. -
Aggiorna le chiavi di accesso all'occorrenza. Se esiste il rischio che la chiave di accesso possa essere compromessa, aggiorna la chiave di accesso ed elimina quella precedente. Per maggiori dettagli, consultare . Aggiornare le chiavi di accesso
-
Rimuovi le chiavi di accesso inutilizzate. Se un utente lascia l'organizzazione, rimuovere l'utente IAM corrispondente in modo che non possa più accedere alle risorse. Per scoprire l'ultimo utilizzo di una chiave di accesso, usa l'API
GetAccessKeyLastUsed(comando (AWS CLI):aws iam get-access-key-last-used). -
Utilizza le credenziali temporanee e configura l'autenticazione a più fattori (MFA) per le operazioni API più sensibili. Con le policy IAM, è possibile specificare le operazioni API che un utente è autorizzato a chiamare. In alcuni casi, è consigliabile implementare un livello di sicurezza aggiuntivo, richiedendo agli utenti di autenticarsi con la MFA AWS prima di eseguire operazioni particolarmente sensibili. Potrebbe ad esempio esserci una policy che permette a un utente di eseguire le operazioni
RunInstances,DescribeInstanceseStopInstancesdi Amazon EC2. Ma potresti voler limitare un'operazione distruttiva comeTerminateInstancese fare in modo che gli utenti possano eseguire tale operazione solo se eseguono l'autenticazione con un dispositivo MFA AWS. Per ulteriori informazioni, consulta Accesso sicuro alle API con MFA.
Con l'app per dispositivi mobili AWS è possibile accedere a un set limitato di servizi e caratteristiche AWS. L'app mobile ti aiuta a supportare la risposta agli incidenti mentre sei in viaggio. Per ulteriori informazioni e per scaricare l'app, consulta AWS Console Mobile Application
È possibile accedere all'app per dispositivi mobili utilizzando la password della console o le chiavi di accesso. Come best practice, non utilizzare le chiavi di accesso dell'utente root. Invece, ti consigliamo vivamente di creare un utente IAM specificamente per gestire le risorse AWS utilizzando l'applicazione per dispositivi mobili, oltre a utilizzare una password o un blocco biometrico sul dispositivo mobile. Se si perde il dispositivo mobile, è possibile rimuovere l'accesso dell'utente IAM.
Accesso mediante le chiavi di accesso (app per dispositivi mobili)
-
Apri l'app sul tuo dispositivo mobile.
-
Se questa è la prima volta che aggiungi un'identità al dispositivo, scegli Add an identity (Aggiungi un'identità) e scegli Access keys (Chiavi di accesso).
Se hai già effettuato l'accesso utilizzando un'altra identità, scegli l'icona del menu e scegli Switch identity (Cambia identità). Quindi scegli Sign in as a different identity (Accedi come identità diversa) e quindi Access keys (Chiavi di accesso).
-
Nella pagina Access keys (Chiavi di accesso) immetti le informazioni nei campi.
-
ID chiave di accesso: immettere l'ID chiave di accesso.
-
Chiave di accesso segreta: inserire la chiave di accesso segreta.
-
Nome dell'identità: immettere il nome dell'identità che verrà visualizzata nell'applicazione per dispositivi mobili. Non è necessario che corrisponda al nome utente IAM.
-
PIN identità: creare un PIN (Personal Identification Number) da utilizzare per gli accessi futuri.
Nota
Se si abilita la biometria per l'app per dispositivi mobili AWS, verrà richiesto di utilizzare per la verifica l'impronta digitale o il riconoscimento facciale, anziché il PIN. Se la biometria restituisce un errore, potrebbe venire richiesto il PIN.
-
-
Scegliere Verify and add keys (Verifica e aggiungi chiavi).
È ora possibile accedere a un set selezionato di risorse mediante l'app per dispositivi mobili.
Le pagine seguenti offrono indicazioni per la configurazione degli SDK AWS e della AWS CLI per l'utilizzo delle chiavi di accesso:
-
Configurazione della regione e delle credenziali AWS nella Guida per gli sviluppatori di AWS SDK per Java.
-
Utilizzo dell'SDK Store nella Guida per gli sviluppatori di AWS SDK per .NET.
-
Specifica delle credenziali all'SDK nella Guida per gli sviluppatori di AWS SDK per PHP.
-
Configurazione
nella documentazione Boto 3 (AWS SDK per Python). -
Utilizzo delle credenziali AWS nella Guida per l'utente di AWS Tools for Windows PowerShell
-
File di configurazione e delle credenziali nella Guida per l'utente di AWS Command Line Interface.
-
Concessione dell'accesso utilizzando un ruolo IAM nella Guida per gli sviluppatori di AWS SDK per .NET
-
Configurazione dei ruoli IAM per Amazon EC2 nell'AWS SDK for Java 2.x
Utilizzo delle chiavi di accesso e delle credenziali segrete per l'accesso alla console
È possibile utilizzare la chiave di accesso e le credenziali della chiave segreta per l'accesso diretto alla Console di gestione AWS, non solo la AWS CLI. Ciò può essere ottenuto utilizzando la chiamata API AWS STS GetFederationToken. Creando un URL della console utilizzando le credenziali e il token temporanei forniti da GetFederationToken, i principali IAM possono accedere alla console. Per ulteriori informazioni, consulta Abilitare l'accesso personalizzato del gestore di identità alla console AWS.
È bene chiarire che quando si accede alla console direttamente utilizzando credenziali utente IAM o root con MFA abilitata, sarà richiesta l'MFA. Tuttavia, se si utilizza il metodo sopra descritto (utilizzando credenziali temporanee con GetFederationToken), l'MFA NON sarà richiesta.
Audit delle chiavi di accesso
Puoi rivedere le chiavi di accesso AWS nel codice per stabilire se le chiavi provengono da un account di tua proprietà. Puoi passare un ID chiave di accesso utilizzando il comando della AWS CLI aws sts
get-access-key-info o l'operazione dell'API AWS GetAccessKeyInfo.
Le operazioni AWS CLI e API AWS restituiscono l'ID dell'Account AWS a cui appartiene la chiave di accesso. Gli ID delle chiavi di accesso che iniziano con AKIA sono credenziali a lungo termine per un utente IAM o un Utente root dell'account AWS. Gli ID delle chiavi di accesso che iniziano con ASIA sono credenziali temporanee create utilizzando le operazioni AWS STS. Se l'account nella risposta appartiene a te, puoi effettuare l'accesso come utente root e rivedere le chiavi di accesso dell'utente root. Quindi, puoi estrarre un report delle credenziali per scoprire quale utente IAM possiede le chiavi. Per scoprire chi ha richiesto le credenziali temporanee per una chiave di accesso ASIA, visualizza gli eventi AWS STS nei log di CloudTrail.
Per motivi di sicurezza, è possibile esaminare i log AWS CloudTrail per sapere chi ha eseguito un'operazione in AWS. È possibile utilizzare la chiave di condizione sts:SourceIdentity nella policy di attendibilità del ruolo per richiedere agli utenti di specificare un'identità quando assumono un ruolo. Ad esempio, è possibile richiedere che gli utenti IAM specifichino il proprio nome utente come identità di origine. In questo modo è possibile determinare quale utente ha eseguito un'operazione specifica in AWS. Per ulteriori informazioni, consulta sts:SourceIdentity.
Questa operazione non indica lo stato della chiave di accesso. La chiave potrebbe essere attiva, inattiva o eliminata. Le chiavi attive potrebbero non disporre delle autorizzazioni per eseguire un'operazione. Fornire una chiave di accesso eliminata potrebbe restituire un errore indicante che la chiave non esiste.