Chiavi HMAC

Configurazione

Questa pagina descrive 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 spazio di archiviazione sul cloud e Cloud Storage, perché ti consentono di riutilizzare il codice esistente per accedere a Cloud Storage.

Panoramica

Una chiave HMAC è un tipo di credenziale associata a un account, in genere un account di serviziot. Utilizzi una chiave HMAC per creare firme utilizzando l'algoritmo di firma HMAC-SHA256. Le firme che crei vengono poi incluse nelle richieste all'API Cloud Storage XML. 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 accesso e un secret.

  • ID accesso: una stringa alfanumerica collegata a un account specifico.

    • Se collegata a un account di servizio, la stringa è lunga 61 caratteri.

    • Se collegata a un account utente, la stringa è lunga 24 caratteri.

    Di seguito è riportato un esempio di ID accesso:

    GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Secret: una stringa con codifica Base64 di 40 caratteri collegata a un ID accesso specifico. Un secret è una chiave precondivisa che solo tu e Cloud Storage conoscete. Utilizzi il tuo segreto per creare firme nell'ambito della procedura di autenticazione. Di seguito è riportato un esempio di secret:

    bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Sia l'ID accesso che il secret identificano in modo univoco una chiave HMAC, ma il secret è un'informazione molto più sensibile, perché viene utilizzato per creare firme.

Se vuoi, puoi attivare il vincolo restrictAuthTypes su una risorsa, che limita l'accesso per le richieste firmate con chiavi HMAC.

Archiviare i secret

Quando crei una chiave HMAC per un service account, ti viene fornito il segreto della chiave una sola volta. Devi archiviare in modo sicuro il secret insieme all'ID accesso associato. Se perdi il secret, non potrai recuperarlo o Google Cloude dovrai creare una nuova chiave HMAC per ilaccount di serviziot per continuare ad autenticare le richieste.

Per creare una chiave HMAC per un account utente, devi accedere alla consoleGoogle 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. Una volta creata, puoi visualizzare il segreto della chiave dalla scheda Interoperabilità di qualsiasi progetto per cui disponi dell'autorizzazione resourcemanager.projects.get.

Best practice per l'archiviazione dei secret

  • Non condividere il secret della chiave HMAC. Devi trattare i secret della chiave HMAC come qualsiasi insieme di credenziali di accesso.

  • Come best practice di sicurezza, devi cambiare regolarmente le chiavi nell'ambito di una rotazione della chiave.

  • Se ritieni che qualcun altro stia utilizzando le tue chiavi HMAC, devi eliminarle immediatamente e crearne di nuove.

  • Quando modifichi le chiavi HMAC, devi aggiornare il codice con le nuove chiavi HMAC prima di eliminare quelle precedenti. Quando elimini le chiavi HMAC, queste diventano immediatamente non valide e non sono recuperabili.

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 ogni account di servizio. Le chiavi eliminate non contano ai fini di questo limite.

  • Dopo la creazione, potrebbero essere necessari fino a 60 secondi prima che una chiave HMAC dell'account di servizio diventi utilizzabile. Dopo l'eliminazione di un account di servizio, le chiavi HMAC appartenenti a quest'ultimo potrebbero continuare a funzionare per un massimo di 5 minuti. Al contrario, possono essere necessari fino a 5 minuti prima che le chiavi HMAC tornino a essere utilizzabili dopo l'annullamento dell'eliminazione deaccount di serviziont che le possiede.

  • Se abiliti il vincolo restrictAuthTypes su una risorsa, non puoi più creare o attivare chiavi HMAC per il tipo di account specificato in quella risorsa.

Migrazione dalle chiavi HMAC dell'account utente

In generale, l'associazione delle chiavi HMAC agli account di servizio è un'opzione migliore rispetto all'associazione agli account utente, in particolare per i workload di produzione:

  • Gli account di servizio consentono una migliore supervisione amministrativa ed eliminano le implicazioni per la sicurezza e la privacy degli account detenuti da singoli utenti.

  • Gli account di servizio riducono il rischio di interruzioni del servizio associate all'utilizzo di account utente, ad esempio quando un account utente viene disattivato perché l'utente lascia il progetto o l'azienda.

Se attualmente utilizzi le chiavi HMAC con gli account utente, ma vuoi eseguire la migrazione agli account di servizio, tieni presente quanto segue:

  • Il tuo progetto deve avere un service account e una chiave HMAC associata.

  • Al account di servizio devono essere concesse le autorizzazioni richieste per eseguire azioni in Cloud Storage.

    L'autorizzazione generica per lavorare con gli oggetti è contenuta nel ruolo Storage Object Admin, ma potresti voler disporre di service account separati per eseguire azioni diverse. Ad esempio, potresti volere un account di servizio per la lettura, che avrebbe il ruolo Storage Object Viewer, e un secondo account di servizio per la scrittura, che avrebbe il ruolo Storage Object Creator.

  • Prima di eseguire il push di qualsiasi aggiornamento in produzione, devi eseguire dei test per assicurarti che il account di servizio si comporti come previsto.

  • Dopo che il tuo lavoro di produzione passa alle chiavi HMAC del 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 degli account utente ancora in uso durante l'avanzamento della migrazione:

    • access_id: identifica quale ID accesso ha effettuato la richiesta. Puoi anche utilizzare access_id durante una rotazione della chiave per osservare il traffico che si sposta da una chiave all'altra.

    • authentication_method: identifica se le chiavi sono chiavi dell'account utente o del service account.

  • Una volta verificato che le chiavi HMAC dell'account utente non vengono più utilizzate, devi eliminarle. In questo modo ridurrai il rischio di accesso ai dati inappropriato.

  • Se l'account utente non viene più utilizzato per accedere alle risorse Cloud Storage, revoca qualsiasi accesso a Cloud Storage.

  • Se vuoi, puoi attivare il vincolo restrictAuthTypes sulle chiavi HMAC dell'account utente per un ulteriore livello di sicurezza.

Passaggi successivi