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, consulta Procedura di firma V4 con gli strumenti di Cloud Storage e Procedura di firma V4 con il tuo 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 con firma contengono informazioni di autenticazione nella rispettiva stringa di query, consentendo così agli utenti senza credenziali di eseguire azioni specifiche su una risorsa.

  • Quando generi un URL firmato, devi specificare un account che abbia autorizzazioni sufficienti per effettuare la richiesta che verrà eseguita dall'URL firmato.

    • Nella maggior parte dei casi, l'account è 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 possieda può utilizzarlo per eseguire azioni specifiche, come la lettura di un oggetto, entro un determinato periodo di tempo.

Quando è consigliabile utilizzare un URL firmato?

In alcuni scenari, potresti non voler richiedere agli utenti di avere un account Google per accedere a Cloud Storage, ma comunque voler controllare l'accesso utilizzando la logica specifica dell'applicazione. Il modo tipico per risolvere questo problema nel caso d'uso consiste nel fornire a un utente un URL firmato, che consente all'utente 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 vengono utilizzati più spesso per caricamenti e download, perché richieste, i dati degli oggetti si spostano tra i richiedenti e Cloud Storage. Nella maggior parte degli altri casi, ad esempio per copiare, comporre, eliminare oggetti o modificare i metadati, creare un URL firmato e darlo a un utente da utilizzare è un passaggio aggiuntivo non necessario. Ti consigliamo invece di adottare un design in cui l'entità responsabile della creazione dell'URL firmato effettui direttamente la richiesta a Cloud Storage.

Opzioni per generare 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 autenticazione HMAC: se sei un utente di Amazon Simple Storage Service (Amazon S3), puoi utilizzare i tuoi flussi di lavoro esistenti per generare URL firmati per Cloud Storage. Basta specificare le risorse Cloud Storage, fare riferimento all'hoststorage.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 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 query 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 tra 15 minuti. Il valore di scadenza più lungo è 604800 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 degli URL firmati con i caricamenti ripetibili

In genere, non è necessaria la creazione di URL firmati per i caricamenti ripristinabili, perché, dopo la richiesta di avvio del caricamento, i PUT di caricamento dei dati dell'oggetto utilizzano un URI di sessione, che agisce come token di autenticazione. Ciò significa che le richieste di PUT non utilizzano URL firmati.

Sebbene sia possibile creare e utilizzare un URL firmato per la richiesta iniziale di POST avvia il caricamento. Nella maggior parte dei casi il server può avviare il caricamento ripristinabile. . Il server invia quindi l'URI della sessione al client per eseguire il caricamento. In questo modo si evita la complessità della creazione di un URL firmato da parte del server, così come la complessità di dover gestire l'URL firmato dal client e avviare il caricamento ripristinabile.

Come gli URL firmati, un URI 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 cliente.

Considerazioni sugli URL firmati

Quando lavori con URL firmati, tieni presente quanto segue:

  • Gli URL firmati possono essere utilizzati solo per accedere alle risorse di Cloud Storage tramite endpoint dell'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 nelle richieste il cui corpo utilizza la codifica a blocchi.

    • Le librerie client di Cloud Storage di Node.js attualmente possono solo 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 nel 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 crei un URL firmato con il tuo programma, devi definire autonomamente la richiesta canonical e utilizzarla 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