AWS PrivateLink e Snowflake¶
Este tópico descreve como configurar o AWS PrivateLink para conectar diretamente sua conta Snowflake a uma ou mais VPCs da AWS.
Note que o AWS PrivateLink não é um serviço fornecido pela Snowflake. É um serviço AWS ao qual o Snowflake oferece suporte para uso com sua conta Snowflake.
Neste tópico:
O que é AWS PrivateLink?¶
AWS PrivateLink é um serviço AWS para a criação de pontos de extremidade VPC privados que permitem conectividade direta e segura entre suas VPCs da AWS e a VPC Snowflake sem atravessar a internet pública. A conectividade é para as VPCs da AWS na mesma região da AWS.
Para Como escrever funções externas, você também pode usar o AWS PrivateLink com pontos de extremidade privados.
Além disso, se você tiver um ambiente no local (por exemplo, um data center não hospedado), você pode optar por usar o AWS Direct Connect, em conjunto 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
Atualmente, 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ços 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:
Em seu ambiente de linha de comando, execute o seguinte comando AWS CLI STS e salve a saída. A saída será usada como o valor para o argumento
federated_token
na próxima etapa.aws sts get-federation-token --name sam
Note que
get-federation-token
exige um usuário de gerenciamento de acesso ou identidade em AWS ou o usuário raiz da conta AWS. Para obter mais detalhes, consulte a documentação do AWS.Extraia o número de 12 dígitos no valor
"FederatedUserId"
(truncado). Por exemplo, se seu token contém:{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
Extraia
185...
. Esse número de 12 dígitos será o valor paraaws_id
na próxima etapa.Como administrador da conta Snowflake (ou seja, um usuário com a função do sistema ACCOUNTADMIN), chame a função SYSTEM$AUTHORIZE_PRIVATELINK para autorizar (ou seja, 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 autorizada, 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.
O Snowflake retorna Account is authorized for PrivateLink.
para uma autorização bem-sucedida.
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'
.
Importante
O federated_token
expira após 12 horas.
Se chamar qualquer uma das funções do sistema para autorizar, verificar ou desativar sua conta Snowflake para usar o AWS PrivateLink e o token não for válido, regenere o token usando o comando AWS CLI STS mostrado no início do procedimento nesta seção.
Configuração de seu 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.
Observe também que o Snowflake não é responsável pela configuração real dos pontos de extremidade VPC da AWS necessários, regras de grupo de segurança e registros DNS. Se você encontrar problemas com qualquer uma dessas tarefas de configuração, entre em contato diretamente com o suporte AWS.
Criação e configuração de um ponto de extremidade VPC (VPCE)¶
Complete as seguintes etapas para criar e configurar um ponto de extremidade VPC: Em seu ambiente VPC da AWS:
Como administrador de conta Snowflake (ou seja, um usuário com a função ACCOUNTADMIN do sistema), chame a função SYSTEM$GET_PRIVATELINK_CONFIG e registre o valor
privatelink-vpce-id
.Em seu ambiente AWS, crie um ponto de extremidade VPC usando o valor
privatelink-vpce-id
da etapa anterior.Em seu ambiente AWS, autorize um grupo de segurança de serviços que conecte a conexão de saída do Snowflake à porta
443
e80
do VPCE CIDR (roteamento entre domínios sem classe).
Para obter mais detalhes, consulte a documentação da AWS:
Configuração de sua rede VPC¶
Para acessar o Snowflake por meio de um ponto de extremidade AWS PrivateLink, é necessário criar registros CNAME em seu DNS para resolver os valores do ponto de extremidade da função SYSTEM$GET_PRIVATELINK_CONFIG para o nome DNS de seu ponto de extremidade VPC.
Estes valores de ponto de extremidade permitem acessar o Snowflake, Snowsight e o Snowflake Marketplace enquanto também usam OCSP para determinar se um certificado é revogado quando clientes do Snowflake tentam se conectar a um ponto de extremidade através de HTTPS e URLs de conexão.
Os valores das funções a serem obtidos são:
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
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 mais detalhes, consulte Snowsight e Conectividade privada.
Para ajuda adicional com a configuração DNS, entre em contato com seu administrador interno AWS.
Importante
A estrutura do nome de host do servidor de cache OCSP depende da versão de seus clientes instalados, conforme descrito na Etapa 1 de Configuração de seus clientes Snowflake (neste tópico):
Se você estiver usando as versões listadas (ou superiores), use o formulário descrito acima, que permite uma melhor resolução DNS quando você tem múltiplas contas Snowflake (por exemplo, desenvolvimento, teste e produção) na mesma região. Ao atualizar os drivers do cliente e usar OCSP com PrivateLink, atualize as regras de firewall para permitir o nome de host OCSP.
Se você estiver usando versões de clientes mais antigas, o nome de host do servidor de cache OCSP assume a forma
ocsp.<id_de_região>.privatelink.snowflakecomputing.com
(isto é, sem identificador de conta).Observe que seu 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 (por exemplo, driver SnowSQL, JDBC) requerem acesso ao Amazon S3 para realizar 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.
Em geral, há três opções para configurar o acesso ao Amazon S3. As duas primeiras opções evitam a internet pública e a terceira opção não:
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 obter mais informações, consulte a nota abaixo.
Não configure um ponto de extremidade de interface ou um ponto de extremidade de gateway. Isso resulta no acesso usando 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. A razão para isso é que o AWS PrivateLink só permite a comunicação 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 S3, rotas e sub-redes; entretanto, o Snowflake não requer esta configuração. Para obter mais detalhes, consulte Pontos de extremidade para o Amazon S3.
Para configurar as políticas de ponto de extremidade de gateway do Amazon S3 para restringi-las especificamente para usar apenas os 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 por sua conta Snowflake. Para a lista completa dos nomes de host utilizados por 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. Neste cenário, há dois tipos possíveis de conexões ao Snowflake, VPC a VPC ou No local a VPC.
Com base em seu tipo de conexão, observe o seguinte:
- VPC a VPC:
Certifique-se de que o ponto de extremidade de gateway do Amazon S3 existe. Como opção, modifique a política de ponto de extremidade de gateway S3 para corresponder aos padrões específicos de nome de host mostrados na tabela Nomes de host do Amazon S3.
- No local a VPC:
Você deve definir 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.
A tabela a seguir lista os padrões de nome de host do Amazon S3 para os quais você pode criar pontos de extremidade de gateway se você não exigir que eles sejam específicos para os buckets S3 gerenciados pelo Snowflake de sua conta:
Nomes de host do Amazon S3
Notas
Todas as regiões
sfc-*-stage.s3.amazonaws.com:443
Todas as regiões, exceto US East
sfc-*-stage.s3-<id_região>.amazonaws.com:443
Observe que o padrão usa um hífen (
-
) antes da ID de região.sfc-*-stage.s3.<id_região>.amazonaws.com:443
Observe que o padrão usa um ponto (
.
) antes da ID de região.
Para obter mais detalhes sobre a criação de pontos de extremidade de gateway, consulte Pontos de extremidade VPC de gateway.
Conexão com o Snowflake¶
Antes de se conectar ao Snowflake, você pode opcionalmente aproveitar o SnowCD (ferramenta de diagnóstico da conectividade do Snowflake) 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.
Observe que se você quiser se conectar à Snowsight via AWS PrivateLink, siga as instruções na documentação do Snowsight.
Bloqueio do acesso público — Opcional¶
Após testar a conectividade privada ao Snowflake usando o AWS PrivateLink, você pode opcionalmente 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 detalhes, consulte Controle do tráfego de rede com políticas de rede.
Configuração de seus clientes Snowflake¶
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 aproveitem o cache do servidor OCSP, certifique-se de estar usando as seguintes versões de cliente:
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 a porta 80
, razão pela qual você foi instruído em Criação e configuração de um ponto de extremidade VPC (VPCE) a configurar seu grupo de segurança AWS PrivateLink VPCE para aceitar essa porta juntamente com a porta 443
(necessária para todo o outro tráfego do Snowflake).
Especificação do nome de host para clientes Snowflake¶
Cada cliente Snowflake requer um nome de host para se conectar à sua conta Snowflake.
O nome de host é o mesmo que o nome de host especificado no(s) registro(s) CNAME em Configuração de sua rede VPC.
Esta etapa não é aplicável 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 de host difere de acordo com o cliente:
Para o conector Spark e os drivers ODBC e JDBC, especifique o nome todo de host.
Para todos os outros clientes, não especifique o nome de host completo.
Em vez disso, especifique o identificador da conta com o
privatelink
segmento (isto é,<identificador_de_conta>.privatelink
) que o Snowflake concatena comsnowflakecomputing.com
para construir o nome de host dinamicamente.
Para obter mais detalhes sobre como especificar o nome da conta ou nome de 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.
Como usar a 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.
Para obter mais detalhes, consulte Replicação de banco de dados e criptografia.
Solução de problemas¶
Observe os seguintes artigos da Comunidade Snowflake: