In questa pagina viene descritto un algoritmo per l'implementazione del processo di firma V4 in modo che puoi creare URL firmati per le chiave RSA di Cloud Storage nel tuo un flusso di lavoro utilizzando un linguaggio di programmazione a tua scelta.
Prima di iniziare
Prima di creare un programma che implementi il processo di firma V4, è necessario completa i seguenti passaggi:
Crea un account di servizio. Se hai già un account di servizio, puoi saltare questo passaggio.
Concedi all'account di servizio autorizzazioni sufficienti in modo che possa eseguire la richiesta che farà l'URL firmato.
Ad esempio, se l'URL firmato consentirà a un utente di leggere i dati dell'oggetto, l'account di servizio deve avere l'autorizzazione necessaria per leggere i dati dell'oggetto.
Se l'algoritmo di firma che intendi utilizzare non è integrato in Google Cloud, genera una nuova chiave privata o disponi di una chiave privata per l'account di servizio. La chiave può essere in formato JSON o formato PKCS12.
Algoritmo per gli URL di firma
Il programma dovrebbe includere i seguenti passaggi:
Crea la richiesta canonica come stringa. La richiesta canonica definisce elementi che gli utenti devono includere nella loro richiesta quando utilizzano l'URL firmato.
Consulta la sezione Richieste canoniche per informazioni dettagliate sulle parti e sui formati richiesti.
Crea la funzione string-to-sign. "string-to-sign" rappresenta la base per la creazione una firma e include al suo interno il valore hash con codifica esadecimale del richiesta canonica.
Consulta Firme per i dettagli sul formato della stringa da firma.
Firma l'attributo string-to-sign utilizzando una firma RSA con l'algoritmo SHA-256. Il risultato di questa firma è la firma della richiesta. Esistono diverse opzioni per firma:
Puoi utilizzare il metodo
signBlob
IAM fornito da in Google Cloud.Puoi usare un linguaggio di programmazione dotato di una libreria per eseguire RSA firme.
Crea l'URL firmato utilizzando la seguente concatenazione:
HOSTNAME + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE
L'URL firmato include i seguenti componenti:
HOSTNAME: deve essere
https://storage.googleapis.com
.PATH_TO_RESOURCE: deve corrispondere al valore utilizzato in che costruisce la richiesta canonica.
CANONICAL_QUERY_STRING: deve corrispondere ai valori utilizzati nella creazione della richiesta canonica.
REQUEST_SIGNATURE: questo è l'output dell'utilizzo di un RSA nel passaggio precedente.
Ecco un URL completato di esempio:
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%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T211942Z&X-Goog -expires=3600&X-Goog-Signedheaders=host&X-Goog-Signature=2d2a6f5055eb004b8690b 9479883292ae7450cdc15f17d7f99bc49b916f9e7429106ed7e5858ae6b4ab0bbbdb1a8ccc364d ad3a0da2caebd30887a70c5b2569d089ceb8afbde3eed4dff5086f0db5483998c175980991fe89 9fbd2cd8cb813b00165e8d56e0a8aa7b3d7a12ee1baa8400611040f05b50a1a8eab5ba223fe137 5747748de950ec7a4dc50f8382a6ffd4994ac42498d7daa703d9a414d4475154d0e7edaa92d4f2 507d92c1f7e8efa7cab64df68b5df48575b9259d8d0bdb5dc752bdf07bd162d98ff2924f2e4a26 fa6b3cede73ad5333c47d146a21c2ab2d97115986a12c68ff37346d6c2ca83e56b8ec8ad956327 10b489b75c35697d781c38e
Programma di esempio Python
Puoi utilizzare le librerie client di Cloud Storage per creare URL firmati per molti linguaggi di programmazione comuni. Vedi Procedura di firma V4 con Cloud Storage.
L'esempio seguente mostra un'implementazione dell'algoritmo per gli URL di firma che non utilizza le librerie client di Cloud Storage. L'esempio utilizza il linguaggio di programmazione Python, ma puoi adattarlo al linguaggio del tuo scelta.
Passaggi successivi
- Scopri come firmare gli URL con gli strumenti di Cloud Storage come il client tramite librerie o tramite Google Cloud CLI.
- Scopri di più sugli URL firmati.
- Scopri di più sulle richieste canoniche, che sono alla base degli URL firmati.