La firma V4 è un processo che puoi utilizzare per generare firme per l'autenticazione nelle richieste dell'API XML di Cloud Storage. In questa pagina viene descritto come utilizzare Librerie client di Google Cloud CLI e Cloud Storage per creare utilizzando le credenziali dell'account di servizio. Gli URL firmati offrono un periodo di tempo limitato accesso in lettura o scrittura a una specifica risorsa di Cloud Storage. Se vuoi creare un tuo programma per la creazione di URL firmati, leggi Firma V4 con il tuo programma.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per la creazione di un URL firmato da scaricare e caricare oggetti, chiedi all'amministratore di concedere i seguenti ruoli:
Utente oggetti Storage (
roles/storage.objectUser
): questo ruolo è obbligatorio per scaricare, caricare e sovrascrivere oggetti. Questo ruolo deve essere concesso all'account di servizio la cui chiave verrà utilizzata per firmare l'URL.Se vuoi solo scaricare oggetti, chiedi all'amministratore di concedere account di servizio il visualizzatore oggetti Storage (
roles/storage.objectViewer
) anziché il ruolo Utente oggetti Storage.Se vuoi solo caricare oggetti (senza sovrascrivere), chiedi per concedere all'account di servizio il Creatore oggetti Storage (
roles/storage.objectCreator
) anziché Utente oggetti Storage ruolo.
Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator
): questo è richiesto per generare credenziali di breve durata per un account di servizio quando un file di chiave privata non viene fornito localmente. Questo ruolo deve essere concesso all'entità che creerà l'URL firmato.Se utilizzi le credenziali utente per l'autenticazione, questa deve hanno questo ruolo e devi modificare i comandi per impersonare il servizio utilizzato per firmare l'URL.
Se usi un account di servizio collegato a un'istanza Compute autenticazione, l'account di servizio deve avere questo ruolo per e devi modificare i comandi in modo da simulare l'identità dell'account di servizio utilizzato per firmare l'URL.
Se utilizzi un file di chiave privata per l'autenticazione, questo ruolo non necessaria.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per un servizio. per scaricare e caricare oggetti usando URL firmati. Per vedere l'esatto autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
storage.objects.get
storage.objects.create
(non obbligatorio se vuoi solo per scaricare oggetti)storage.objects.delete
(non obbligatorio se non ti serve sovrascrivere gli oggetti durante il caricamento)iam.serviceAccounts.signBlob
(non obbligatorio se prevedi di una chiave dell'account di servizio in locale per creare la firma, richiede di chiamare il metodosignBlob
)
Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti. Per vedere quali ruoli sono associati a quali autorizzazioni, Consulta i ruoli IAM per Cloud Storage.
Per istruzioni sulla concessione dei ruoli nei progetti, consulta Gestire l'accesso ai progetti.
Crea un URL firmato per scaricare un oggetto
Per creare un URL firmato che possa recuperare un oggetto da un bucket, completa la seguenti passaggi:
Riga di comando
Genera una nuova chiave privata o utilizza una chiave privata esistente per un l'account di servizio. La chiave deve essere in formato JSON.
Per ulteriori informazioni su chiavi private e account di servizio, consulta Account di servizio.
Utilizza il comando
gcloud storage sign-url
. Ad esempio, questo comando crea un URL firmato che consente agli utenti di scaricare un oggetto per 10 minuti:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --private-key-file=KEY_FILE --duration=10m
Dove:
BUCKET_NAME
è il nome del bucket in cui si trova l'oggetto. Ad esempio,example-bucket
.OBJECT_NAME
è il nome dell'oggetto da scaricare l'app. Ad esempio,cat.jpeg
.KEY_FILE
è il percorso del file contenente la chiave privata del tuo account di servizio. Ad esempio:Desktop/private-key.json
.
In caso di esito positivo, la risposta dovrebbe avere il seguente aspetto:
--- expiration: '2023-07-14 23:19:35' http_verb: GET resource: gs://example-bucket/cat.jpeg signed_url: https://storage.googleapis.com/example-bucket/cat.jpeg? x-goog-signature=11ae9c61ca84dd0bec319f7d52a38029e5873caa2eeced0568 ef96076258cfc1a925a9683cc907d210036b61af9e06a13bf4a15b15fab3916669b e2f4c9f66ea6be822bec5858af519a6da705415b5768721197be213103fa09b8a18 8a143be77a24351517ff208a2c62cfebb78040daf1f953907080bd98f9462739d11 1355b1d9bcf54705b862f37392c031fde0d52add1a4d3bbb98a22e8b7023f6a1623 2e0a2dd56e524d410624d28663e557fafaf4ba0a04290a1066f894713857b429258 d14f056066c7622baf114c124e645688e19b4df3c4a7925f580693c93fa9c1dae7f dff0edff7259c72f3f0eadc5a9f9f556c83c9c8dc02ee3af8d20ab634bad&x-goog -algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40example-pro ject.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog4_requ est&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-signedhe aders=host
Questo URL può essere utilizzato da qualsiasi persona per accedere ai relativi risorsa (in questo caso
cat.jpeg
) per il periodo di tempo specificato (in questo caso, 10 minuti).
Librerie client
C++
Per ulteriori informazioni, consulta API Cloud Storage C++ documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
C#
Per ulteriori informazioni, consulta API Cloud Storage C# documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per ulteriori informazioni, consulta API Cloud Storage Java documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per ulteriori informazioni, consulta API Cloud Storage Node.js documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per ulteriori informazioni, consulta API Cloud Storage PHP documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per ulteriori informazioni, consulta API Cloud Storage Python documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per ulteriori informazioni, consulta API Cloud Storage Ruby documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Crea un URL firmato per caricare un oggetto
Per creare un URL firmato che possa caricare un oggetto in un bucket, completa la seguenti passaggi:
Riga di comando
Genera una nuova chiave privata o utilizza una chiave privata esistente per un l'account di servizio. La chiave può essere in formato JSON o PKCS12.
Per ulteriori informazioni su chiavi private e account di servizio, consulta Account di servizio.
Utilizza il comando
gcloud storage sign-url
. Ad esempio, questo comando crea un URL firmato che consente agli utenti di caricare un file per un'ora:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --private-key-file=KEY_FILE --http-verb=PUT --duration=1h --headers=Content-Type=CONTENT_TYPE
BUCKET_NAME
è il nome del bucket in cui viene caricato l'oggetto. Ad esempio:example-bucket
.OBJECT_NAME
è il nome da assegnare alla caricato. Ad esempio,cat.png
.KEY_FILE
è il percorso del file contenente la chiave privata del tuo account di servizio. Ad esempio:Desktop/private-key.json
.CONTENT_TYPE
è l'ID dell'oggetto caricato tipo di contenuti. Ad esempio,image/png
.
In caso di esito positivo, la risposta dovrebbe avere il seguente aspetto:
--- expiration: '2023-07-14 23:35:47' http_verb: PUT resource: gs://example-bucket/cat.png signed_url: https://storage.googleapis.com/example-bucket/cat.png? x-goog-signature=2f670a686102963e0574f3c1a3b4d29ee4aa406c1528d42d2 30195d17fef73834b254314de7d7990afd48538a84b66f20010e7ecd90a900490e 6119b7e56a912f71c8d64285c40e86f31b8fec51cf8c7a61ded81de3cedac9c1ca b92474b7371740fdac20b2d8d092b15396f79443bbde954a4174ed11aef6c2cf5f a4d72a84ff60fd6003ed0a505b0e40b6207ddbaec2a15778f715c3ec7537a1b14f b6661b2abaa5736f1670a412ca7e2555c830591f0595c01ff95af7f2206abe2e27 41948c16d4bd4c7cbb25f41277ece59236c06e00ca6c63ae2eb3efc22c216bb24c e1b8b3801d07fd3a7ed3f2df3db6e59c6fc3cc76a002335dd936efd0237cf584e3 6&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40ex ample-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2F goog4_request&x-goog-date=20230714T223547Z&x-goog-expires=3600&x-g oog-signedheaders=Content-Type%3Bhost
Questo URL può essere utilizzato da qualsiasi persona per caricare una risorsa (in questo caso
cat.png
) all'istanza Cloud Storage specificata per il periodo di tempo specificato (in questo caso, 1 ora).
Librerie client
C++
Per ulteriori informazioni, consulta API Cloud Storage C++ documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
C#
Per ulteriori informazioni, consulta API Cloud Storage C# documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per ulteriori informazioni, consulta API Cloud Storage Java documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per ulteriori informazioni, consulta API Cloud Storage Node.js documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per ulteriori informazioni, consulta API Cloud Storage PHP documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per ulteriori informazioni, consulta API Cloud Storage Python documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per ulteriori informazioni, consulta API Cloud Storage Ruby documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Passaggi successivi
- Scopri come firmare gli URL con il tuo programma.
- Scopri di più sugli URL firmati.
- Scopri di più sul caricamento di un oggetto con l'API XML.
- Scopri di più sul caricamento di oggetti.