Prima di trasferire i dati da un bucket di archiviazione di Azure, devi configurare l'accesso a questo bucket in modo che Storage Transfer Service possa recuperare i relativi oggetti.
Storage Transfer Service supporta i seguenti metodi di autenticazione di Azure:
Token di firma di accesso condiviso (SAS). I token SAS possono essere specificati direttamente durante la creazione di un job di trasferimento oppure possono essere archiviati in Secret Manager.
Le chiavi condivise di Azure possono essere archiviate in Secret Manager e il secret può essere passato durante la creazione di un job di trasferimento.
Le credenziali federate vengono passate in un oggetto
federatedIdentityConfigdurante la creazione del job di trasferimento.
Questo documento include anche informazioni sull'aggiunta degli indirizzi IP dei worker di Storage Transfer Service al firewall di archiviazione di Azure per consentire l'accesso. Per maggiori dettagli, consulta Limitazioni IP.
Aree geografiche supportate
Storage Transfer Service è in grado di trasferire dati dalle seguenti regioni di archiviazione di Microsoft Azure:- Americhe: Stati Uniti orientali, Stati Uniti orientali 2, Stati Uniti occidentali, Stati Uniti occidentali 2, Stati Uniti occidentali 3, Stati Uniti centrali, Stati Uniti centro-settentrionali, Stati Uniti centro-meridionali, Stati Uniti centro-occidentali, Canada centrale, Canada orientale, Brasile meridionale
- Asia Pacifico: Australia centrale, Australia orientale, Australia sudorientale, India centrale, India meridionale, India occidentale, Sud-est asiatico, Asia orientale, Giappone orientale, Giappone occidentale, Corea del Sud, Corea centrale
- Europa, Medio Oriente, Africa (EMEA): Francia centrale, Germania centro-occidentale, Norvegia orientale, Svezia centrale, Svizzera settentrionale, Europa settentrionale, Europa occidentale, Regno Unito meridionale, Regno Unito occidentale, Qatar centrale, Emirati Arabi Uniti settentrionali, Sudafrica settentrionale
Opzione 1: autenticazione mediante un token SAS
Segui questi passaggi per configurare l'accesso a un container di archiviazione di Microsoft Azure utilizzando un token SAS. In alternativa, puoi salvare il token SAS in Secret Manager. Per farlo, segui le istruzioni riportate in Autenticazione mediante una chiave condivisa di Azure o un token SAS in Secret Manager.
Crea o utilizza un utente di archiviazione di Microsoft Azure esistente per accedere all'account di archiviazione per il container Blob di archiviazione di Microsoft Azure.
Crea un token SAS a livello di container. Per istruzioni, consulta Concedere l'accesso limitato alle risorse di archiviazione di Azure utilizzando le firme di accesso condiviso.
I servizi consentiti devono includere Blob.
Per Tipi di risorse consentiti , seleziona sia Container sia Oggetto.
Le autorizzazioni consentite devono includere Lettura ed Elenco. Se il trasferimento è configurato per eliminare gli oggetti dall'origine, devi includere anche l'autorizzazione Elimina.
Il tempo di scadenza predefinito per i token SAS è di 8 ore. Imposta un tempo di scadenza ragionevole che ti consenta di completare correttamente il trasferimento.
Non specificare indirizzi IP nel campo Indirizzi IP consentiti. Storage Transfer Service utilizza vari indirizzi IP e non supporta la limitazione degli indirizzi IP.
I protocolli consentiti devono essere Solo HTTPS.
Una volta creato il token, prendi nota del valore del token SAS restituito. Questo valore è necessario quando configuri il trasferimento con Storage Transfer Service.
Opzione 2: autenticazione mediante una chiave condivisa di Azure o un token SAS in Secret Manager
Secret Manager è un servizio sicuro che archivia e gestisce dati sensibili come le password. Utilizza una crittografia efficace, controllo dell'accesso basato sui ruoli e la registrazione delle attività di audit per proteggere i tuoi secret.
Storage Transfer Service supporta i nomi delle risorse di Secret Manager che fanno riferimento alle credenziali di Azure archiviate in modo sicuro.
Per utilizzare una chiave condivisa di Azure, devi salvarla in Secret Manager. I token SAS possono essere salvati in Secret Manager o passati direttamente.
Quando specifichi una chiave condivisa, Storage Transfer Service la utilizza per generare una SAS del servizio con ambito limitato al container di Azure specificato nel job di trasferimento.
Abilita l'API
Abilita l'API Secret Manager.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai
creato il progetto, probabilmente hai già questa autorizzazione tramite il
ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il
ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin).
Scopri come concedere i ruoli.
Configura autorizzazioni aggiuntive
Autorizzazioni utente
L'utente che crea il secret richiede il seguente ruolo:
- Secret Manager Admin (
roles/secretmanager.admin)
Scopri come concedere un ruolo.
Autorizzazioni service agent
Il service agent di Storage Transfer Service richiede il seguente ruolo IAM:
- Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor)
Per concedere il ruolo al service agent:
console Cloud
Segui le istruzioni per recuperare l'indirizzo email del service agent.
Vai alla pagina IAM nella Google Cloud console.
Fai clic su Concedi l'accesso.
Nella casella di testo Nuove entità, inserisci l'indirizzo email del service agent.
Nel menu a discesa Seleziona un ruolo, cerca e seleziona Secret Manager Secret Accessor.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud projects add-iam-policy-binding per aggiungere il ruolo IAM al service agent.
Segui le istruzioni per recuperare l'indirizzo email del service agent.
Dalla riga di comando, inserisci il seguente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Crea un secret
Crea un secret con Secret Manager:
console Cloud
Vai alla pagina Secret Manager nella Google Cloud console.
Fai clic su Crea secret.
Inserisci un nome.
Nella casella di testo Valore secret, inserisci le credenziali in uno dei seguenti formati.
{ "sas_token" : "SAS_TOKEN_VALUE" }Oppure:
{ "access_key" : "ACCESS_KEY" }Fai clic su Crea secret.
Una volta creato il secret, prendi nota del nome completo della risorsa del secret:
Seleziona la scheda Panoramica.
Copia il valore di Nome risorsa. Utilizza il seguente formato:
projects/1234567890/secrets/SECRET_NAME
gcloud
Per creare un nuovo secret utilizzando lo strumento a riga di comando gcloud, passa le credenziali in formato JSON al comando gcloud secrets create:
printf '{
"sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-
Oppure:
printf '{
"access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Recupera il nome completo della risorsa del secret:
gcloud secrets describe SECRET_NAME
Prendi nota del valore di name nella risposta. Utilizza il seguente formato:
projects/1234567890/secrets/SECRET_NAME
Per maggiori dettagli sulla creazione e la gestione dei secret, consulta la documentazione di Secret Manager.
Passa il secret al comando di creazione del job
L'utilizzo di Secret Manager con Storage Transfer Service richiede l'utilizzo dell'API REST per creare un job di trasferimento.
Passa il nome della risorsa di Secret Manager come valore del
transferSpec.azureBlobStorageDataSource.credentialsSecret campo:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Per informazioni dettagliate sulla creazione di un trasferimento, consulta Creare trasferimenti.
Opzione 3: autenticazione mediante identità federata
Storage Transfer Service supporta la federazione delle identità per i workload di Azure con Google Cloud. Storage Transfer Service può inviare richieste ad Azure Storage tramite le applicazioni Azure registrate, eliminando la necessità di passare direttamente le credenziali a Storage Transfer Service.
Per configurare l'identità federata, segui queste istruzioni.
Configura le credenziali di Google Cloud
Per consentire a Storage Transfer Service di creare token ID OpenID Connect (OIDC):
Service agent
Se il job di trasferimento non specifica un serviceAccount (ovvero non stai
delegando le autorizzazioni del service agent a un service account gestito dall'utente),
concedi il ruolo Creatore token account di servizio
(roles/iam.serviceAccountTokenCreator) al service agent:
Recupera l'
accountEmaildel service agent:- Vai alla
googleServiceAccounts.getpagina di riferimento. - In Parametri della richiesta, inserisci il tuo ID progetto.
- Fai clic su Esegui. Vengono restituiti
accountEmailesubjectId.
- Vai alla
Concedi il ruolo Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator) al service agent su se stesso. Segui le istruzioni riportate in Gestire l'accesso ai service account.
Account di servizio gestito dall'utente
Se deleghi le autorizzazioni del service agent a un service account gestito dall'utente, le credenziali Google vengono configurate quando configuri la delega delle autorizzazioni. Non sono necessari ulteriori passaggi.
Configura le credenziali Microsoft
Innanzitutto, registra un'applicazione e aggiungi una credenziale federata:
- Accedi a https://portal.azure.com.
- Vai alla pagina Registrazioni app.
- Fai clic su Nuova registrazione.
- Inserisci un nome. Ad esempio,
azure-transfer-app. - Seleziona Solo account in questa directory dell'organizzazione.
- Fai clic su Registrati. L'applicazione viene creata. Prendi nota di
Application (client) IDeDirectory (tenant) ID. Puoi anche recuperarli in un secondo momento dalla pagina Panoramica dell'applicazione. - Fai clic su Certificati e secret e seleziona la scheda Credenziali federate.
- Fai clic su Aggiungi credenziale.
Seleziona Altro emittente come scenario e inserisci le seguenti informazioni:
- Emittente:
https://accounts.google.com Identificatore soggetto: a seconda che tu stia utilizzando il service agent predefinito o un service account gestito dall'utente:
- Il
subjectIddel service agent, che hai recuperato in Configurare le credenziali di Google Cloud. - Il
uniqueIddel account di servizio gestito dall'utente. Per informazioni dettagliate su come recuperare questo valore, consulta Recuperare l'ID univoco di un service account.
- Il
Un nome univoco per la credenziale federata.
Il pubblico deve rimanere
api://AzureADTokenExchange.
- Emittente:
Fai clic su Aggiungi.
Poi, concedi all'applicazione l'accesso al container di archiviazione di Azure:
- Vai alla pagina Account di archiviazione nel tuo account Azure.
- Seleziona l'account di archiviazione e seleziona Container dalla sezione Archiviazione dati.
- Fai clic sul bucket a cui concedere l'accesso.
- Fai clic su Controllo degli accessi (IAM) nel menu a sinistra e seleziona la scheda Ruoli.
- Fai clic sul menu overflow (
...) accanto a un ruolo e seleziona Clona. - Inserisci un nome per questo ruolo personalizzato e seleziona Inizia da zero. Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni e cerca
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read. - Fai clic sulla scheda Archiviazione Microsoft visualizzata.
- Seleziona il pulsante di opzione Azioni sui dati.
- Seleziona Lettura : leggi il blob.
- Fai clic su Aggiungi.
- Se eliminerai gli oggetti all'origine dopo il trasferimento, fai di nuovo clic su Aggiungi autorizzazioni e cerca
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete. - Fai clic sulla scheda Archiviazione Microsoft visualizzata, seleziona Azioni sui dati, e seleziona Elimina : elimina il blob.
- Fai clic su Aggiungi.
- Fai clic su Rivedi e crea, quindi su Crea. Viene visualizzata di nuovo la pagina Controllo degli accessi (IAM) del bucket.
- Fai clic su Aggiungi e seleziona Aggiungi assegnazione di ruolo.
- Nell'elenco dei ruoli, seleziona il ruolo personalizzato e fai clic su Avanti.
- Fai clic su Seleziona membri.
- Nel campo Seleziona, inserisci il nome dell'applicazione che hai registrato in precedenza. Ad esempio,
azure-transfer-app. - Fai clic sul riquadro dell'applicazione e poi su Seleziona.
- Fai clic su Rivedi e assegna.
Passa gli identificatori dell'applicazione al comando di creazione del job
Gli identificatori dell'applicazione vengono passati al comando di creazione del job utilizzando un oggetto federatedIdentityConfig. Copia i valori di Application (client) ID e Directory (tenant) ID che hai salvato durante i passaggi di configurazione delle credenziali Microsoft nei campi client_id e tenant_id.
"federatedIdentityConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Una richiesta di creazione del job di esempio è simile alla seguente:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Azure Federated Identity",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"federatedIdentityConfig": {
"client_id": "AZURE_CLIENT_ID",
"tenant_id": "AZURE_TENANT_ID"
}
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Per informazioni dettagliate sulla creazione di un trasferimento, consulta Creare trasferimenti.
Limitazioni IP
Se limiti l'accesso alle risorse di Azure utilizzando un firewall di archiviazione di Azure, devi aggiungere gli intervalli IP utilizzati dai worker di Storage Transfer Service all'elenco degli IP consentiti.
Poiché questi intervalli IP possono cambiare, pubblichiamo i valori attuali come file JSON a un indirizzo permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Quando un nuovo intervallo viene aggiunto al file, attendiamo almeno 7 giorni prima di utilizzarlo per le richieste di Storage Transfer Service.
Ti consigliamo di estrarre i dati da questo documento almeno una volta alla settimana per mantenere aggiornata la configurazione di sicurezza. Per uno script Python di esempio che recupera gli intervalli IP da un file JSON, consulta questo articolo della documentazione di Virtual Private Cloud.
Per aggiungere questi intervalli come IP consentiti, segui le istruzioni riportate nell'articolo di Microsoft Azure Configurare i firewall e le reti virtuali di Archiviazione di Azure.