Configurare l'accesso a un'origine: archiviazione Microsoft Azure

Prima di trasferire i dati da un bucket Azure Storage, 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 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 viene passato durante la creazione di un job di trasferimento.

  • Le credenziali federate vengono trasmesse in un oggetto federatedIdentityConfig durante la creazione del job di trasferimento.

Questo documento include anche informazioni sull'aggiunta degli indirizzi IP worker di Storage Transfer Service al firewall di Azure Storage per consentire l'accesso. Per maggiori dettagli, consulta la sezione Limitazioni IP.

Aree geografiche supportate

Storage Transfer Service è in grado di trasferire dati dalle seguenti regioni di Microsoft Azure Storage:
  • Americhe:East US, East US 2, West US, West US 2, West US 3, Central US, North Central US, South Central US, West Central US, Canada Central, Canada East, Brazil South
  • Asia-Pacifico: Australia centrale, Australia orientale, Australia sud-orientale, India centrale, India meridionale, India occidentale, Asia sudorientale, Asia orientale, Giappone orientale, Giappone occidentale, Corea del Sud, Corea centrale
  • Europa, Medio Oriente e 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 contenitore di archiviazione Microsoft Azure utilizzando un token SAS. In alternativa, puoi salvare il token SAS in Secret Manager. Per farlo, segui le istruzioni riportate in Autenticarsi utilizzando una chiave condivisa o un token SAS di Azure in Secret Manager.

  1. Crea o utilizza un utente di archiviazione Microsoft Azure esistente per accedere all'account di archiviazione per il contenitore di blob di archiviazione Microsoft Azure.

  2. Crea un token SAS a livello di contenitore. Per istruzioni, vedi Concedere l'accesso limitato alle risorse di Azure Storage utilizzando le firme di accesso condiviso.

    1. I Servizi consentiti devono includere Blob.

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

    3. Le autorizzazioni consentite devono includere Lettura ed Elenco. Se il trasferimento è configurato per eliminare gli oggetti dall'origine, devi includere anche l'autorizzazione Elimina.

    4. Il tempo di scadenza predefinito per i token SAS è di 8 ore. Imposta un tempo di scadenza ragionevole che ti consenta di completare il trasferimento.

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

    6. I protocolli consentiti devono essere solo HTTPS.

  3. Una volta creato il token, prendi nota del valore del token SAS restituito. Questo valore ti servirà per configurare 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 avanzata, ilcontrollo dell'accessoo basato sui ruoli e la 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 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 trasmessi direttamente.

Quando specifichi una chiave condivisa, Storage Transfer Service la utilizza per generare una SAS del servizio con ambito limitato al container Azure specificato nel job di trasferimento.

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:

  • Secret Manager Admin (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 Secret Accessor.

  6. Fai clic su Salva.

gcloud

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

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

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

  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, annota il nome completo della risorsa:

    1. Seleziona la scheda Panoramica.

    2. Copia il valore di Nome risorsa. Utilizza il formato seguente:

      projects/1234567890/secrets/SECRET_NAME

gcloud

Per creare un nuovo secret utilizzando lo strumento a riga di comando gcloud, trasmetti 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 formato seguente:

projects/1234567890/secrets/SECRET_NAME

Per maggiori dettagli sulla creazione e gestione dei secret, consulta la documentazione di Secret Manager.

Trasferire il segreto 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.

Trasmetti 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 tutti i dettagli sulla creazione di un trasferimento, vedi Creare trasferimenti.

Opzione 3: autenticazione tramite 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 applicazioni Azure registrate, eliminando la necessità di trasferire le credenziali direttamente a Storage Transfer Service.

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

Configurare le credenziali di Google Cloud

Devi aggiungere il ruolo Creatore token service account (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 accountEmail e subjectId dell'agente di servizio gestito da Google 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 intitolato Prova questo metodo.

    2. Nel riquadro, in Parametri della richiesta, inserisci l'ID progetto. Il progetto che specifichi qui deve essere quello che utilizzi per gestire Storage Transfer Service.

    3. Fai clic su Esegui. accountEmail e subjectId sono inclusi nella risposta. Salva questi valori.

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

Configurare le credenziali Microsoft

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

  1. Accedi a 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 Register (Registrati). L'applicazione viene creata. Prendi nota di 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 service agent, che hai recuperato in Configura Google Cloud le credenziali.
    • Un nome univoco per le credenziali federate.
    • Il segmento di pubblico deve rimanere api://AzureADTokenExchange.
  10. Fai clic su Aggiungi.

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

  1. Vai alla pagina Account di archiviazione nel tuo account Azure.
  2. Seleziona il tuo account di archiviazione e seleziona Contenitori dalla sezione Archiviazione dati.
  3. Fai clic sul bucket a cui concedere l'accesso.
  4. Fai clic su Controllo accesso (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 questo ruolo personalizzato e seleziona Inizia da zero. Fai clic su 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 Read (Lettura) : Read Blob (Lettura blob).
  11. Fai clic su Aggiungi.
  12. Se eliminerai gli oggetti dall'origine dopo il trasferimento, fai di nuovo clic su Aggiungi autorizzazioni e cerca Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Fai clic sulla scheda Microsoft Storage visualizzata, seleziona Azioni sui dati e seleziona Elimina : elimina blob.
  14. Fai clic su Aggiungi.
  15. Fai clic su Rivedi e crea, poi su Crea. Tornerai alla pagina Controllo degli accessi (IAM) del bucket.
  16. Fai clic su Aggiungi e seleziona Aggiungi assegnazione ruolo.
  17. Dall'elenco dei ruoli, seleziona il tuo 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.

Trasferisci 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 l'ID applicazione (client) e l'ID directory (tenant) 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 di un job di esempio ha il seguente aspetto:

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 tutti i dettagli sulla creazione di un trasferimento, vedi Creare trasferimenti.

Limitazioni IP

Se limiti l'accesso alle tue risorse Azure utilizzando un firewall Azure Storage, devi aggiungere gli intervalli IP utilizzati dai worker diStorage Transfer Servicee 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 viene aggiunto un nuovo intervallo al file, attendiamo almeno 7 giorni prima di utilizzare questo intervallo 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 della sicurezza. Per un esempio di script Python che recupera 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 Azure Storage.