Configurer la connectivité privée pour les transferts Snowflake

Ce guide vous explique comment configurer la connectivité privée pour créer des transferts de données privés de Snowflake vers BigQuery. Les transferts de données privés vous permettent de transférer des données d'une source à une autre au sein d'un réseau privé. Ils vous permettent également de réduire les risques de sécurité lorsque vous transférez des données sur l'Internet public.

Les sections suivantes décrivent les étapes requises pour configurer la connectivité privée avant de pouvoir créer un transfert Snowflake.

Les transferts privés sont compatibles avec les instances Snowflake hébergées sur Amazon Web Services (AWS), Microsoft Azure et Google Cloud.

Transferts de données privées depuis des comptes AWS, Azure ou Google Cloudhébergés sur Snowflake vers BigQuery

Créez un lien privé qui connecte votre compte Snowflake à votre fournisseur de services cloud. Pour en savoir plus, sélectionnez l'une des options suivantes :

AWS

Configurez AWS PrivateLink pour associer votre compte Snowflake à votre compte AWS. Votre compte AWS doit contenir le bucket de préparation Amazon S3 requis pour un transfert Snowflake.

Azure

Configurez Azure Private Link pour connecter votre réseau virtuel Azure (VNet) au réseau virtuel Snowflake dans Azure. Votre compte Azure doit contenir le bucket de staging Blob requis pour un transfert Snowflake.

Google Cloud

Configurez Google Cloud Private Service Connect pour connecter le sous-réseau de votre réseau de cloud privé virtuel (VPC) à votre compte Snowflake hébergé sur Google Cloud. VotreGoogle Cloud doit disposer d'un bucket Cloud Storage intermédiaire requis pour un transfert Snowflake.

Configurer interconnexion cross-cloud ou un VPN haute disponibilité

Configurez interconnexion cross-cloud ou un VPN haute disponibilité depuis AWS ou Azure. Cette étape n'est pas requise pour les comptes Snowflake hébergés surGoogle Cloud.

AWS

Un VPN haute disponibilité vous permet de transférer des données via un tunnel VPN chiffré. Pour utiliser un VPN haute disponibilité pour votre transfert Snowflake privé, consultez Créer des connexions VPN haute disponibilité entre Google Cloud et AWS.

Une connexion Cross-Cloud Interconnect crée une liaison privée dédiée entre les fournisseurs de services cloud. Elle est adaptée aux transferts de données volumineux nécessitant une faible latence. Pour utiliser interconnexion cross-cloud pour votre transfert Snowflake privé, consultez Se connecter à AWS.

Azure

Un VPN haute disponibilité vous permet de transférer des données via un tunnel VPN chiffré. Pour utiliser un VPN haute disponibilité pour votre transfert Snowflake privé, consultez Créer des connexions VPN haute disponibilité entre Google Cloud et Azure.

Une connexion Cross-Cloud Interconnect crée une liaison privée dédiée entre les fournisseurs de services cloud. Elle est adaptée aux transferts de données volumineux nécessitant une faible latence. Pour utiliser interconnexion cross-cloud pour votre transfert Snowflake privé, consultez Se connecter à Azure.

Créer une VM proxy

Pour établir une connexion privée, une VM proxy est nécessaire pour établir la connexion entre vos sources de données sans que vos données n'atteignent l'Internet public. Cette étape est requise pour les instances Snowflake hébergées sur AWS, Azure ou Google Cloud.

Pour créer et configurer une VM proxy pour un transfert Snowflake privé, procédez comme suit :

  1. Créez une ou plusieurs instances de VM Compute Engine dans le réseau VPC consommateur.
  2. Téléchargez un logiciel de proxy TCP, tel que HAProxy ou Nginx, et configurez les éléments suivants :
    1. Spécifiez un port. Par exemple, 443.
    2. Transférez tout le trafic TCP entrant vers le nom d'hôte et le port privés de l'instance Snowflake.
  3. Configurez les VM pour qu'elles résolvent le nom d'hôte privé Snowflake via le DNS configuré dans le réseau VPC consommateur.
  4. Configurez un équilibreur de charge passthrough interne en procédant comme suit :
    1. Regroupez les VM de proxy dans un groupe d'instances géré (MIG).
    2. Configurer un équilibreur de charge réseau passthrough interne avec des backends de groupe d'instances de VM

Créer un rattachement de service

Utilisez Private Service Connect pour créer un rattachement réseau et publier le service. Cette étape est requise pour les instances Snowflake hébergées sur AWS, Azure ou Google Cloud.

Votre rattachement de service doit se trouver dans la même région que votre ensemble de données BigQuery.

Si votre service utilise l'approbation explicite (connection-preference est défini sur ACCEPT_MANUAL), le compte de service utilisé dans votre transfert de données privées Snowflake doit disposer des autorisations IAM suivantes :

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

Une fois le rattachement de service créé, notez son URI. Vous aurez besoin de cet URI lorsque vous créerez votre configuration de transfert Snowflake.

Créer un point de terminaison

Créez un point de terminaison dans votre compte AWS ou Azure. Cette étape n'est pas requise pour les comptes Snowflake hébergés surGoogle Cloud.

AWS

Dans AWS, créez un point de terminaison VPC qui se connecte à Amazon S3. Pour en savoir plus, consultez Accéder à un service AWS à l'aide d'un point de terminaison VPC d'interface.

Azure

Configurez un point de terminaison privé sur le compte de stockage dans Azure. Pour en savoir plus, consultez Utiliser des points de terminaison privés pour Azure Storage.

Le service de transfert de stockage nécessite le point de terminaison *.blob.core.windows.net. Le point de terminaison *.dfs.core.windows.net n'est pas accepté.

Une fois le point de terminaison créé, notez son adresse IP. Vous devrez spécifier l'adresse IP lorsque vous créerez votre équilibreur de charge dans la section suivante.

Créer un équilibreur de charge réseau

Dans Google Cloud, configurez un équilibreur de charge réseau proxy interne régional avec une connectivité hybride. Cela fournit une adresse IP interne réservée aux clients exécutés dans le même réseau VPC que l'équilibreur de charge, et qui achemine le trafic vers les points de terminaison VPC S3 ou les points de terminaison privés Azure Storage que vous avez créés dans la section précédente.

Vous devez créer l'équilibreur de charge dans le même projet et le même réseau VPC que le rattachement de VLAN qui sert d'interface avec Cloud Interconnect. Bien que l'interconnexion elle-même puisse se trouver dans un autre projet de la même organisation, le rattachement doit se trouver dans le même VPC et la même région que l'équilibreur de charge.

Spécifiez l'adresse IP du point de terminaison VPC S3 ou du point de terminaison privé Azure Storage lorsque vous atteignez les étapes intitulées Ajouter des points de terminaison au NEG de connectivité hybride.

Notez l'adresse IP et le port de l'interface de l'équilibreur de charge réseau, car vous devrez les spécifier dans la section suivante.

Valider la connexion

Avant de continuer, nous vous recommandons de vérifier que l'équilibreur de charge peut se connecter au point de terminaison de stockage à distance.

Pour ce faire :

  1. Créez une VM Compute Engine dans le même réseau VPC que votre équilibreur de charge.
  2. À partir de la VM, utilisez curl pour tester la connectivité à l'adresse IP et au port de l'équilibreur de charge :

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

    Remplacez les éléments suivants :

    • HOSTNAME est le nom d'hôte de votre fournisseur de stockage source.
      • Pour AWS S3, utilisez le point de terminaison de l'API S3 pour la région de votre bucket, par exemple s3.us-west-1.amazonaws.com.
      • Pour Azure Storage, utilisez le point de terminaison Blob de votre compte de stockage, par exemple mystorageaccount.blob.core.windows.net.
    • PORT correspond au port que vous avez configuré dans la règle de transfert de l'équilibreur de charge, généralement 443.
    • LOAD_BALANCER_IP est l'adresse IP de l'interface de votre équilibreur de charge.

Une réponse du point de terminaison distant, même une erreur, indique que la connectivité est établie. Un délai de connexion expiré indique une erreur de configuration de votre réseau. Vous devez la résoudre avant de continuer.

Enregistrer votre NLB

Enregistrez l'équilibreur de charge réseau dans l'Annuaire des services. BigQuery utilise l'Annuaire des services pour résoudre l'adresse de l'équilibreur de charge et s'y connecter directement.

Suivez les instructions pour enregistrer un équilibreur de charge interne. Utilisez l'adresse IP et le port de l'équilibreur de charge que vous avez créé lorsque vous avez spécifié la règle de transfert.

Une fois le service créé, notez son lien personnel. Il utilise le format projects/{project_id}/locations/{location}/namespaces/{namespace}/services/{service}. Vous aurez besoin de cette valeur lorsque vous créerez la tâche de transfert.

Préparer le bucket intermédiaire

Pour effectuer un transfert de données Snowflake, vous devez créer un bucket intermédiaire, puis le configurer pour autoriser l'accès en écriture depuis Snowflake.

Sélectionnez l'une des options suivantes :

AWS

Pour les comptes Snowflake hébergés sur AWS, créez un bucket Amazon S3 pour préparer les données Snowflake avant de les charger dans BigQuery.

  1. Créez un bucket Amazon S3.

  2. Créez et configurez un objet d'intégration de stockage Snowflake pour permettre à Snowflake d'écrire des données dans le bucket Amazon S3 en tant qu'étape externe.

Pour autoriser l'accès en lecture à votre bucket Amazon S3, vous devez également procéder comme suit :

  1. Créez un utilisateur Amazon IAM dédié et accordez-lui la règle AmazonS3ReadOnlyAccess.

  2. Créez une paire de clés d'accès Amazon pour l'utilisateur IAM.

Azure

Pour les comptes Snowflake hébergés sur Azure, créez un conteneur Azure Blob Storage pour préparer les données Snowflake avant de les charger dans BigQuery.

  1. Créez un compte de stockage Azure et un conteneur de stockage dans ce compte.
  2. Créez et configurez un objet d'intégration de stockage Snowflake pour permettre à Snowflake d'écrire des données dans le conteneur de stockage Azure en tant qu'étape externe. Vous pouvez ignorer les étapes de création d'un stage externe, car ce n'est pas nécessaire.

Pour autoriser l'accès en lecture à votre conteneur Azure, générez un jeton SAP pour celui-ci.

Google Cloud

Pour les comptes Snowflake hébergés sur Google Cloud, créez un bucket Cloud Storage pour préproduire les données Snowflake avant de les charger dans BigQuery.

  1. Créez un bucket Cloud Storage.
  2. Créez et configurez un objet d'intégration de stockage Snowflake pour permettre à Snowflake d'écrire des données dans le bucket Cloud Storage en tant qu'étape externe.
  3. Pour autoriser l'accès au bucket intermédiaire, accordez le rôle roles/storage.objectViewer à l'agent de service DTS à l'aide de la commande suivante :

    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

Créer une configuration de transfert Snowflake privée

Créez le transfert Snowflake. Lorsque vous configurez la configuration du transfert, procédez comme suit :

Console

  • Pour Utiliser un réseau privé, sélectionnez True.
  • Dans le champ Rattachement de service PSC, saisissez l'URI du rattachement de service. Pour savoir comment trouver l'URI du rattachement de service, consultez Afficher les détails d'un service publié. L'URI du rattachement de service est au format projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT.
  • Pour Private Network Service, saisissez le lien auto du service NLB. Il utilise le format projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME.
  • URI du bucket intermédiaire que vous souhaitez utiliser pour le transfert :
  • Pour Fournisseur de services cloud, sélectionnez AWS, AZURE ou GCP selon le fournisseur de services cloud qui héberge votre compte Snowflake.

    AWS

    Azure

    Google Cloud

bq

  • Pour le paramètre use_private_network, définissez la valeur sur TRUE.
  • Pour le paramètre service_attachment, spécifiez l'URI du rattachement de service. Pour savoir comment trouver l'URI du rattachement de service, consultez Afficher les détails d'un service publié. L'URI du rattachement de service est au format projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT.
  • Pour le paramètre private_network_service, fournissez le lien autonome du service NLB. Il utilise le format projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME.
  • cloud_provider : saisissez AWS, AZURE ou GCP selon le fournisseur de services cloud qui héberge votre compte Snowflake.
  • staging_s3_uri : saisissez l'URI du bucket S3 à utiliser comme bucket intermédiaire. Obligatoire uniquement lorsque votre cloud_provider est défini sur AWS.
  • aws_access_key_id : saisissez la paire de clés d'accès. Obligatoire uniquement lorsque votre cloud_provider est défini sur AWS.
  • aws_secret_access_key : saisissez la paire de clés d'accès. Obligatoire uniquement lorsque votre cloud_provider est défini sur AWS.
  • azure_storage_account : saisissez le nom du compte de stockage à utiliser comme bucket intermédiaire. Obligatoire uniquement lorsque votre cloud_provider est défini sur AZURE.
  • staging_azure_container : saisissez le conteneur dans Azure Blob Storage à utiliser comme bucket intermédiaire. Obligatoire uniquement lorsque votre cloud_provider est défini sur AZURE.
  • azure_sas_token : saisissez le jeton SAS. Obligatoire uniquement lorsque votre cloud_provider est défini sur AZURE.
  • staging_gcs_uri : saisissez l'URI Cloud Storage à utiliser comme bucket intermédiaire. Obligatoire uniquement lorsque votre cloud_provider est défini sur GCP.