URL firmati

Questa pagina fornisce una panoramica degli URL firmati, che offrono accesso limitato nel tempo a una specifica risorsa di Cloud Storage. Chiunque sia in possesso dell'URL firmato può utilizzarlo mentre è attivo, indipendentemente dal fatto che abbia un Account Google o meno. Per informazioni su come creare un URL firmato, consulta Processo di firma V4 con gli strumenti di Cloud Storage e Processo di firma V4 con il tuo programma. Per scoprire altri modi per controllare l'accesso ai bucket e agli oggetti, consulta Panoramica del controllo dell'accesso.

Panoramica

Un URL firmato è un URL che fornisce autorizzazioni e tempo limitati per effettuare una richiesta. Gli URL firmati contengono informazioni di autenticazione nella stringa di query, consentendo agli utenti senza credenziali di eseguire azioni specifiche su una risorsa. Quando generi un URL firmato, specifichi un utente o un account di servizio che deve avere autorizzazioni sufficienti per effettuare la richiesta che verrà effettuata dall'URL firmato. Dopo aver generato un URL firmato, chiunque lo possiede può utilizzarlo per eseguire azioni specifiche, come la lettura di un oggetto, entro un periodo di tempo specificato.

Quando conviene utilizzare un URL firmato?

In alcuni scenari, potresti non voler richiedere agli utenti di disporre di un Account Google per accedere a Cloud Storage, ma continuare a controllare l'accesso utilizzando la logica specifica dell'applicazione. In genere, questo caso d'uso viene gestito con un URL firmato, che consente all'utente di accedere in lettura, scrittura o eliminazione alla risorsa per un periodo di tempo limitato. Puoi specificare una scadenza al momento della creazione dell'URL firmato. Chiunque conosca l'URL può accedere alla risorsa fino a quando non viene raggiunta la scadenza dell'URL o fino a quando la chiave utilizzata per firmare l'URL non viene ruotata.

Gli utilizzi più comuni degli URL firmati sono caricamenti e download, perché in queste richieste, i dati degli oggetti si spostano tra i richiedenti e Cloud Storage. Nella maggior parte degli altri casi, ad esempio copiare, scrivere oggetti, eliminare oggetti o modificare metadati, creare un URL firmato e assegnarlo a qualcuno per l'utilizzo è un passaggio aggiuntivo non necessario. Dovresti invece considerare una progettazione in cui l'entità responsabile della creazione dell'URL firmato effettui direttamente la richiesta desiderata a Cloud Storage.

Opzioni per la generazione di un URL firmato

Cloud Storage supporta diversi metodi per generare un URL firmato:

  • Firma V4 con autenticazione dell'account di servizio: questo meccanismo di firma è descritto di seguito.

  • Firma con l'autenticazione HMAC: se sei un utente di Amazon Simple Storage Service (Amazon S3), puoi utilizzare i flussi di lavoro esistenti per generare URL firmati per Cloud Storage. È sufficiente specificare le risorse Cloud Storage, puntare all'host storage.googleapis.com e utilizzare le credenziali HMAC di Cloud Storage nel processo di generazione dell'URL firmato.

Esempio di URL firmato

Di seguito è riportato un esempio di un URL firmato creato in seguito al processo di firma V4 con autenticazione dell'account di servizio:

https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount
.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
2ea7abedc098d2eb14a7

Questo URL firmato fornisce l'accesso in lettura all'oggetto cat.jpeg nel bucket example-bucket. I parametri di ricerca che rendono questo URL firmato sono:

  • X-Goog-Algorithm: l'algoritmo utilizzato per firmare l'URL.

  • X-Goog-Credential: informazioni sulle credenziali utilizzate per creare l'URL firmato.

  • X-Goog-Date: la data e l'ora in cui l'URL firmato è diventato utilizzabile, nel formato di base ISO 8601 YYYYMMDD'T'HHMMSS'Z'.

  • X-Goog-Expires: il periodo di tempo durante il quale l'URL firmato è rimasto valido, misurato in secondi dal valore in X-Goog-Date. In questo esempio, l'URL firmato scade dopo 15 minuti. Il valore di scadenza più lungo è 604.800 secondi (7 giorni).

  • X-Goog-SignedHeaders: intestazioni che dovevano essere incluse in qualsiasi richiesta che utilizzava l'URL firmato.

  • X-Goog-Signature: la stringa di autenticazione che ha consentito le richieste utilizzando questo URL firmato per accedere a cat.jpeg.

Utilizzo di URL firmati con caricamenti ripristinabili

Quando utilizzi i caricamenti ripristinabili, puoi creare e utilizzare un URL firmato solo per la richiesta POST che avvia il caricamento. Questa richiesta iniziale restituisce un URI di sessione che utilizzerai nelle richieste PUT successive per caricare i dati. Poiché l'URI di sessione funge da token di autenticazione, le richieste PUT non utilizzano alcun URL firmato.

Un vantaggio dei caricamenti ripristinabili è che consentono di effettuare la richiesta di avvio da parte del server, evitando ai clienti di dover gestire URL firmati. Tuttavia, tieni presente alcune considerazioni:

  • L'URI della sessione può essere utilizzato da chiunque ne sia in possesso per caricare i dati. Assicurati di trasmettere l'URI di sessione tramite HTTPS quando lo fornisci a un client.

  • I caricamenti ripristinabili vengono bloccati all'area geografica della richiesta iniziale. Per evitare caricamenti lenti, se il tuo server e il tuo client si trovano in luoghi geograficamente distanti, fai in modo che la richiesta POST iniziale venga creata e firmata dal server, poi fornisci l'URL firmato al client in modo che il caricamento venga avviato dalla loro posizione.

Considerazioni sugli URL firmati

Quando lavori con URL firmati, tieni presente quanto segue:

  • Gli URL firmati possono essere utilizzati solo per accedere alle risorse Cloud Storage tramite endpoint API XML.

  • In genere gli URL firmati possono essere creati per qualsiasi richiesta dell'API XML, ma ci sono due eccezioni:

    • Gli URL firmati che utilizzano le firme V4 non possono essere utilizzati nelle richieste il cui corpo utilizza la codifica a blocchi.

    • Le librerie client di Cloud Storage di Node.js al momento possono creare URL firmati solo per singoli oggetti. Ad esempio, non può essere utilizzata per creare URL firmati per elencare gli oggetti in un bucket.

  • Quando specifichi le credenziali, è consigliabile identificare l'account di servizio utilizzando il relativo indirizzo email. Tuttavia, è supportato anche l'utilizzo dell'ID account di servizio.

  • Assicurati di omettere l'intestazione dell'autorizzazione dalle richieste che utilizzano un URL firmato. Se vengono utilizzati entrambi, Cloud Storage potrebbe eseguire l'autenticazione utilizzando le credenziali fornite nell'intestazione, anziché l'URL firmato. In questo modo potresti consentire un accesso alle risorse maggiore del previsto.

Richieste canoniche

Gli URL firmati utilizzano le richieste canoniche come parte delle informazioni codificate nel parametro della stringa di query X-Goog-Signature. Quando crei un URL firmato con gli strumenti di Cloud Storage, la richiesta canonica richiesta viene creata e incorporata automaticamente. Tuttavia, quando crei un URL firmato con il tuo programma, devi definire personalmente la richiesta canonica e utilizzarla per creare una firma.

Ambito delle credenziali

L'ambito credenziali viene visualizzato sia nel parametro string-to-sign e nel parametro della stringa di query X-Goog-Credential.

Passaggi successivi