Questa pagina fornisce una panoramica degli URL firmati, che forniscono accesso a tempo limitato a una risorsa Cloud Storage specifica. Chiunque sia in possesso dell'URL firmato può utilizzarlo finché è attivo, indipendentemente dal fatto che abbia un Account Google. 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 per controllare l'accesso a bucket e oggetti, consulta la Panoramica del controllo dell'accesso.
Panoramica
Un URL firmato è un URL che fornisce un'autorizzazione e un 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à effettuata dall'URL firmato.
Nella maggior parte dei casi, l'account è un account di servizio.
Se crei un tuo programma per generare URL firmati, è possibile utilizzare un account utente se è associata 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 gestire questo caso d'uso è fornire a un utente un URL firmato, che gli consenta di leggere, scrivere o eliminare la risorsa per un periodo di tempo limitato. Devi specificare un termine di scadenza quando crei l'URL firmato. Chiunque conosca l'URL può accedere alla risorsa fino al raggiungimento della data e dell'ora di scadenza dell'URL o alla rotazione della chiave utilizzata per firmare l'URL.
Gli utilizzi più comuni degli URL firmati sono i caricamenti e i download, perché in queste richieste i dati degli oggetti passano 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'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 URL firmato creato seguendo la procedura di firma V4 con l'autenticazione del 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 ha fornito 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 baseYYYYMMDD'T'HHMMSS'Z'
ISO 8601.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 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 consentiva alle richieste che utilizzano questo URL firmato di accedere acat.jpeg
.
Utilizzo degli URL firmati con i caricamenti ripetibili
In genere, non è necessario creare URL firmati per i caricamenti riavviabili,
perché dopo la richiesta di avvio del caricamento, le richieste PUT
successive per caricare i dati dell'oggetto utilizzano un URI sessione, che funge da
token di autenticazione. Ciò significa che le richieste di PUT
non utilizzano URL firmati.
Sebbene tu possa creare e utilizzare un URL firmato per la richiesta POST
iniziale per avviare 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à di dover creare un URL firmato sul server, nonché la complessità di dover gestire l'URL firmato e avviare il caricamento ripristinabile sul client.
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 sessione tramite HTTPS quando lo fornisci a un client.
Considerazioni sugli URL firmati
Quando utilizzi gli 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 generati per qualsiasi richiesta all'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.
Al momento, le librerie client Node.js di Cloud Storage possono creare solo URL firmati per singoli oggetti. Ad esempio, non può essere utilizzato per creare URL firmati per la pubblicazione di oggetti in un bucket.
Quando specifichi le credenziali, ti consigliamo di identificare il tuo account di servizio utilizzando il relativo indirizzo email. Tuttavia, è supportato anche l'utilizzo dell'ID account di servizio.
Assicurati di omettere l'intestazione di autorizzazione da tutte le richieste che utilizzano un URL firmato. Se vengono utilizzati entrambi, Cloud Storage potrebbe autenticarsi in base alle credenziali fornite nell'intestazione anziché all'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 canonical obbligatoria 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 viene visualizzato sia nella stringa da firmare sia nel
parametro della stringa di query X-Goog-Credential
.
Passaggi successivi
- Crea un URL firmato con gli strumenti 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.