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, devi specificare un account che disponga di un'autorizzazione sufficiente per effettuare la richiesta che verrà effettuata dall'URL firmato.
Nella maggior parte dei casi, si tratta di un account di servizio.
Nei casi in cui crei un tuo programma per generare URL firmati, puoi utilizzare un account utente se è associato a una chiave HMAC.
Dopo aver generato un URL firmato, chiunque lo possiede può utilizzarlo per eseguire azioni specifiche, come la lettura di un oggetto, entro un determinato periodo di tempo.
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 8601YYYYMMDD'T'HHMMSS'Z'
.X-Goog-Expires
: il periodo di tempo durante il quale l'URL firmato è rimasto valido, misurato in secondi dal valore inX-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 acat.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
- Crea un URL firmato con gli strumenti di Cloud Storage come le librerie client o Google Cloud CLI.
- Crea un URL firmato con il tuo programma.
- Scopri di più sulle richieste canoniche.
- Scopri di più sulle firme.