URL firmati

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

Panoramica

Un URL firmato è un URL che offre 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 con autorizzazioni sufficienti per effettuare la richiesta effettuata dall'URL firmato.

    • Nella maggior parte dei casi, si tratta di un account di servizio.

    • Nel caso in cui crei un tuo programma per generare URL firmati, è possibile utilizzare un account utente, se è associato a una chiave HMAC.

Dopo aver generato un URL firmato, chiunque lo possiede può utilizzarlo. eseguire azioni specifiche, come la lettura di un oggetto, all'interno di un un periodo di tempo.

Quando conviene utilizzare un URL firmato?

In alcuni scenari, potresti non volere che gli utenti dispongano di un piano Google per accedere a Cloud Storage, ma vuoi comunque controllare l'accesso utilizzando la logica specifica dell'applicazione. Il modo tipico per risolvere questo problema nel caso d'uso è fornire a un utente un URL firmato, che consenta di leggere, l'accesso in scrittura o eliminazione alla risorsa per un periodo di tempo limitato. Devi specificare e 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 utilizzato per firmare la rotazione dell'URL.

Gli URL firmati dagli URL firmati sono più comuni in caso di caricamenti e download, richieste, i dati degli oggetti si spostano tra i richiedenti e Cloud Storage. Nel nella maggior parte degli altri casi, come la copia e la composizione di oggetti, l'eliminazione di oggetti o la modifica di metadati, la creazione di un URL firmato e la relativa assegnazione a qualcuno per l'utilizzo è una passaggio aggiuntivo non necessario. Dovresti invece considerare una struttura in cui responsabile della creazione dell'URL firmato rende direttamente 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 Amazon Simple Storage Service (Amazon S3), puoi usare i flussi di lavoro esistenti per generare URL firmati per Cloud Storage. È sufficiente specificare le risorse Cloud Storage e puntare l'host storage.googleapis.com e utilizza le credenziali HMAC di Cloud Storage durante il processo di generazione dell'URL firmato.

Esempio di URL firmato

Di seguito è riportato un esempio di un URL firmato creato a seguito della versione V4 di firma con l'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'elemento 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, crei e utilizzi solo un URL firmato per la richiesta POST che avvia il caricamento. Questa richiesta iniziale restituisce un URI sessione che utilizzi nelle richieste PUT successive di caricamento i dati. Poiché l'URI della sessione funge da token di autenticazione, PUT richieste non utilizzano URL firmati.

Un vantaggio dei caricamenti ripristinabili è che consentono di eseguire la richiesta di avvio dal server, evitando la necessità per i clienti di dover gestire URL firmati. Tuttavia, occorre tenere a mente alcune considerazioni:

  • L'URI della sessione può essere utilizzato da chiunque ne sia in possesso per caricare i dati. Essere 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 server e il client si trovano geograficamente distanti luoghi, la richiesta iniziale POST deve essere creata e firmata dal server ma poi fornisci l'URL firmato al client per avviare il caricamento. 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 API XML; tuttavia, esistono due eccezioni:

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

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

  • Quando specifichi le credenziali, è consigliabile identificare il servizio account utilizzando il proprio indirizzo email; ma l'uso dell'account di servizio È supportato anche l'ID.

  • Assicurati di omettere l'intestazione di autorizzazione dalle richieste che utilizzano un URL. Se vengono utilizzati entrambi, Cloud Storage può eseguire l'autenticazione le credenziali fornite nell'intestazione anziché nell'URL firmato. Ciò potrebbe e consentire un accesso alle risorse maggiore del previsto.

Richieste canoniche

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

Ambito delle credenziali

L'ambito delle credenziali compare sia nella stringa string-to-sign che nella Parametro della stringa di query X-Goog-Credential.

Passaggi successivi