Configura la connettività privata per i trasferimenti Snowflake

Questa guida mostra come configurare la connettività privata per creare trasferimenti di dati privati da Snowflake a BigQuery. I trasferimenti di dati privati consentono di trasferire i dati da un'origine a un'altra all'interno di una rete privata e di ridurre i rischi per la sicurezza durante il trasferimento dei dati su internet pubblico.

Le sezioni seguenti mostrano i passaggi necessari per configurare la connettività privata prima di poter creare un trasferimento Snowflake.

I trasferimenti privati sono supportati per le istanze Snowflake ospitate su Amazon Web Services (AWS), Microsoft Azure e Google Cloud.

Trasferimenti di dati privati da account AWS o Azure o Snowflake ospitati su Google Clouda BigQuery

Crea un link privato che colleghi il tuo account Snowflake al tuo fornitore di servizi cloud. Per saperne di più, seleziona una delle seguenti opzioni:

AWS

Configura AWS PrivateLink per connettere il tuo account Snowflake al tuo account AWS. Il tuo account AWS deve contenere il bucket di staging Amazon S3 necessario per un trasferimento Snowflake.

Azure

Configura Azure Private Link per connettere la tua rete virtuale di Azure (VNet) alla VNet di Snowflake in Azure. Il tuo account Azure deve contenere il bucket di gestione temporanea dei blob richiesto per un trasferimento Snowflake.

Google Cloud

Configura Google Cloud Private Service Connect per connettere la subnet della tua rete Virtual Private Cloud (VPC) al tuo account Snowflake ospitato su Google Cloud. Il tuo Google Cloud deve avere un bucket di staging Cloud Storage richiesto per un trasferimento Snowflake.

Configura Cross-Cloud Interconnect o la VPN ad alta disponibilità

Configura Cross-Cloud Interconnect o la VPN ad alta disponibilità da AWS o Azure. Questo passaggio non è richiesto per gli account Snowflake ospitati suGoogle Cloud.

AWS

Una VPN ad alta disponibilità ti consente di trasferire i dati attraverso un tunnel VPN criptato. Per utilizzare una VPN ad alta disponibilità per il trasferimento privato di Snowflake, consulta Creare connessioni VPN ad alta disponibilità tra Google Cloud e AWS.

Una connessione Cross-Cloud Interconnect crea un collegamento privato dedicato tra i provider cloud ed è adatta per trasferimenti di grandi quantità di dati con requisiti di bassa latenza. Per utilizzare Cross-Cloud Interconnect per il trasferimento privato di Snowflake, consulta Connettersi ad AWS.

Azure

Una VPN ad alta disponibilità ti consente di trasferire i dati attraverso un tunnel VPN criptato. Per utilizzare una VPN ad alta disponibilità per il trasferimento privato di Snowflake, consulta Creare connessioni VPN ad alta disponibilità tra Google Cloud e Azure.

Una connessione Cross-Cloud Interconnect crea un collegamento privato dedicato tra i provider cloud ed è adatta per trasferimenti di grandi quantità di dati con requisiti di bassa latenza. Per utilizzare Cross-Cloud Interconnect per il trasferimento privato di Snowflake, vedi Connettersi ad Azure.

Crea la VM proxy

Per completare una connessione privata, è necessaria una VM proxy per completare la connessione tra le origini dati senza che i dati raggiungano la rete internet pubblica. Questo passaggio è necessario per le istanze Snowflake ospitate su AWS, Azure o Google Cloud.

Per creare e configurare una VM proxy per un trasferimento privato di Snowflake:

  1. Crea una o più istanze VM di Compute Engine all'interno della rete VPC consumer.
  2. Scarica un software proxy TCP, ad esempio HAProxy o Nginx, e configura quanto segue:
    1. Specifica una porta. Ad esempio, 443.
    2. Inoltra tutto il traffico TCP in entrata all'hostname e alla porta privati dell'istanza Snowflake.
  3. Configura le VM per risolvere il nome host privato Snowflake tramite il DNS configurato nella rete VPC consumer.
  4. Configura un bilanciatore del carico passthrough interno nel seguente modo:
    1. Raggruppa le VM proxy in un gruppo di istanze gestite (MIG).
    2. Configura un bilanciatore del carico di rete passthrough interno con backend di gruppi di istanze VM.

Crea collegamento al servizio

Utilizza Private Service Connect per creare un collegamento di rete e pubblicare il servizio. Questo passaggio è necessario per le istanze Snowflake ospitate su AWS, Azure o Google Cloud.

Il collegamento del servizio deve trovarsi nella stessa regione del set di dati BigQuery.

Se il tuo servizio utilizza l'approvazione esplicita (connection-preference è impostato come ACCEPT_MANUAL), ilaccount di serviziot utilizzato nel trasferimento privato dei dati di Snowflake deve disporre delle seguenti autorizzazioni IAM:

  • compute.serviceAttachments.get
  • compute.serviceAttachments.update
  • compute.regionOperations.get

Dopo aver creato il collegamento al servizio, prendi nota del relativo URI. Ti servirà questo URI quando crei la configurazione del trasferimento Snowflake.

Crea endpoint

Crea un endpoint nel tuo account AWS o Azure. Questo passaggio non è richiesto per gli account Snowflake ospitati suGoogle Cloud.

AWS

In AWS, crea un endpoint VPC che si connette ad Amazon S3. Per saperne di più, consulta Accedere a un servizio AWS utilizzando un endpoint VPC di interfaccia.

Azure

Configura un endpoint privato nell'account di archiviazione in Azure. Per saperne di più, consulta Utilizzare endpoint privati per Azure Storage.

Storage Transfer Service richiede l'endpoint *.blob.core.windows.net. L'endpoint *.dfs.core.windows.net non è supportato.

Una volta creato, prendi nota dell'indirizzo IP dell'endpoint. Dovrai specificare l'indirizzo IP quando crei il bilanciatore del carico nella sezione seguente.

Crea un bilanciatore del carico di rete

In Google Cloud, configura un bilanciatore del carico di rete proxy interno regionale con connettività ibrida. In questo modo viene fornito un indirizzo IP interno limitato ai client in esecuzione nella stessa rete VPC del bilanciatore del carico e che instrada il traffico agli endpoint VPC S3 o agli endpoint privati di Azure Storage creati nella sezione precedente.

Devi creare il bilanciatore del carico nello stesso progetto e nella stessa rete VPC del collegamento VLAN che si interfaccia con Cloud Interconnect. Anche se l'interconnessione stessa può trovarsi in un progetto diverso all'interno della stessa organizzazione, l'allegato deve trovarsi nello stesso VPC e nella stessa regione del bilanciatore del carico.

Specifica l'indirizzo IP dell'endpoint VPC S3 o dell'endpoint privato di Azure Storage quando raggiungi i passaggi etichettati Aggiungi endpoint al NEG di connettività ibrida.

Prendi nota dell'indirizzo IP e della porta frontend del bilanciatore del carico di rete, poiché dovrai specificarli nella sezione successiva.

Convalidare la connessione

Prima di procedere, ti consigliamo di verificare che il bilanciatore del carico possa connettersi all'endpoint di archiviazione remota.

Ecco come fare:

  1. Crea una VM di Compute Engine nella stessa rete VPC del bilanciatore del carico.
  2. Dalla VM, utilizza curl per testare la connettività all'indirizzo IP e alla porta del bilanciatore del carico:

    curl -v --resolve HOSTNAME:PORT:LOAD_BALANCER_IP https://HOSTNAME
    

    Sostituisci quanto segue:

    • HOSTNAME è il nome host del tuo fornitore di spazio di archiviazione di origine.
      • Per AWS S3, utilizza l'endpoint API S3 per la regione del tuo bucket, ad esempio s3.us-west-1.amazonaws.com.
      • Per Azure Storage, utilizza l'endpoint blob del tuo account di archiviazione, ad esempio mystorageaccount.blob.core.windows.net.
    • PORT è la porta che hai configurato nella regola di forwarding del bilanciatore del carico, in genere 443.
    • LOAD_BALANCER_IP è l'indirizzo IP di frontend del bilanciatore del carico.

Una risposta dall'endpoint remoto, anche un errore, indica che la connettività è riuscita. Un timeout della connessione indica una configurazione errata della rete che devi risolvere prima di continuare.

Registra il tuo bilanciamento del carico di rete

Registra il bilanciamento del carico di rete in Service Directory. BigQuery utilizza Service Directory per risolvere l'indirizzo del bilanciatore del carico e connettersi direttamente.

Segui le istruzioni per registrare un bilanciatore del carico interno. Utilizza l'indirizzo IP e la porta del bilanciatore del carico che hai creato quando specifichi la regola di forwarding.

Una volta creato, annota il self-link del servizio. Utilizza il formato projects/{project_id}/locations/{location}/namespaces/{namespace}/services/{service}. Questo valore ti servirà quando creerai il job di trasferimento.

Prepara il bucket di gestione temporanea

Per completare un trasferimento di dati Snowflake, devi creare un bucket di staging e configurarlo per consentire l'accesso in scrittura da Snowflake.

Seleziona una delle seguenti opzioni:

AWS

Per gli account Snowflake ospitati su AWS, crea un bucket Amazon S3 per preparare i dati Snowflake prima che vengano caricati in BigQuery.

  1. Crea un bucket Amazon S3.

  2. Crea e configura un oggetto di integrazione dell'archiviazione Snowflake per consentire a Snowflake di scrivere dati nel bucket Amazon S3 come stage esterno.

Per consentire l'accesso in lettura al tuo bucket Amazon S3, devi anche:

  1. Crea un utente Amazon IAM dedicato e concedigli la policy AmazonS3ReadOnlyAccess.

  2. Crea una coppia di chiavi di accesso Amazon per l'utente IAM.

Azure

Per gli account Snowflake ospitati su Azure, crea un container Azure Blob Storage per preparare i dati Snowflake prima che vengano caricati in BigQuery.

  1. Crea un account di archiviazione Azure e un contenitore di archiviazione al suo interno.
  2. Crea e configura un oggetto di integrazione dell'archiviazione Snowflake per consentire a Snowflake di scrivere dati nel container di archiviazione Azure come area di gestione temporanea esterna. Puoi saltare i passaggi per creare un palco esterno, in quanto non è obbligatorio.

Per consentire l'accesso in lettura al tuo contenitore Azure, genera un token SAS.

Google Cloud

Per gli account Snowflake ospitati da Google Cloud, crea un bucket Cloud Storage per preparare i dati Snowflake prima che vengano caricati in BigQuery.

  1. Crea un bucket Cloud Storage.
  2. Crea e configura un oggetto di integrazione dell'archiviazione Snowflake per consentire a Snowflake di scrivere dati nel bucket Cloud Storage come area di staging esterna.
  3. Per consentire l'accesso al bucket di staging, concedi all'agente di servizio DTS il ruolo roles/storage.objectViewer con il seguente comando:

    gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer

Crea una configurazione di trasferimento Snowflake privata

Crea il trasferimento Snowflake. Quando configuri la configurazione del trasferimento, esegui le seguenti operazioni:

Console

bq

  • Per il parametro use_private_network, imposta TRUE.
  • Per il parametro service_attachment, specifica l'URI del collegamento di servizio. Per informazioni su come trovare l'URI dell'allegato di servizio, consulta Visualizzare i dettagli di un servizio pubblicato. L'URI del collegamento al servizio è nel formato projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT.
  • Per il parametro private_network_service, fornisci l'autocollegamento del servizio NLB. Utilizza il formato projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME.
  • cloud_provider: inserisci AWS, AZURE o GCP a seconda del provider di servizi cloud che ospita il tuo account Snowflake.
  • staging_s3_uri: inserisci l'URI del bucket S3 da utilizzare come bucket di staging. Obbligatorio solo quando cloud_provider è AWS.
  • aws_access_key_id: inserisci la coppia di chiavi di accesso. Obbligatorio solo quando cloud_provider è AWS.
  • aws_secret_access_key: inserisci la coppia di chiavi di accesso. Obbligatorio solo quando cloud_provider è AWS.
  • azure_storage_account: inserisci il nome dell'account di archiviazione da utilizzare come bucket di staging. Obbligatorio solo quando cloud_provider è AZURE.
  • staging_azure_container: inserisci il container in Azure Blob Storage da utilizzare come bucket di staging. Obbligatorio solo quando cloud_provider è AZURE.
  • azure_sas_token: inserisci il token SAS. Obbligatorio solo quando cloud_provider è AZURE.
  • staging_gcs_uri : inserisci l'URI di Cloud Storage da utilizzare come bucket di staging. Obbligatorio solo quando cloud_provider è GCP.