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:

Verificação do acesso autorizado para o tráfego de entrada por meio de pontos de extremidade de conectividade privada fixados

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:

  1. Crie uma definição de função personalizada de assinatura para uma função nomeada snowflake-pep-role e substitua o espaço reservado subscription_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>"]}'
    
    Copy

    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.

  2. 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 para user e private_endpoint_resource_id.

    az role assignment create --assignee <user> --role snowflake-pep-role --scope <private_endpoint_resource_id>
    
    Copy
  3. 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>
    
    Copy

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": ["*"] }
  ] }'
Copy

Exemplo

Como exemplo representativo, registre um ponto de extremidade para rotear sua conexão com o serviço Snowflake.

  1. 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.

  2. 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.

  3. 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
      );
    
    Copy

    Azure

    SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT(
      '123....',
      '/subscriptions/0cc51670-.../resourceGroups/dbsec_test_rg/providers/Microsoft.Network/
      privateEndpoints/...',
      'eyJ...',
      120
    );
    
    Copy

#. 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.