Questa pagina illustra le chiavi HMAC (Hash-based Message Authentication Code), che puoi utilizzare per autenticare le richieste all'API Cloud Storage XML. Le chiavi HMAC sono utili quando vuoi spostare dati tra altri provider di spazio di archiviazione sul cloud e Cloud Storage, poiché le chiavi HMAC ti consentono di riutilizzare il codice esistente per accedere a Cloud Storage.
Panoramica
Una chiave HMAC è un tipo di credenziale associato a un account, in genere un account di servizio. Puoi utilizzare una chiave HMAC per creare firme utilizzando l'algoritmo di firma HMAC-SHA256. Le firme create vengono quindi incluse nelle richieste all'API XML di Cloud Storage. Le firme mostrano che una determinata richiesta è autorizzata dall'account associato alla chiave HMAC.
Le chiavi HMAC sono composte da due parti principali: un ID di accesso e un segreto.
ID accesso: una stringa alfanumerica collegata a un account specifico.
Quando è collegata a un account di servizio, la stringa è di 61 caratteri.
Quando è collegata a un account utente, la stringa è di 24 caratteri.
Di seguito è riportato un esempio di ID di accesso:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secret: una stringa codificata in Base-64 di 40 caratteri collegata a un ID di accesso specifico. Un secret è una chiave precondivisa che solo tu e Cloud Storage conosci. Utilizzi il secret per creare firme nell'ambito del processo di autenticazione. Di seguito è riportato un esempio di secret:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Sia l'ID di accesso sia il secret identificano in modo univoco una chiave HMAC, ma il secret contiene informazioni molto più sensibili, poiché viene utilizzato per creare firme.
Facoltativamente, puoi abilitare il vincolo restrictAuthTypes
su una risorsa, che limita l'accesso per le richieste firmate da chiavi HMAC.
Archiviare i secret
Quando crei una chiave HMAC per un account di servizio, ti viene fornito il secret per la chiave una sola volta. Devi archiviare in modo sicuro il secret, insieme all'ID di accesso associato. Se perdi il secret, non potrai recuperarlo da te o da Google Cloud e dovrai creare una nuova chiave HMAC per l'account di servizio per continuare ad autenticare le richieste.
Per creare una chiave HMAC per un account utente, devi aver eseguito l'accesso alla console Google Cloud con l'account utente e andare alla scheda Interoperabilità nel menu Impostazioni di Cloud Storage di un progetto per il quale disponi dell'autorizzazione IAM resourcemanager.projects.get
. Dopo la creazione, puoi visualizzare il secret della chiave dalla scheda Interoperabilità di qualsiasi progetto per il quale disponi dell'autorizzazione resourcemanager.projects.get
.
Best practice per l'archiviazione dei secret
Non condividere il secret della chiave HMAC. Dovresti trattare i secret delle chiavi HMAC come qualsiasi set di credenziali di accesso.
Come best practice per la sicurezza, dovresti cambiare regolarmente le chiavi nell'ambito di una rotazione della chiave.
Se ritieni che qualcun altro stia utilizzando le tue chiavi HMAC, devi eliminare immediatamente le chiavi HMAC interessate e crearne di nuove.
Quando modifichi le chiavi HMAC, devi aggiornare il codice con le nuove chiavi HMAC prima di eliminare quelle precedenti. Le chiavi HMAC eliminate non sono più valide e non possono più essere recuperate.
Limitazioni
Le chiavi HMAC possono essere utilizzate solo per effettuare richieste all'API XML, non all'API JSON.
Puoi avere un massimo di 10 chiavi HMAC per account di servizio. Le chiavi eliminate non incidono su questo limite.
Dopo la creazione, potrebbero essere necessari fino a 30 secondi prima che una chiave HMAC dell'account di servizio diventi utilizzabile. Dopo l'eliminazione di un account di servizio, le chiavi HMAC che appartengono all'account potrebbero continuare a funzionare per un massimo di 5 minuti. Al contrario, dopo l'annullamento dell'account di servizio a cui appartengono le chiavi HMAC potrebbero essere necessari fino a 5 minuti.
Se abiliti il vincolo
restrictAuthTypes
su una risorsa, non puoi più creare o attivare chiavi HMAC per il tipo di account specificato nella risorsa.
Migrazione dalle chiavi HMAC degli account utente
In genere, associare le chiavi HMAC agli account di servizio è un'opzione migliore rispetto agli account utente, in particolare per i carichi di lavoro di produzione:
Gli account di servizio consentono una migliore supervisione amministrativa ed eliminano le implicazioni sulla sicurezza e sulla privacy degli account dei singoli utenti.
Gli account di servizio riducono il rischio di interruzioni del servizio associate all'utilizzo degli account utente, ad esempio quando un account utente viene disabilitato perché l'utente lascia il progetto o l'azienda.
Se al momento utilizzi chiavi HMAC con account utente, ma vuoi eseguire la migrazione agli account di servizio, tieni presente quanto segue:
Il progetto deve avere un account di servizio e una chiave HMAC associata.
All'account di servizio devono essere concesse le autorizzazioni richieste per eseguire azioni in Cloud Storage.
Il ruolo
Storage Object Admin
contiene l'autorizzazione ampia per lavorare con gli oggetti, ma puoi avere account di servizio separati per eseguire azioni diverse. Ad esempio, potresti volere un account di servizio per la lettura, con il ruoloStorage Object Viewer
e un secondo account di servizio per la scrittura, a cui corrisponde il ruoloStorage Object Creator
.Prima di eseguire il push degli aggiornamenti in produzione, devi verificare che l'account di servizio funzioni come previsto.
Dopo la transizione del lavoro di produzione alle chiavi HMAC dell'account di servizio, devi controllare la seguente metrica di Cloud Monitoring per verificare che le chiavi HMAC associate all'account utente non siano più in uso:
Metrica Descrizione storage.googleapis.com/authn/authentication_count
Il numero di volte in cui le chiavi HMAC sono state utilizzate per autenticare le richieste. Puoi impostare le seguenti etichette per monitorare le chiavi dell'account utente che sono ancora in uso durante l'avanzamento della migrazione:
access_id
: identifica l'ID di accesso che ha effettuato la richiesta. Puoi anche utilizzareaccess_id
durante una rotazione della chiave per osservare il trasferimento del traffico da una chiave all'altra.authentication_method
: identifica se le chiavi sono chiavi di account utente o account di servizio.
Dopo aver verificato che le chiavi HMAC dell'account utente non vengono più utilizzate, devi eliminarle. Così facendo ridurrai il rischio di accesso inappropriato ai dati.
Se l'account utente non viene più utilizzato per accedere alle risorse di Cloud Storage, revoca l'accesso a Cloud Storage di cui dispone.
Facoltativamente, puoi abilitare il vincolo
restrictAuthTypes
sulle chiavi HMAC degli account utente per un ulteriore livello di sicurezza.
Passaggi successivi
- Creare chiavi HMAC per gli account di servizio.
- Utilizzare una chiave HMAC in una richiesta autenticata.