Fixação de pontos de extremidade de conectividade privada para tráfego de entrada¶
Para contas Snowflake no Amazon Web Services (AWS) e Microsoft Azure (Azure), é possível fixar (especificar, registrar e mapear) pontos de extremidade de conectividade privada à sua conta. Ao fixar pontos de extremidade privados em sua conta, o Snowflake garante que o tráfego de entrada originado dos pontos de extremidade fixados vá apenas para a conta que os fixou. A Snowflake recomenda o uso de pontos de extremidade fixados, políticas de redes e regras de rede para fortalecer sua postura de segurança, reduzindo a superfície de ataque da rede à sua conta Snowflake.
Dica
A fixação permite que apenas pontos de extremidade privados autorizados sejam usados para enviar tráfego da rede do cliente para uma conta Snowflake específica. Se quiser restringir o acesso de entrada às contas Snowflake a partir de listas específicas de IPs e IDs/LinkIDs de VPCE, use as políticas de rede e regras de rede.
O Snowflake aplica uma verificação de fixação de ponto de extremidade privado no ponto de entrada para cada solicitação recebida por meio de conectividade privada. Esta verificação compara duas informações importantes:
O ID do ponto de extremidade fornecido no cabeçalho da solicitação.
A conta que fixou o ponto de extremidade, conforme registrado nos metadados Snowflake.
Se esses corresponderem, ou seja, se a solicitação for originada da conta que registrou o ponto de extremidade, o Snowflake permitirá a conexão. Caso contrário, o Snowflake bloqueia a conexão.
Por exemplo:

Ponto de extremidade privado fixado |
Conta Snowflake que fixou o ponto de extremidade privado |
Conta Snowflake de destino da solicitação |
Decisão de verificação de fixação do Snowflake |
---|---|---|---|
PE1 |
A1 |
A1 |
ALLOW |
PE1 |
A1 |
A2 |
DENY |
PE2 |
A2 |
A1 |
DENY |
PE2 |
A2 |
A2 |
ALLOW |
Pré-requisitos¶
Antes de fixar um ponto de extremidade privado, é necessário:
Configure um link privado para sua conta Snowflake no AWS ou Azure.
Limite o escopo do token de acesso que você usa para registrar um ponto de extremidade na sua conta Snowflake.
Para obter mais informações sobre a configuração de links privados, consulte AWS PrivateLink ou Azure Private Link.
Gerenciamento da aplicação com o argumento de tempo de atraso¶
Após configurar os links privados, você chama a função do sistema SYSTEM$REGISTER_PRIVATELINK_ENDPOINT para registrar um ponto de extremidade de conectividade privada na sua conta Snowflake. Nessa chamada de função, é possível opcionalmente especificar um tempo de atraso. O tempo de atraso é o número de minutos a esperar antes de impor o registro do ponto de extremidade privado. O valor do tempo de atraso ajuda a evitar que você se bloqueie acidentalmente de acessar o Snowflake ao registrar um novo ponto de extremidade privado. O tempo máximo de atraso é de 1440 minutos (24 horas) e o valor padrão é 60 minutos.
O ponto de extremidade privado que você registra para sua conta Snowflake também pode ser registrado para outras contas Snowflake. Por exemplo, você pode ter três contas Snowflake e deseja garantir que a conexão com cada conta Snowflake passe apenas por um ponto de extremidade privado registrado. Ao definir o argumento de tempo de atraso como 60 minutos, você tem tempo suficiente para registrar o ponto de extremidade de conectividade privada com cada conta Snowflake.
No entanto, ao registrar um ponto de extremidade de conectividade privada e especificar um tempo de atraso, é necessário estar atento ao carimbo de data/hora local da primeira conta em que você chamar a função do sistema. O tempo de aplicação é baseado no carimbo de data/hora local da primeira conta quando você chama a função do sistema mais qualquer tempo de atraso especificado, em relação a um ponto de extremidade específico de conectividade privada.
Por exemplo, considere a fixação de um único ponto de extremidade de conectividade privada com três contas no mesmo fuso horário:
Se você chamar a função do sistema em
account1
às 10:00 AM e especificar um tempo de atraso de 60 minutos, o tempo de execução será 11:00 AM.Se você chamar a função do sistema em
account2
às 10:30 AM, a hora de execução será 11:00 AM.Se você chamar a função do sistema em
account3
às 11:01 AM, o tempo de aplicação será imediato (agora).
Dica
Armazene o carimbo de data/hora de quando você registrou o ponto de extremidade privado na primeira conta. Mantenha um registro das contas fixadas em um determinado ponto de extremidade privado.
Se você prevê o registro de várias contas e o tempo de atraso de 1440 minutos não for suficiente, entre em contato com o suporte Snowflake.
Gerenciamento do escopo do token de acesso no Microsoft Azure¶
Antes de fixar um ponto de extremidade privado em sua conta Snowflake no Azure, é necessário limitar o escopo do token de acesso que passa para a função do sistema SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. Exigir que o autor da chamada faça o escopo do token de acesso ao ponto de extremidade privado ajuda o Snowflake a autorizar o acesso do chamador ao ponto de extremidade. Isso significa que o token só é válido para o ponto de extremidade privado e para a conta Snowflake em que você chama a função do sistema.
Importante
Não use o token usado na função do sistema SYSTEM$AUTHORIZE_PRIVATELINK. As etapas a seguir geram um token exclusivo para SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Para limitar o escopo do token de acesso para seu ponto de extremidade privado no Azure, execute as seguintes etapas em sua conta Microsoft Azure:
Crie uma definição de função personalizada de assinatura para uma função nomeada
snowflake-pep-role
e substitua o espaço reservadosubscription_id
pelo ID de assinatura.az role definition create --role-definition '{"Name":"snowflake-pep-role","Description": "To generate advanced proof of access token for Snowflake private endpoint pinning","Actions": ["Microsoft.Network/privateEndpoints/read"],"AssignableScopes":["/subscriptions/<subscription_id>"]}'
O ID de assinatura deve corresponder à assinatura em que existe o ponto de extremidade privado. Você só precisa criar a definição de função uma vez para sua assinatura.
Crie a atribuição de função e atribua a função
snowflake-pep-role
e o escopo do ponto de extremidade privado a um usuário (ou grupo). Substitua os espaços reservados parauser
eprivate_endpoint_resource_id
.az role assignment create --assignee <user> --role snowflake-pep-role --scope <private_endpoint_resource_id>
Gere o token de acesso para ser usado com a função de sistema SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. Substitua o espaço reservado
subscription_id
pelo ID de sua assinatura.az account get-access-token --subscription <subscription_id>
Gerenciamento do escopo do token de acesso no Amazon Web Services¶
Antes de fixar um ponto de extremidade privado em sua conta Snowflake no AWS, é necessário limitar o escopo do token de acesso que é passado para a função do sistema SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. Exigir que o chamador limite o escopo do token de acesso ao ponto de extremidade privado ajuda o Snowflake a autorizar o acesso do chamador ao ponto de extremidade. Isso significa que o token só é válido para o ponto de extremidade privado e para a conta Snowflake em que você chama a função do sistema.
Importante
Não use o token usado na função do sistema SYSTEM$AUTHORIZE_PRIVATELINK. As etapas a seguir geram um token exclusivo para SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Para limitar o escopo do token de acesso de seu ponto de extremidade privado no AWS, gere um token federado, conforme mostrado no exemplo a seguir:
aws sts get-federation-token --name snowflake --policy
'{ "Version": "2012-10-17", "Statement":
[ {
"Effect": "Allow", "Action": ["ec2:DescribeVpcEndpoints"],
"Resource": ["*"] }
] }'
Exemplo¶
Como exemplo representativo, registre um ponto de extremidade para rotear sua conexão com o serviço Snowflake.
Configure o AWS PrivateLink ou Azure Private Link para sua conta Snowflake. Se você já tiver este serviço configurado, pule para a próxima etapa.
Faça login no Snowflake usando a Internet pública, que é o URL que você usa e que não contém um segmento
privatelink
no URL.Chame a função do sistema SYSTEM$REGISTER_PRIVATELINK_ENDPOINT para registrar o ponto de extremidade da VPC em sua conta Snowflake. Os argumentos de
token
contêm valores truncados e a unidade de tempo de atraso é minutos:AWS
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( 'vpce-0c1...', '123.....', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "alD...", "SessionToken": "IQo...", "Expiration": "2024-12-10T08:20:20+00:00" }, "FederatedUser": { "FederatedUserId": "0123...:snowflake", "Arn": "arn:aws:sts::174...:federated-user/snowflake" }, "PackedPolicySize": 9, }', 120 );
Azure
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( '123....', '/subscriptions/0cc51670-.../resourceGroups/dbsec_test_rg/providers/Microsoft.Network/ privateEndpoints/...', 'eyJ...', 120 );
#. Confirm the private connectivity endpoint mapping by calling the SYSTEM$GET_PRIVATELINK_ENDPOINT_REGISTRATIONS system function.
É possível cancelar o registro do ponto de extremidade de conectividade privada da sua conta Snowflake chamando a função do sistema SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT.
Importante
Se você registrar um ponto de extremidade de VPC ou um ponto de extremidade privado no Snowflake e excluir o ponto de extremidade em sua VPC ou VNet, deverá chamar a função de sistema SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT em sua conta Snowflake para cancelar o registro do ponto de extremidade. Caso contrário, sua conexão com o serviço Snowflake não poderá usar conectividade privada, mas sim a Internet pública.