Configurare l'accesso a un'origine: Archiviazione di Microsoft Azure

Prima di trasferire i dati da un bucket Azure Storage, devi configurare l'accesso al bucket in modo che Storage Transfer Service possa recuperare i relativi oggetti.

Storage Transfer Service supporta i seguenti metodi di autenticazione Azure:

  • Token firma di accesso condiviso (SAS). I token SAS possono essere specificati direttamente durante la creazione di un job di trasferimento o memorizzati in Secret Manager.

  • Chiavi condivise di Azure può essere archiviato in Secret Manager e il secret passato durante la creazione di un job di trasferimento.

  • Credenziali federate vengono passate in un oggetto federatedIdentityConfig durante il job di trasferimento per la creazione di contenuti.

Questo documento include anche informazioni sull'aggiunta degli indirizzi IP dei worker di Storage Transfer Service al firewall di Azure Storage per consentire l'accesso. Consulta Restrizioni IP per maggiori dettagli.

Aree geografiche supportate

Storage Transfer Service è in grado di trasferire dati dalle seguenti regioni di Microsoft Azure Storage:
  • 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-nord, Stati Uniti centro-meridionali, Stati Uniti centro-occidentali Canada Central, Canada East, Brasile meridionale
  • Asia-Pacifico: Australia centro-orientale, Australia orientale, Australia sud-orientale, India centro-orientale, India meridionale, India occidentale, Asia sud-orientale, Asia orientale, Giappone orientale, Giappone occidentale, Corea del Sud, Corea centrale
  • Europa, Medio Oriente, Africa (EMEA): Francia centrale, Germania centrale occidentale, Norvegia orientale, Svezia centrale, Svizzera settentrionale, Nord Europa, Europa occidentale, Regno Unito sud, Regno Unito occidentale, Qatar centrale, Emirati Arabi Uniti del nord, Sudafrica Nord

Opzione 1: esegui l'autenticazione utilizzando un token SAS

Segui questi passaggi per configurare l'accesso a un contenitore di archiviazione Microsoft Azure utilizzando un token SAS. In alternativa, puoi salvare il token SAS in Secret Manager; per farlo, segui le istruzioni in Esegui l'autenticazione utilizzando una chiave condivisa di Azure o un token SAS in Secret Manager.

  1. Crea o utilizza un utente esistente di Archiviazione Microsoft Azure per accedere allo spazio di archiviazione per il container BLOB di archiviazione di Microsoft Azure.

  2. Crea un token SAS a livello di contenitore. Consulta Concedi un accesso limitato alle risorse di Archiviazione di Azure utilizzando le firme di accesso condiviso per istruzioni.

    1. I servizi consentiti devono includere BLOB.

    2. Per Tipi di risorse consentiti, seleziona sia Contenitore sia Oggetto.

    3. Le Autorizzazioni consentite devono includere Lettura ed Elenco. Se il trasferimento sia configurato per eliminare oggetti dall'origine, devi inoltre includi l'autorizzazione di eliminazione.

    4. La scadenza predefinita per i token SAS è di 8 ore. Imposta un'ora di scadenza ragionevole che ti consenta di completare correttamente il trasferimento.

    5. Non specificare indirizzi IP nel campo Indirizzi IP consentiti. Storage Transfer Service utilizza vari indirizzi IP e non supporta indirizzi IP limitazione degli indirizzi.

    6. I protocolli consentiti devono essere solo HTTPS.

  3. Una volta creato il token, prendi nota del valore restituito del token SAS. Questo valore è necessario quando configuri il trasferimento con Storage Transfer Service.

Opzione 2: esegui l'autenticazione utilizzando 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 crittografia avanzata, controllo dell'accesso basato sui ruoli e registrazione delle attività di audit per proteggere i tuoi secret.

Storage Transfer Service supporta i nomi delle risorse Secret Manager che fanno riferimento alle tue credenziali di Azure archiviate in modo sicuro.

Per usare una chiave condivisa di Azure, devi salvarla tramite Secret Manager. I token SAS possono essere salvati in Secret Manager emessa direttamente.

Se specifichi una chiave condivisa, Storage Transfer Service la utilizza per generare servizio SAS limitato nell'ambito del container Azure specificato nel trasferimento lavoro.

Abilita l'API

Enable the Secret Manager API.

Enable the API

Configurare autorizzazioni aggiuntive

Autorizzazioni utente

L'utente che crea il secret deve disporre del seguente ruolo:

  • Amministratore di Secret Manager (roles/secretmanager.admin)

Scopri come concedere un ruolo.

Autorizzazioni agente di servizio

L'agente di servizio Storage Transfer Service richiede il seguente ruolo IAM:

  • Secret Manager Secret Accessor (roles/secretmanager.secretAccessor)

Per concedere il ruolo all'agente di servizio:

console Cloud

  1. Segui le istruzioni per recuperare l'email dell'agente di servizio.

  2. Vai alla pagina IAM nella console Google Cloud.

    Vai a IAM

  3. Fai clic su Concedi accesso.

  4. Nella casella di testo Nuove entità, inserisci l'email dell'agente di servizio.

  5. Nel menu a discesa Seleziona un ruolo, cerca e seleziona Secret Manager Funzione di accesso ai secret.

  6. Fai clic su Salva.

gcloud

Utilizza il comando gcloud projects add-iam-policy-binding per aggiungere il ruolo IAM di servizio all'agente di servizio.

  1. Segui le istruzioni per recuperare l'email dell'agente di servizio.

  2. Nella 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

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Fai clic su Crea secret.

  3. Inserisci un nome.

  4. Nella casella di testo Valore secret, inserisci le tue credenziali in uno dei seguenti formati.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    Oppure:

    {
      "access_key" : "ACCESS_KEY"
    }
    
  5. Fai clic su Crea secret.

  6. Una volta creato il secret, prendi nota del nome completo della risorsa:

    1. Seleziona la scheda Panoramica.

    2. 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=-

In alternativa:

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 ulteriori dettagli sulla creazione e sulla gestione dei secret, consulta la documentazione di Secret Manager.

Passa il segreto al comando di creazione del job

Utilizzo di Secret Manager con Storage Transfer Service richiede l'uso dell'API REST per creare un job di trasferimento.

Passa il nome della risorsa Secret Manager come valore del campo transferSpec.azureBlobStorageDataSource.credentialsSecret:

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: esegui l'autenticazione utilizzando l'identità federata

Storage Transfer Service supporta la federazione delle identità per i carichi di lavoro di Azure in Google Cloud. Storage Transfer Service può inviare richieste ad Archiviazione di Azure tramite applicazioni Azure registrate, eliminando la necessità passare le credenziali direttamente a Storage Transfer Service.

Per configurare l'identità federata, segui queste istruzioni.

Configura le credenziali di Google Cloud

Devi aggiungere il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio Storage Transfer Service per consentire la creazione di token ID OpenID Connect (OIDC) per l'account.

  1. Recupera i accountEmail e subjectId dei segmenti di pubblico di servizio creato automaticamente quando inizi a utilizzare Storage Transfer Service. Per recuperare questi valori:

    1. Vai alla pagina di riferimento googleServiceAccounts.get.

      Si apre un riquadro interattivo denominato Prova questo metodo.

    2. Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere il progetto che stai utilizzando per gestire Storage Transfer Service.

    3. Fai clic su Execute (Esegui). accountEmail e subjectId sono inclusi in la risposta. Salva questi valori.

  2. Concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio del servizio Storage Transfer. Segui le istruzioni riportate in Gestire l'accesso agli account di servizio.

Configura le credenziali Microsoft

Innanzitutto, registra un'applicazione e aggiungi una credenziale federata:

  1. Accedi all'indirizzo https://portal.azure.com.
  2. Vai alla pagina Registrazioni app.
  3. Fai clic su Nuova registrazione.
  4. Inserisci un nome. Ad esempio, azure-transfer-app.
  5. Seleziona Solo account in questa directory dell'organizzazione.
  6. Fai clic su Registrati. L'applicazione viene creata. Tieni presente Application (client) ID e Directory (tenant) ID. Puoi anche recuperarli in un secondo momento dalla pagina Panoramica dell'applicazione.
  7. Fai clic su Certificati e secret e seleziona la scheda Credenziali federate.
  8. Fai clic su Aggiungi credenziale.
  9. Seleziona Altro emittente come scenario e inserisci le seguenti informazioni:
    • Emittente: https://accounts.google.com
    • Identificatore soggetto: il subjectId del tuo agente di servizio, che hai recuperato in Configurare le credenziali di Google Cloud.
    • Un nome univoco per la credenziale federata.
    • Il segmento di pubblico deve rimanere api://AzureADTokenExchange.
  10. Fai clic su Aggiungi.

Successivamente, concedi all'applicazione l'accesso al tuo container Archiviazione di Azure:

  1. Vai alla pagina Account di archiviazione nel tuo account Azure.
  2. Seleziona il tuo account di archiviazione e scegli Contenitori dal Archiviazione dei dati.
  3. Fai clic sul bucket a cui concedere l'accesso.
  4. Fai clic su Controllo degli accessi (IAM) nel menu a sinistra e seleziona la scheda Ruoli.
  5. Fai clic sul menu extra (...) accanto a un ruolo e seleziona Clona.
  6. Inserisci un nome per il ruolo personalizzato e seleziona Crea da zero. Clic Avanti.
  7. Fai clic su Aggiungi autorizzazioni e cerca Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Fai clic sulla scheda Microsoft Storage visualizzata.
  9. Seleziona il pulsante di opzione Azioni sui dati.
  10. Seleziona Lettura: leggi blob.
  11. Fai clic su Aggiungi.
  12. Se eliminerai gli oggetti nell'origine dopo il trasferimento, fai clic su Aggiungi di nuovo le autorizzazioni e cerca Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Fai clic sulla scheda Archiviazione Microsoft visualizzata, seleziona Azioni sui dati e Elimina: elimina blob.
  14. Fai clic su Aggiungi.
  15. Fai clic su Rivedi e crea, quindi su Crea. Verrà visualizzata nuovamente la pagina Controllo degli accessi (IAM) del bucket.
  16. Fai clic su Aggiungi e seleziona Aggiungi assegnazione del ruolo.
  17. Dall'elenco dei ruoli, seleziona il ruolo personalizzato e fai clic su Avanti.
  18. Fai clic su Seleziona membri.
  19. Nel campo Seleziona, inserisci il nome dell'applicazione che hai registrato in precedenza. Ad esempio, azure-transfer-app.
  20. Fai clic sul riquadro dell'applicazione e poi su Seleziona.
  21. Fai clic su Rivedi e assegna.

Passa gli identificatori delle applicazioni al comando di creazione del job

Gli identificatori della tua applicazione vengono passati al comando di creazione del job utilizzando un federatedIdentityConfig oggetto. Copia l'ID applicazione (client) e il ID directory (tenant) salvato durante la Configura le credenziali Microsoft in i campi client_id e tenant_id.

"federatedIdentifyConfig": {
  "client_id": "efghe9d8-4810-800b-8f964ed4057f",
  "tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}

Ecco un esempio di richiesta di creazione del job:

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",
      "federatedIdentifyConfig": {
        "client_id": "AZURE_CLIENT_ID",
        "tenant_id": "AZURE_TENANT_ID"
      }
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

Consulta Creare trasferimenti per la versione completa dettagli sulla creazione di un trasferimento.

Limitazioni IP

Se limiti l'accesso alle tue risorse Azure usando un firewall di Archiviazione di Azure, devi aggiungere gli intervalli IP utilizzati dai worker di Storage Transfer Service all'elenco IP consentiti.

Poiché questi intervalli IP possono cambiare, pubblichiamo i valori attuali in formato JSON file a un indirizzo permanente:

https://www.gstatic.com/storage-transfer-service/ipranges.json

Quando viene aggiunto un nuovo intervallo al file, aspettiamo almeno 7 giorni prima di utilizzarlo per le richieste di Storage Transfer Service.

Ti consigliamo di estrarre i dati da questo documento almeno ogni settimana per conservare la configurazione di sicurezza. Per uno script Python di esempio che recupera gli intervalli di indirizzi IP da un file JSON; consulta questo articolo del documentazione.

Per aggiungere questi intervalli come IP consentiti, segui le istruzioni riportate nell'articolo Configurare firewall e reti virtuali di Azure Storage di Microsoft Azure.