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.
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 para o AWS PrivateLink permite que você use um serviço de ponto de extremidade personalizado para conectar uma conta Snowflake em uma região diferente da sua região da VPC da AWS. A conectividade entre regiões não é compatível atualmente com nenhum serviço de plataforma como serviço (PaaS), como o Amazon Simple Storage Service (Amazon S3) ou o serviço de gerenciamento de chaves (KMS).
Para obter mais informações, consulte a página do blog da AWS, Introducing Cross-Region Connectivity for AWS PrivateLink. Para obter informações sobre como encontrar os nomes de região da sua conta, consulte Encontrar o nome do provedor de nuvem da região da sua conta.
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 STS da AWS CLI.
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 obter 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
Se a região Snowflake do seu ponto de extremidade VPC for diferente da região da VPC da AWS, você deverá fazer duas seleções que permitam a conectividade entre regiões. No console VPC da AWS, selecione Enable Cross Region endpoint e, em seguida, escolha a região primária do serviço em 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.
Para obter instruções sobre como encontrar o nome da região da sua conta, consulte Encontrar o nome do provedor de nuvem da região da sua conta.
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:
Encontrar o nome do provedor de nuvem da região da sua conta¶
O Snowflake e o provedor de nuvem que hospeda sua conta Snowflake usam nomes semelhantes, mas diferentes, para a região que hospeda o serviço Snowflake. É possível usar funções do sistema para encontrar os nomes das regiões que você usa para estabelecer conectividade entre regiões. Para determinar o nome do provedor de nuvem da região que hospeda sua conta Snowflake, siga estas etapas:
Execute os comandos CURRENT_REGION e SHOW REGIONS.
Na saída retornada por SHOW REGIONS, encontre uma linha que mostre um valor na coluna
snowflake_regionque corresponda à saída retornada por SELECT CURRENT REGION.O valor na coluna
regiondesta linha é o nome do provedor de nuvem da região que hospeda sua conta Snowflake.
No exemplo a seguir, us-west-2 é o nome da região do provedor de nuvem que hospeda a conta Snowflake chamada AWS_US_WEST.
SELECT CURRENT_REGION();
Saída:
+------------------+
| CURRENT_REGION() |
|------------------|
| AWS_US_WEST_2 |
+------------------+
SHOW REGIONS;
Saída:
+------------------+-------+-----------|-----------------+
| 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¶
Esta etapa é necessária para que o tráfego do Amazon S3 dos clientes Snowflake permaneça no backbone AWS. Os clientes Snowflake (como o driver Snowflake CLI, SnowSQL, JDBC e assim por diante) exigem acesso ao Amazon S3 para executar várias operações de tempo de execução.
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 (ou superior)
SnowSQL 1.1.57 (ou superior)
Conector Python 1.8.2 (ou superior)
Driver JDBC 3.8.3 (ou superior)
Driver ODBC 2.19.3 (ou superior)
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 :doc:` identificador de conta </user-guide/admin-account-identifier>` com o segmento
privatelink, que é<account_identifier>.privatelink. O Snowflake concatena esse nome com snowflakecomputing.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: