Configurar a conectividade particular para transferências do Snowflake

Este guia mostra como configurar a conectividade privada para criar transferências de dados particulares do Snowflake para o BigQuery. Com as transferências de dados particulares, é possível transferir dados de uma origem para outra em uma rede particular e reduzir os riscos de segurança ao transferir dados pela Internet pública.

As seções a seguir mostram as etapas necessárias para configurar a conectividade privada antes de criar uma transferência do Snowflake.

As transferências particulares são compatíveis com instâncias do Snowflake hospedadas no Amazon Web Services (AWS), no Microsoft Azure e no Google Cloud.

Transferências de dados particulares da AWS ou do Azure ou de contas do Snowflake hospedadas em Google Cloudpara o BigQuery

Crie um link privado que conecte sua conta do Snowflake ao provedor de nuvem. Para mais informações, selecione uma das seguintes opções:

Configurar o Interconexão entre nuvens ou a VPN de alta disponibilidade

Configure o Interconexão entre nuvens ou a VPN de alta disponibilidade na AWS ou no Azure. Essa etapa não é necessária para contas do Snowflake hospedadas peloGoogle Cloud.

AWS

Com uma VPN de alta disponibilidade, é possível transferir dados por um túnel de VPN criptografado. Para usar uma VPN de alta disponibilidade na sua transferência privada do Snowflake, consulte Criar conexões de VPN de alta disponibilidade entre Google Cloud e a AWS.

Uma conexão Cross-Cloud Interconnect cria um link privado dedicado entre provedores de nuvem e é adequada para grandes transferências de dados com requisitos de baixa latência. Para usar Interconexão entre nuvens na sua transferência privada do Snowflake, consulte Conectar à AWS.

Azure

Com uma VPN de alta disponibilidade, é possível transferir dados por um túnel de VPN criptografado. Para usar uma VPN de alta disponibilidade na sua transferência privada do Snowflake, consulte Criar conexões de VPN de alta disponibilidade entre Google Cloud e o Azure.

Uma conexão Cross-Cloud Interconnect cria um link privado dedicado entre provedores de nuvem e é adequada para grandes transferências de dados com requisitos de baixa latência. Para usar Interconexão entre nuvens na sua transferência privada do Snowflake, consulte Conectar ao Azure.

Criar VM de proxy

Para concluir uma conexão particular, uma VM proxy é necessária para concluir a conexão entre suas fontes de dados sem que eles cheguem à Internet pública. Essa etapa é necessária para instâncias do Snowflake hospedadas na AWS, no Azure ou no Google Cloud.

Para criar e configurar uma VM proxy para uma transferência privada do Snowflake, faça o seguinte:

  1. Crie uma ou mais instâncias de VM do Compute Engine na rede VPC do consumidor.
  2. Faça o download de um software de proxy TCP, como HAProxy ou Nginx, e configure o seguinte:
    1. Especifique uma porta. Por exemplo, 443
    2. Encaminhe todo o tráfego TCP de entrada para o nome do host e a porta particulares na instância do Snowflake.
  3. Configure as VMs para resolver o nome de host particular do Snowflake pelo DNS configurado na rede VPC do consumidor.
  4. Configure um balanceador de carga de passagem interna fazendo o seguinte:
    1. Agrupe as VMs de proxy em um grupo gerenciado de instâncias (MIG).
    2. Configure um balanceador de carga de rede de passagem interna com back-ends de grupos de instâncias de VM.

Criar anexo de serviço

Use o Private Service Connect para criar um anexo de rede e publicar o serviço. Essa etapa é necessária para instâncias do Snowflake hospedadas na AWS, no Azure ou no Google Cloud.

O anexo de serviço precisa estar na mesma região que o conjunto de dados do BigQuery.

Se o serviço usar aprovação explícita (connection-preference definido como ACCEPT_MANUAL), a conta de serviço usada na transferência privada de dados do Snowflake precisará ter as seguintes permissões do IAM:

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

Depois de criar o anexo de serviço, anote o URI dele. Você vai precisar desse URI ao criar a configuração de transferência do Snowflake.

Criar endpoint

Crie um endpoint na sua conta da AWS ou do Azure. Essa etapa não é necessária para contas do Snowflake hospedadas peloGoogle Cloud.

AWS

Na AWS, crie um endpoint da VPC que se conecte ao Amazon S3. Para mais informações, consulte Acessar um serviço da AWS usando um endpoint de VPC de interface.

Azure

Configure um endpoint particular na conta de armazenamento no Azure. Para mais informações, consulte Usar endpoints particulares para o Azure Storage.

O Serviço de transferência do Cloud Storage exige o endpoint *.blob.core.microsoft.net. O endpoint *.dfs.core.microsoft.net não é compatível.

Depois de criado, anote o endereço IP do endpoint. Você precisará especificar o endereço IP ao criar o balanceador de carga na seção a seguir.

Crie um balanceador de carga de rede

Configure um balanceador de carga de rede (NLB) de proxy interno regional com conectividade híbrida. É possível criar o balanceador de carga para rotear o tráfego para os endpoints da VPC do Amazon S3 ou os endpoints particulares do Azure Storage criados na seção anterior. Para mais informações, consulte Configurar um balanceador de carga de rede de proxy interno regional com conectividade híbrida.

Registrar seu NLB

Depois de criar o NLB de rede, registre-o no Diretório de serviços no Serviço de transferência do Cloud Storage. Para mais informações, consulte Registrar seu NLB no Service Directory.

Anote o link para o diretório de serviços. Você vai precisar do autolink para o serviço ao criar a configuração de transferência do Snowflake.

Preparar o bucket de staging

Para concluir uma transferência de dados do Snowflake, crie um bucket de preparação e configure-o para permitir acesso de gravação do Snowflake.

Selecione uma das seguintes opções:

AWS

Para contas do Snowflake hospedadas na AWS, crie um bucket do Amazon S3 para armazenar os dados do Snowflake antes de serem carregados no BigQuery.

  1. Crie um bucket do Amazon S3.

  2. Crie e configure um objeto de integração de armazenamento do Snowflake para permitir que o Snowflake grave dados no bucket do Amazon S3 como um estágio externo.

Para permitir o acesso de leitura ao bucket do Amazon S3, faça o seguinte:

  1. Crie um usuário do IAM da Amazon dedicado e conceda a ele a política AmazonS3ReadOnlyAccess.

  2. Crie um par de chaves de acesso da Amazon para o usuário do IAM.

Azure

Para contas do Snowflake hospedadas no Azure, crie um contêiner do Armazenamento de Blobs do Azure para organizar os dados do Snowflake antes de serem carregados no BigQuery.

  1. Crie uma conta de armazenamento do Azure e um contêiner de armazenamento nela.
  2. Crie e configure um objeto de integração de armazenamento do Snowflake para permitir que o Snowflake grave dados no contêiner de armazenamento do Azure como um estágio externo. Você pode pular as etapas para criar um estágio externo, já que isso não é necessário.

Para permitir o acesso de leitura no seu contêiner do Azure, gere um token SAS para ele.

Google Cloud

Para contas do Snowflake hospedadas no Google Cloud, crie um bucket do Cloud Storage para organizar os dados do Snowflake antes de serem carregados no BigQuery.

  1. Crie um bucket do Cloud Storage.
  2. Crie e configure um objeto de integração de armazenamento do Snowflake para permitir que o Snowflake grave dados no bucket do Cloud Storage como um estágio externo.
  3. Para permitir o acesso ao bucket de staging, conceda ao agente de serviço do DTS o papel roles/storage.objectViewer com o seguinte 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

Criar uma configuração de transferência privada do Snowflake

Crie a transferência do Snowflake. Ao configurar a configuração de transferência, faça o seguinte:

Console

bq

  • Para o parâmetro use_private_network, defina como TRUE.
  • Para o parâmetro service_attachment, especifique o URI do anexo de serviço. Para informações sobre como encontrar o URI do anexo de serviço, consulte Ver detalhes de um serviço publicado. O URI do anexo de serviço está no formato projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT.
  • Para o parâmetro private_network_service, forneça o autovínculo do serviço NLB. Ele usa o formato projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME.
  • cloud_provider: insira AWS, AZURE ou GCP, dependendo de qual provedor de nuvem está hospedando sua conta do Snowflake.
  • staging_s3_uri: insira o URI do bucket do S3 para usar como um bucket de preparo. Obrigatório apenas quando seu cloud_provider é AWS.
  • aws_access_key_id: insira o par de chaves de acesso. Obrigatório apenas quando seu cloud_provider é AWS.
  • aws_secret_access_key: insira o par de chaves de acesso. Obrigatório apenas quando seu cloud_provider é AWS.
  • azure_storage_account: insira o nome da conta de armazenamento para usar como um bucket de staging. Obrigatório apenas quando seu cloud_provider é AZURE.
  • staging_azure_container: insira o contêiner no Armazenamento de Blobs do Azure para usar como um bucket de staging. Obrigatório apenas quando seu cloud_provider é AZURE.
  • azure_sas_token: insira o token SAS. Obrigatório apenas quando seu cloud_provider é AZURE.
  • staging_gcs_uri : insira o URI do Cloud Storage para usar como um bucket de staging. Obrigatório apenas quando seu cloud_provider é GCP.