AWS PrivateLink e Snowflake¶
Este tópico descreve como configurar o AWS PrivateLink para conectar diretamente sua conta Snowflake a uma ou mais nuvens privadas virtuais (VPCs) da AWS.
Neste tópico:
AWS PrivateLink: visão geral¶
AWS PrivateLink é um serviço de criação de pontos de extremidade privados de VPC da AWS que permite conectividade direta e segura entre suas VPCs da AWS e a VPC Snowflake sem atravessar a internet pública. A conectividade AWS PrivateLink é compatível com serviços de ponto de extremidade de VPC e com VPCs da AWS que estejam em regiões diferentes da AWS ou na mesma. A conectividade entre regiões do AWS PrivateLink permite que você use um serviço de ponto de extremidade personalizado para conectar uma conta Snowflake a uma região diferente de sua região da VPC da AWS. Atualmente, a conectividade entre regiões não é compatível com nenhuma plataforma como serviço (serviços PaaS), como Amazon Simple Storage Service (Amazon S3) ou serviço de gerenciamento de chaves (KMS).
For more information, see the AWS blog page, Introducing Cross-Region Connectivity for AWS PrivateLink. For information about finding the region names for your account, see Find the cloud-provider’s name of the region for your account.
Ao escrever funções externas, você também pode usar o AWS PrivateLink com pontos de extremidade privados.
Se você tiver um ambiente no local (por exemplo, um data center não hospedado), você pode optar por usar o AWS Direct Connect com o AWS PrivateLink para conectar todos os seus ambientes virtuais e físicos em uma única rede privada.
Nota
AWS Direct Connect é um serviço AWS separado que deve ser implementado independentemente do AWS PrivateLink e está fora do escopo deste tópico. Para saber mais sobre a implementação do AWS Direct Connect, entre em contato com a Amazon.
Habilitação do AWS PrivateLink¶
Nota
No momento, o processo de habilitação de autoatendimento nesta seção não oferece suporte à autorização de um identificador de conta AWS de um serviço de nuvem gerenciado ou de um fornecedor terceirizado.
Para autorizar um identificador de conta AWS para esse caso de uso, recupere o identificador de conta AWS do fornecedor e entre em contato com o suporte Snowflake.
Para habilitar o AWS PrivateLink para sua conta Snowflake, complete as seguintes etapas:
Gere um token federado e salve a saída.
Para gerar um token, execute o comando AWS CLI STS.
get-federation-tokenrequer um usuário de gerenciamento de identidade e acesso na AWS ou o usuário raiz da conta da AWS. Para obter mais detalhes, consulte a documentação do AWS.Importante
O token federado expira após 12 horas. Se você chamar qualquer uma das funções do sistema para autorizar, verificar ou desativar sua conta Snowflake para usar o AWS PrivateLink e o token tiver expirado, gere o token de novo executando o comando AWS CLI STS.
aws sts get-federation-token --name sam
Em uma etapa posterior, você fornece a saída deste comando como o argumento
federated_tokenpara a função SYSTEM$AUTHORIZE_PRIVATELINK.Do token gerado, extraia o valor do campo
"FederatedUserId". Por exemplo, se seu token tiver os seguintes valores:{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
Extraia
185.... Na próxima etapa, você fornece este número de 12 dígitos como o argumentoaws_idpara a função SYSTEM$AUTHORIZE_PRIVATELINK.
Usando a função do sistema ACCOUNTADMIN do Snowflake, chame a função SYSTEM$AUTHORIZE_PRIVATELINK para autorizar (habilitar) o AWS PrivateLink para sua conta Snowflake:
SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '<aws_id>' , '<federated_token>' );
Onde:
'aws_id'O identificador de 12 dígitos que identifica de forma única sua conta no Amazon Web Services (AWS) como uma cadeia de caracteres.
'federated_token'O valor do token federado que contém as credenciais de acesso para um usuário federado como uma cadeia de caracteres.
Por exemplo:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '185...', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "enw...", "SessionToken": "Fwo...", "Expiration": "2021-01-07T19:06:23+00:00" }, "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }' );
Para verificar sua configuração, chame a função SYSTEM$GET_PRIVATELINK em sua conta Snowflake na AWS. Esta função usa os mesmos valores de argumento para
'aws_id'e'federated_token'que foram usados para autorizar sua conta Snowflake.SYSTEM$GET_PRIVATELINK retorna
Account is authorized for PrivateLink.para uma autorização bem-sucedida.Opcional: se for necessário desabilitar o AWS PrivateLink em sua conta Snowflake, chame a função SYSTEM$REVOKE_PRIVATELINK usando os mesmos valores de argumento para
'aws_id'e'federated_token'.
Para reforçar ainda mais sua postura de segurança, a Snowflake recomenda fixar pontos de extremidade privados para sua conta Snowflake. Para mais informações, consulte Fixação de pontos de extremidade de conectividade privada para tráfego de entrada.
Configuração do ambiente VPC da AWS¶
Atenção
Esta seção cobre apenas os detalhes específicos do Snowflake para a configuração de seu ambiente VPC.
O Snowflake não é responsável pela configuração real de pontos de extremidade VPC da AWS, regras de grupo de segurança e registros de sistema de nome de domínio (DNS). Se você encontrar problemas com qualquer uma dessas tarefas de configuração, entre em contato com o suporte da AWS.
Criação e configuração de seu ponto de extremidade de VPC da AWS¶
Para criar e configurar um ponto de extremidade VPC em seu ambiente VPC da AWS, complete as seguintes etapas:
Em sua conta Snowflake, use a função do sistema ACCOUNTADMIN para chamar a função SYSTEM$GET_PRIVATELINK_CONFIG e, em seguida, registre o valor
privatelink-vpce-id.Em seu ambiente AWS, crie um ponto de extremidade VPC usando o valor
privatelink-vpce-idda etapa anterior.Nota
If the Snowflake region of your VPC endpoint is different from the region of your AWS VPC, you must make two selections that enable cross-region connectivity. In the AWS VPC Console, select Enable Cross Region endpoint, and then select the primary region of the service in Service Settings » Service Region.
Para instruções completas, consulte o procedimento passo a passo para configurar a conectividade entre regiões na documentação da AWS.
For instructions that describe how to find the region name of your account, see Find the cloud-provider’s name of the region for your account.
Em seu ambiente AWS, autorize um grupo de segurança de serviços que conecte a conexão de saída do Snowflake à porta
443e80do VPCE CIDR (roteamento entre domínios sem classe).
Para mais informações, consulte os seguintes tópicos na documentação da AWS:
Find the cloud-provider’s name of the region for your account¶
Snowflake and the cloud provider that hosts your Snowflake account use similar, but different names for the region that hosts the Snowflake service. You can use system functions to find region names that you use to establish connectivity across regions. To determine the cloud-provider’s name of the region that hosts your Snowflake account, take the following steps:
Run the CURRENT_REGION and SHOW REGIONS commands.
In the output returned by SHOW REGIONS, find a row that shows a value in the
snowflake_region columnthat matches the output returned by SELECT CURRENT REGION.The value in this row’s
regioncolumn is the cloud-provider’s name of the region that hosts your Snowflake account.
In the following example, us-west-2 is the cloud-provider’s name of the region that hosts the Snowflake account named AWS_US_WEST.
SELECT CURRENT_REGION();
Output:
+------------------+
| CURRENT_REGION() |
|------------------|
| AWS_US_WEST_2 |
+------------------+
SHOW REGIONS;
Output:
+------------------+-------+-----------|-----------------+
| snowflake_region | cloud | region | display_name |
|------------------|-------|-----------|-----------------|
| AWS_US_WEST_2 | aws | us-west-2 | US West (Oregon)|
+------------------+-------+-----------+-----------------+
Configuração de sua rede VPC¶
Para acessar o Snowflake usando um pontos de extremidade do AWS PrivateLink, é necessário criar um nome canônico (CNAME) no DNS para resolver os valores de ponto de extremidade apropriados da função SYSTEM$GET_PRIVATELINK_CONFIG para o nome DNS do ponto de extremidade da VPC.
Os valores a serem obtidos da saída de SYSTEM$GET_PRIVATELINK_CONFIG dependem de quais recursos do Snowflake você acessa usando conectividade privada. Para obter uma descrição dos valores possíveis, consulte Valores de retorno.
Observe que os valores para regionless-snowsight-privatelink-url e snowsight-privatelink-url permitem o acesso a Snowsight e a Snowflake Marketplace usando conectividade privada. No entanto, há uma configuração adicional se você quiser habilitar redirecionamentos de URL. Para obter informações, consulte Snowsight e a conectividade privada.
Para ajuda adicional com a configuração DNS, entre em contato com seu administrador interno AWS.
Importante
A estrutura nome do host do servidor de cache do protocolo de status de certificados online (OCSP) depende da versão dos clientes instalados, conforme descrito em Configuração de clientes Snowflake:
Se você usar a versão listada ou uma versão posterior, use o formato mostrado em Configuração de clientes Snowflake, que permite resolver melhor o DNS quando você tem várias contas Snowflake (por exemplo, dev, teste e produção) na mesma região. Ao atualizar os drivers de cliente e usar OCSP com PrivateLink, atualize as regras de firewall para permitir o nome do host OCSP.
Se você usar uma versão de cliente anterior, a OCSP o nome do host do servidor de cache assume a forma
ocsp.region_id.privatelink.snowflakecomputing.comsem um identificador de conta.O registro DNS deve resolver para endereços IP privados dentro de sua VPC. Se ele resolve para endereços IP públicos, o registro não está configurado corretamente.
Criação de pontos de extremidade de interface VPC da AWS para o Amazon S3¶
This step is required for Amazon S3 traffic from Snowflake clients to stay on the AWS backbone. The Snowflake clients (such as Snowflake CLI, SnowSQL, JDBC driver, and so on) require access to Amazon S3 to perform various runtime operations.
Se sua rede VPC da AWS não permitir o acesso à internet pública, você pode configurar a conectividade privada para estágios internos ou mais pontos de extremidade de gateway para os nomes de host do Amazon S3 requeridos pelos clientes Snowflake.
Já três opções para configurar o acesso ao Amazon S3. As duas primeiras opções evitam a internet pública e a terceira usa a internet pública:
Configure um ponto de extremidade de interface VPC da AWS para estágios internos. Esta opção é recomendada.
Configuração de um ponto de extremidade de gateway do Amazon S3. Para mais informações, consulte a seguinte seção “Atenção”.
Não configure um ponto de extremidade de interface ou de gateway. Isso resulta em um acesso que usa a internet pública.
Atenção
Para evitar que a comunicação entre um bucket Amazon S3 e uma VPC da AWS com o Snowflake utilize a internet pública, você pode configurar um ponto de extremidade de gateway do Amazon S3 na mesma região AWS que o bucket Amazon S3. Isso impede as comunicações com a internet pública porque o AWS PrivateLink só permite comunicações entre VPCs, e o bucket Amazon S3 não está incluído na VPC.
Você pode configurar o ponto de extremidade de gateway do Amazon S3 para limitar o acesso a usuários específicos, recursos do Amazon S3, rotas e sub-redes; entretanto, o Snowflake não requer esta configuração. Para mais informações, consulte pontos de extremidade de gateway para o Amazon S3.
Para limitar os gateways do Amazon S3 para usar apenas recursos do Amazon S3 para o Snowflake, escolha uma das seguintes opções:
Use os endereços específicos de nome de host do Amazon S3 usados pela sua conta Snowflake em suas políticas de ponto de extremidade da AWS. Para a lista completa dos nomes de host usados pela sua conta, consulte SYSTEM$ALLOWLIST.
Use um padrão de nome de host do Amazon S3 que corresponda aos nomes de host S3 do Snowflake em suas políticas de ponto de extremidade da AWS. Neste cenário, há dois tipos possíveis de conexões ao Snowflake: VPC para VPC ou no local para VPC.
Com base em seu tipo de conexão, siga estas instruções:
- VPC a VPC:
Certifique-se de que o ponto de extremidade de gateway do Amazon S3 existe. Opcionalmente, modifique a política de ponto de extremidade de gateway do Amazon S3 para corresponder aos padrões específicos de nome de host que são mostrados na tabela de nomes de host do Amazon S3 a seguir.
- No local a VPC:
Defina uma configuração para incluir os padrões de nome de host S3 na configuração do firewall ou proxy se o tráfego do Amazon S3 não for permitido no gateway público.
Se você não precisar que seus pontos de extremidade de gateway correspondam explicitamente aos buckets S3 gerenciados pelo Snowflake de sua conta, pode usar os padrões de nome de host do Amazon S3 mostrados na tabela a seguir para criar pontos de extremidade de gateway:
Nomes de host do Amazon S3
Notas
Todas as regiões
sfc-*-stage.s3.amazonaws.com:443Nenhum.
Todas as regiões, exceto US East
sfc-*-stage.s3-<id_região>.amazonaws.com:443O padrão usa um hífen (
-) antes do ID da região.sfc-*-stage.s3.<id_região>.amazonaws.com:443O padrão usa um ponto (
.) antes do ID da região.
Para mais detalhes sobre a criação de pontos de extremidade de gateway, consulte Pontos de extremidade de VPC de gateway.
Conexão com o Snowflake¶
Antes de se conectar ao Snowflake, você pode opcionalmente usar a ferramenta de diagnóstico da conectividade do Snowflake (SnowCD) para avaliar a conexão de rede com o Snowflake e o AWS PrivateLink.
Para obter mais informações, consulte SnowCD e SYSTEM$ALLOWLIST_PRIVATELINK.
Caso conectividade privada, conecte-se ao Snowflake com a URL da sua conta de conectividade privada.
Se você quiser se conectar ao Snowsight pelo AWS PrivateLink, siga as instruções na Documentação do Snowsight.
Bloqueio de acesso público — Recomendado¶
Depois de testar a conectividade privada com o Snowflake usando o AWS PrivateLink, uma opção é bloquear o acesso público ao Snowflake. Isso significa que os usuários só podem acessar o Snowflake se sua solicitação de conexão tiver origem em um endereço IP dentro de um determinado intervalo de blocos CIDR especificado em uma política de redes do Snowflake.
Para bloquear o acesso público usando uma política de redes:
Crie uma nova política de redes ou edite uma política de redes existente.
Adicione o intervalo de blocos CIDR para sua organização.
Ative a política de redes para sua conta.
Para obter mais informações, consulte Controle do tráfego de rede com políticas de rede.
Configuração de clientes Snowflake¶
As seções a seguir descrevem como configurar clientes Snowflake para casos de uso específicos.
Como garantir o suporte dos clientes Snowflake ao servidor de cache OCSP¶
O servidor de cache Snowflake OCSP atenua os problemas de conectividade entre os clientes Snowflake e o servidor. Para permitir que seus clientes Snowflake instalados usem o cache do servidor OCSP, use as seguintes versões de cliente:
Snowflake CLI 3.0.0 (or higher)
SnowSQL 1.1.57 (or higher)
Python Connector 1.8.2 (or higher)
JDBC Driver 3.8.3 (or higher)
ODBC Driver 2.19.3 (or higher)
Nota
O servidor de cache OCSP Snowflake escuta na porta 80, por isso foi instruído em Criação e configuração de seu ponto de extremidade de VPC da AWS que o grupo de segurança AWS PrivateLink VPCE fosse configurado para aceitar as duas portas 80 e 443, que são necessárias para todo o outro tráfego do Snowflake.
Especificação de um nome de host para clientes Snowflake¶
Cada cliente Snowflake requer um nome de host para se conectar à sua conta Snowflake.
O nome do host é o mesmo que o especificada nos registros CNAME em Configuração de sua rede VPC.
Esta etapa não se aplica para acessar o Snowflake Marketplace.
Por exemplo, para uma conta chamada xy12345:
Se a conta estiver em US West, o nome de host é
xy12345.us-west-2.privatelink.snowflakecomputing.com.Se a conta estiver em EU (Frankfurt), o nome de host é
xy12345.eu-central-1.privatelink.snowflakecomputing.com.
Importante
O método para especificar o nome do host difere de acordo com o cliente:
Para o conector Spark e os drivers ODBC e JDBC, especifique o nome completo do host.
Para todos os outros clientes, não especifique o nome completo do host. Em vez disso, especifique o identificador de conta com o segmento
privatelink, que é<account_identifier>.privatelink. Snowflake concatenates this name withsnowflakecomputing.compara construir dinamicamente o nome do host.
Para mais informações sobre como especificar o nome da conta ou o nome do host para um cliente Snowflake, consulte a documentação de cada cliente.
Uso de SSO com o AWS PrivateLink¶
O Snowflake oferece suporte ao uso de SSO com o AWS PrivateLink. Para obter mais informações, consulte:
Uso do redirecionamento do cliente com o AWS PrivateLink¶
O Snowflake oferece suporte ao uso do redirecionamento do cliente com o AWS PrivateLink.
Para obter mais informações, consulte Redirecionamento de conexões do cliente.
Usando replicação e Tri-Secret Secure com conectividade privada¶
O Snowflake oferece suporte à replicação de seus dados da conta de origem para a conta de destino, independentemente de você habilitar o Tri-Secret Secure ou este recurso na conta de destino.
Solução de problemas¶
Para solucionar problemas que você possa encontrar com o PrivateLink, consulte os seguintes artigos da Comunidade Snowflake: