Pontos de extremidade da interface AWS VPC para estágios internos

Este tópico fornece conceitos e instruções detalhadas para conexão com estágios internos do Snowflake através de pontos de extremidade da interface AWS VPC.

Neste tópico:

Visão geral

Os pontos de extremidade da interface AWS VPC e AWS PrivateLink para Amazon S3 podem ser combinados para fornecer conectividade segura aos estágios internos do Snowflake. Esta configuração garante que as operações de carregamento e descarregamento de dados para os estágios internos do Snowflake utilizem a rede interna AWS e não ocorram através da Internet pública.

Antes de a AWS oferecer suporte a pontos de extremidade da interface VPC para acesso a estágios internos, foi necessário criar um farm proxy dentro do AWS VPC para facilitar o acesso seguro aos estágios internos do Snowflake. Com o suporte adicional de pontos de extremidade da interface VPC para os estágios internos do Snowflake, usuários e aplicativos clientes agora podem acessar os estágios internos do Snowflake através da rede privada AWS. O diagrama a seguir resume este novo suporte:

Conexão ao estágio interno usando AWS PrivateLink para S3

Observe o seguinte em relação aos números no diagrama BEFORE:

  • Os usuários têm duas opções para se conectar a um estágio interno do Snowflake:

    • A opção A permite uma conexão no local diretamente ao estágio interno, como mostra o número 1.

    • A opção B permite uma conexão com o estágio interno através de um farm proxy, como mostrado pelos números 2 e 3.

  • Se o farm proxy for usado, os usuários também podem se conectar diretamente ao Snowflake, como indicado pelo número 4.

Observe o seguinte em relação aos números no diagrama AFTER:

  • As atualizações neste recurso eliminam a necessidade de conectar ao Snowflake ou a um estágio interno do Snowflake através de um farm proxy.

  • Um usuário no local pode se conectar diretamente ao Snowflake, como mostrado no número 5.

  • Para conexão a um estágio interno do Snowflake, os usuários no local se conectam a um ponto de extremidade de interface, número 6, e depois usam AWS PrivateLink para Amazon S3 para conexão ao estágio interno do Snowflake, como mostrado no número 7.

Há um único bucket Amazon S3 por implantação de estágio interno. Um prefixo no bucket Amazon S3 do estágio interno é usado para organizar os dados em cada conta Snowflake. As URLs do ponto de extremidade do bucket Amazon S3 são diferentes dependendo se a conexão ao bucket usa conectividade privada (ou seja, AWS PrivateLink para S3).

URL do ponto de extremidade global público Amazon S3:

<nome_do_bucket>.s3.region.amazonaws.com/prefix

URL do ponto de extremidade privado Amazon S3:

<nome_do_bucket>.<vpceID>.s3.<região>.vpce.amazonaws.com/prefix

Benefícios

A implementação de pontos de extremidade da interface VPC para acessar os estágios internos do Snowflake oferece as seguintes vantagens:

  • Os dados do estágio interno não atravessam a Internet pública.

  • Aplicativos clientes e SaaS, tais como Microsoft PowerBI, que funcionam fora do AWS VPC, podem se conectar ao Snowflake com segurança.

  • Os administradores não são obrigados a modificar as configurações do firewall para acessar os dados do estágio interno.

  • Os administradores podem implementar segurança e monitoramento consistentes sobre como os usuários se conectam às contas de armazenamento.

Limitações

Para limitações do AWS PrivateLink, consulte a documentação do AWS.

Introdução

Antes de configurar o AWS e Snowflake para permitir solicitações de acesso a um estágio interno do Snowflake por meio de AWS PrivateLink, você deve:

Pré-requisitos

  • Defina o parâmetro ENABLE_INTERNAL_STAGES_PRIVATELINK para ativar o suporte para conexão com um estágio interno em AWS PrivateLink. Para ambas as estratégias de implementação discutidas neste tópico, o administrador da conta deve executar:

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    
    Copy
  • AWS PrivateLink para S3.

    Importante

    O AWS PrivateLink para S3 é um serviço AWS que precisa ser habilitado em seu ambiente de nuvem.

    Para obter ajuda na configuração e implementação deste serviço, entre em contato com seu administrador AWS interno.

  • Atualize a lista de permissões do firewall da seguinte forma:

  • Para clientes us-east-1 somente: Se utilizar um dos seguintes clientes Snowflake para conectar-se ao Snowflake, atualize para a versão de cliente da seguinte forma:

    • Driver JDBC: 3.13.3 (ou superior)

    • Driver ODBC: 2.23.2 (ou superior)

    • Conector Python para Snowflake: 2.5.1 (ou superior)

    • SnowSQL: 1.2.17 (ou superior)

      • Atualize o SnowSQL antes de utilizar este recurso. Para obter mais informações, consulte Instalação do SnowSQL.

      • Observe que se for utilizada a opção SnowSQL --noup ,, a atualização automática do SnowSQL fica desativada e uma nova versão do SnowSQL não pode ser baixada. Para atualizar, desative a opção --noup e reative-a após a atualização estar concluída.

Como escolher uma estratégia de implementação

A escolha da estratégia de implementação correta depende se sua organização está usando AWS PrivateLink para acessar um único estágio interno ou vários estágios internos.

Acesso a um estágio interno com um ponto de extremidade da interface

A estratégia de implementação a seguir é recomendada quando sua organização está acessando o estágio interno de uma conta única. Se você estiver acessando vários estágios internos do seu VPC, consulte Acesso a estágios internos com pontos de extremidade de interface dedicados.

Para configurar o ponto de extremidade da interface VPC para acessar o estágio interno do Snowflake, é necessário ter o suporte das três funções seguintes em sua organização:

  1. O administrador da conta Snowflake (ou seja, um usuário com a função do sistema Snowflake ACCOUNTADMIN).

  2. O administrador AWS.

  3. O administrador da rede.

Dependendo da organização, pode ser necessário coordenar os esforços de configuração com mais de uma pessoa ou equipe para implementar as seguintes etapas de configuração.

Procedimento

Complete as seguintes etapas para configurar e implementar o acesso seguro ao estágio interno do Snowflake através do ponto de extremidade VPC:

  1. Como administrador de conta Snowflake, execute as seguintes instruções em sua conta Snowflake e registre o valor definido pela chave privatelink_internal_stage. Observe que o nome do bucket Amazon S3 é definido no primeiro segmento da URL quando lido da esquerda para a direita. Para obter mais informações, consulte ENABLE_INTERNAL_STAGES_PRIVATELINK e SYSTEM$GET_PRIVATELINK_CONFIG.

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    select key, value from table(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  2. Como administrador AWS, crie um ponto de extremidade VPC para AWS PrivateLink para S3 usando o Console AWS. Registre o nome VPCE DNS para uso na próxima etapa; não registre qualquer nome de zona VPCE DNS.

    O nome VPCE DNS pode ser encontrado descrevendo um ponto de extremidade de interface uma vez que o ponto de extremidade esteja criado.

    Neste exemplo, um curinga (ou seja, *) é listado como o caractere principal no nome VPCE DNS. Substitua o curinga principal pelo nome do bucket S3 da etapa anterior. Por exemplo:

    Substitua:

    *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

    Por:

    <nome_do_bucket>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  3. Como administrador da rede, atualizar as configurações DNS para resolver a seguinte URL:

    <nome_do_bucket>.s3.<região>.amazonaws.com para o nome VPCE DNS depois que o curinga principal tiver sido substituído pelo nome do bucket Amazon S3.

    Neste exemplo, resolva <nome_do_bucket>.s3.<região>.amazonaws.com para <nome_do_bucket>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com.

    Dica

    • Não utilize caracteres curinga (ou seja, *) com mapeamento DNS devido ao possível impacto de acessar outros buckets Amazon S3 fora do Snowflake.

    • Use uma conta Snowflake separada para testes e configure uma zona DNS hospedada privada em um VPC de teste para testar o recurso de forma que o teste seja isolado e não tenha impacto em suas outras cargas de trabalho.

    • Se não for possível usar uma conta Snowflake separada, use um usuário de teste para acessar o Snowflake a partir de um VPC de teste onde as alterações DNS são feitas.

    • Para testar a partir de aplicativos no local, use o encaminhamento de DNS para encaminhar solicitações para a zona hospedada privada AWS no VPC onde as configurações DNS são feitas. Se houver aplicativos clientes tanto no VPC quanto no local, use o AWS Transit Gateway.

    • Execute o seguinte comando da máquina cliente para verificar se o endereço IP retornado é o endereço IP privado para a conta de armazenamento:

      dig <bucket_name>.s3.<region>.amazonaws.com
      
      Copy
  4. Para contas Snowflake em us-east-1, verifique se seus clientes Snowflake estão em suas versões mais recentes.

Acesso a estágios internos com pontos de extremidade de interface dedicados

A estratégia de implementação a seguir é recomendada quando sua organização está acessando os estágios internos de múltiplas contas.

O parâmetro S3_STAGE_VPCE_DNS_NAME permite que os usuários associem uma conta Snowflake ao nome DNS de um ponto de extremidade de interface do Amazon S3. Isso permite que organizações com várias contas Snowflake em uma implantação AWS associem cada estágio interno a um ponto de extremidade de interface diferente. Quando cada estágio interno tem seu próprio ponto de extremidade de interface, o tráfego de rede para um estágio interno específico é isolado do tráfego de rede para outros estágios internos.

Antes de continuar, verifique se você atendeu aos pré-requisitos.

Benefícios

A estratégia na qual um estágio interno em uma implantação AWS tem um ponto de extremidade de interface dedicado do Amazon S3 tem os seguintes benefícios:

Segurança:

Cada conta pode ter uma estratégia de segurança diferente porque os pontos de extremidade de interface individuais podem ter configurações de segurança diferentes.

Modelos de chargeback:

As empresas podem isolar o tráfego de rede com base no tipo de conta (por exemplo, produção versus desenvolvimento) e atribuir os custos associados ao fluxo de dados através de um ponto de extremidade à conta correta.

Gerenciamento de DNS:

O nome DNS de um ponto de extremidade de interface do Amazon S3 é um nome globalmente exclusivo que localiza o ponto de extremidade específico em uma região específica. AWS registra automaticamente esse nome DNS em seu serviço DNS público, o que significa que ele pode ser resolvido publicamente. Por esses motivos, um administrador não precisa fazer nenhuma configuração DNS adicional para rotear o tráfego por meio de um ponto de extremidade de interface do Amazon S3 para um estágio interno. Por exemplo, o administrador não precisa configurar uma zona hospedada privada (PHZ) ao configurar o serviço Amazon Route 53 DNS ou registrar um nome DNS para apontar para um ponto de extremidade.

Configuração

A estratégia de isolamento de rede consiste no seguinte:

  1. Em AWS, um administrador cria um novo ponto de extremidade de interface do Amazon S3 para cada conta Snowflake na organização. Por exemplo, se uma organização tiver duas contas na implantação do Snowflake, o administrador criará dois pontos de extremidade de interface.

  2. No Snowflake, um administrador usa o parâmetro S3_STAGE_VPCE_DNS_NAME para associar cada conta Snowflake ao nome DNS de seu ponto de extremidade de interface dedicado. Todo o tráfego para o estágio interno da conta passa por esse ponto de extremidade de interface.

Configuração do AWS

No seu VPC como um administrador AWS:

  1. Crie um ponto de extremidade de interface do Amazon S3 separado para cada uma de suas contas Snowflake.

  2. Para cada um desses pontos de extremidade, use o Console de Gerenciamento AWS VPC para:

    1. Abrir o ponto de extremidade para visualizar Details.

    2. Encontrar o campo DNS Names e copiar o nome DNS com escopo regional. O parâmetro Snowflake S3_STAGE_VPCE_DNS_NAME será definido com este valor.

      O formato do nome DNS com escopo regional é semelhante a *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com. Embora AWS também forneça um nome DNS de zona de disponibilidade, Snowflake recomenda o nome DNS com escopo regional porque fornece alta disponibilidade com recursos de failover.

Configuração do Snowflake

Depois que o administrador AWS criar o ponto de extremidade de interface para o estágio interno de uma conta Snowflake, o administrador do Snowflake poderá usar o parâmetro S3_STAGE_VPCE_DNS_NAME para associar o nome DNS desse ponto de extremidade à conta.

O parâmetro S3_STAGE_VPCE_DNS_NAME deve ser definido como o nome DNS com escopo regional do ponto de extremidade de interface associado a um estágio interno específico. O formato padrão começa com um asterisco (*) e termina com vpce.amazonaws.com (por exemplo, *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com).

Por exemplo, o administrador da conta pode executar o seguinte para associar um ponto de extremidade à conta atual:

alter account set S3_STAGE_VPCE_DNS_NAME='*.vpce-sd98fs0d9f8g.s3.us-west2.vpce.amazonaws.com';
Copy

Valor DNS final

O nome DNS final associado a uma conta tem o formato: <nomebucket>.bucket.vpce-<vpceid>.s3.<região>.vpce.amazonaws.com

Onde:

  • <nomebucket> é o nome do bucket Amazon S3 do estágio interno.

  • <vpceid> é o identificador exclusivo do ponto de extremidade da interface Amazon S3 associado à conta.

  • <região> é a região da nuvem que hospeda sua conta Snowflake.

O nome DNS final aparece nos logs de cada driver que se conecta ao estágio interno.