AWS PrivateLink e Snowflake¶
This topic describes how to configure AWS PrivateLink to directly connect your Snowflake account to one or more AWS Virtual Private Clouds (VPCs).
Neste tópico:
AWS PrivateLink: Overview¶
AWS PrivateLink is an AWS service for creating private VPC endpoints that allow direct, secure connectivity between your AWS VPCs and the Snowflake VPC without traversing the public internet. AWS PrivateLink connectivity supports VPC endpoint services and AWS VPCs that are located in the same or in different AWS regions. Cross-region connectivity for AWS PrivateLink allows you to use a custom endpoint service to connect a Snowflake account in a region that is different from your AWS VPC region. Cross-region connectivity isn’t currently supported for any platform as a service (PaaS) services, such as Amazon Simple Storage Service (Amazon S3) or key management service (KMS).
Para mais informações, consulte a página do blog da AWS, Introducing Cross-Region Connectivity for AWS PrivateLink.
When writing external functions, you can also use AWS PrivateLink with private endpoints.
If you have an on-premises environment, such as a non-hosted data center, you can use AWS Direct Connect with AWS PrivateLink to connect all your virtual and physical environments in a single, private network.
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.
Enable AWS PrivateLink¶
Nota
The self-service enablement process in this section doesn’t currently support authorizing an AWS account identifier from a managed cloud service or a third-party vendor.
To authorize an AWS account identifier for this use case, please retrieve the AWS account identifier from the vendor, and then contact Snowflake Support.
Para habilitar o AWS PrivateLink para sua conta Snowflake, complete as seguintes etapas:
Gere um token federado e salve a saída.
To generate a token, run the AWS CLI STS command on the command line.
get-federation-tokenrequires either an identity and access management user in AWS or the AWS account root user. For details, refer to the AWS documentation.Importante
The federated token expires after 12 hours. If you call any of the system functions to authorize, verify, or disable your Snowflake account to use AWS PrivateLink and the token has expired, regenerate the token by running the AWS CLI STS command again.
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.From your generated token, extract the value of the
"FederatedUserId"field. For example, if your token contains the following values:{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
Extract
185.... In the next step, you provide this 12-digit number as theaws_idargument for the SYSTEM$AUTHORIZE_PRIVATELINK function.
Using the ACCOUNTADMIN Snowflake system role, call the SYSTEM$AUTHORIZE_PRIVATELINK function to authorize (enable) AWS PrivateLink for your Snowflake account:
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 }' );
To verify your configuration, call the SYSTEM$GET_PRIVATELINK function in your Snowflake account on AWS. This function uses the same argument values for
'aws_id'and'federated_token'that were used to authorize your Snowflake account.SYSTEM$GET_PRIVATELINK returns
Account is authorized for PrivateLink.for a successful authorization.Optional: If you need to disable AWS PrivateLink in your Snowflake account, call the SYSTEM$REVOKE_PRIVATELINK function by using the same argument values for
'aws_id'and'federated_token'.
To further harden your security posture, Snowflake recommends pinning private endpoints for your Snowflake account. For more information, see Fixação de pontos de extremidade de conectividade privada para tráfego de entrada.
Configure your AWS VPC environment¶
Atenção
This section covers only the Snowflake-specific details for configuring your VPC environment.
Snowflake isn’t responsible for the actual configuration of the required AWS VPC endpoints, security group rules, and Domain Name System (DNS) records. If you encounter issues with any of these configuration tasks, please contact AWS Support.
Create and configure your AWS VPC endpoint¶
To create and configure a VPC endpoint in your AWS VPC environment, complete the following steps:
In your Snowflake account, use the ACCOUNTADMIN system role to call the SYSTEM$GET_PRIVATELINK_CONFIG function, and then record the
privatelink-vpce-idvalue.In your AWS environment, create a VPC endpoint by using the
privatelink-vpce-idvalue from the previous step.Nota
Se a região Snowflake do ponto de extremidade VPC for diferente da região da VPC da AWS, você deve 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.
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).
For more information, see the following topics in the AWS documentation:
Configuração de sua rede VPC¶
To access Snowflake by using an AWS PrivateLink endpoint, you must create Canonical Name (CNAME) records in your DNS to resolve the appropriate endpoint values from the SYSTEM$GET_PRIVATELINK_CONFIG function to the DNS name of your VPC endpoint.
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
The structure of the Online Certificate Status Protocol (OCSP) cache server host name depends on the version of your installed clients, as described in Configure your Snowflake clients:
If you use the listed version or a later version, use the format shown in Configure your Snowflake clients, which enables better DNS resolution when you have multiple Snowflake accounts — for example, dev, test, and production — in the same region. When updating client drivers and using OCSP with PrivateLink, update the firewall rules to allow the OCSP host name.
If you use an earlier client version, then the OCSP cache server host name takes the form
ocsp.region_id.privatelink.snowflakecomputing.comwithout an account identifier.Your DNS record must resolve to private IP addresses within your VPC. If it resolves to public IP addresses, the record isn’t configured correctly.
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. Snowflake clients, such as SnowSQL and JDBC driver, require access to Amazon S3 to perform various runtime operations.
If your AWS VPC network doesn’t allow access to the public internet, you can configure private connectivity to internal stages or more gateway endpoints to the Amazon S3 host names required by the Snowflake clients.
There are three options to configure access to Amazon S3. The first two options avoid the public internet and the third option uses the public internet:
Configure um ponto de extremidade de interface VPC da AWS para estágios internos. Esta opção é recomendada.
Configure an Amazon S3 gateway endpoint. For more information, see the following Attention section.
Don’t configure an interface endpoint or a gateway endpoint. This results in access that uses the public internet.
Atenção
To prevent communications between an Amazon S3 bucket and an AWS VPC with Snowflake from using the public internet, you can set up an Amazon S3 gateway endpoint in the same AWS region as the Amazon S3 bucket. This prevents communications on the public internet because AWS PrivateLink only allows communications between VPCs, and the Amazon S3 bucket isn’t included in the VPC.
You can configure the Amazon S3 gateway endpoint to limit access to specific users, Amazon S3 resources, routes, and subnets; however, Snowflake doesn’t require this configuration. For more information, see Gateway endpoints for Amazon S3.
To limit Amazon S3 gateways to use only Amazon S3 resources for Snowflake, choose one of the following options:
Use the specific Amazon S3 host name addresses that is used by your Snowflake account in your AWS endpoint policies. For the complete list of host names that are used by your account, see SYSTEM$ALLOWLIST.
Use an Amazon S3 host name pattern that matches the Snowflake S3 host names in your AWS endpoint policies. With this option, there are two possible types of connections to Snowflake: VPC-to-VPC or On-Premises-to-VPC.
Based on your connection type, complete the following instructions:
- VPC a VPC:
Ensure that the Amazon S3 gateway endpoint exists. Optionally modify the Amazon S3 gateway endpoint policy to match the specific host name patterns that are shown in the following Amazon S3 Hostnames table.
- No local a VPC:
Define a setup to include the Amazon S3 host name patterns in the firewall or proxy configuration if Amazon S3 traffic isn’t permitted on the public gateway.
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:443None.
Todas as regiões, exceto US East
sfc-*-stage.s3-<id_região>.amazonaws.com:443The pattern uses a hyphen (
-) before the region ID.sfc-*-stage.s3.<id_região>.amazonaws.com:443The pattern uses a period (
.) before the region ID.
For information about creating gateway endpoints, see Gateway VPC endpoints.
Conexão com o Snowflake¶
Before you connect to Snowflake, you can optionally use the Snowflake Connectivity Diagnostic tool (SnowCD) to evaluate the network connection with Snowflake and 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.
If you want to connect to Snowsight through AWS PrivateLink, follow the instructions in the Snowsight documentation.
Block public access — Recommended¶
After you test private connectivity to Snowflake by using AWS PrivateLink, you can optionally block public access to Snowflake. This means that users can access Snowflake only if their connection request originates from an IP address within a particular CIDR block range specified in a Snowflake network policy.
To block public access by using a network policy:
Create a new network policy or edit an existing network policy.
Adicione o intervalo de blocos CIDR para sua organização.
Ative a política de redes para sua conta.
For more information, see Controle do tráfego de rede com políticas de rede.
Configure your Snowflake clients¶
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¶
The Snowflake OCSP cache server mitigates connectivity issues between Snowflake clients and the server. To enable your installed Snowflake clients to use the OCSP server cache, ensure that you use the following client versions:
SnowSQL 1.1.57 or later
Python Connector 1.8.2 or later
JDBC Driver 3.8.3 or later
ODBC Driver 2.19.3 or later
Nota
The Snowflake OCSP cache server listens on port 80, which is why you were instructed in Create and configure your AWS VPC endpoint
to configure your AWS PrivateLink VPCE security group to accept both port 80 and port 443, which is required for all other
Snowflake traffic.
Specify a host name for Snowflake clients¶
Each Snowflake client requires a host name to connect to your Snowflake account.
The host name is the same as the host name that you specified in the CNAME records in Configuração de sua rede VPC.
This step isn’t applicable to access the Snowflake Marketplace.
Por exemplo, para uma conta chamada xy12345:
If the account is in US West, the host name is
xy12345.us-west-2.privatelink.snowflakecomputing.com.If the account is in EU (Frankfurt), the host name is
xy12345.eu-central-1.privatelink.snowflakecomputing.com.
Importante
The method for specifying the host name differs depending on the client:
For the Spark connector and the ODBC and JDBC drivers, specify the entire host name.
For all the other clients, don’t specify the entire host name. Instead, specify the account identifier with the
privatelinksegment, which is<account_identifier>.privatelink. Snowflake concatenates this name withsnowflakecomputing.comto dynamically construct the host name.
For more information about specifying the account name or host name for a Snowflake client, see the documentation for each client.
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: