Pontos de extremidade privados do Azure para volumes de armazenamento gerenciados pelo Snowflake

Esse tópico fornece conceitos e instruções detalhadas para conexão com volumes de armazenamento gerenciados pelo Snowflake através de pontos de extremidade privados do Microsoft Azure. Os volumes de armazenamento gerenciados pelo Snowflake são locais para tabelas do Apache Iceberg que usam Snowflake como catálogo.

Visão geral

Quando você usa um mecanismo de consulta externo, como Apache Spark ou Databricks, para ler ou gravar em uma tabela do Iceberg que usa armazenamento gerenciado pelo Snowflake, o mecanismo de consulta se comunica diretamente com o volume nativo do Iceberg hospedado no armazenamento do Azure. Por padrão, esse tráfego pode atravessar a internet pública.

`Pontos de extremidade privados do Azure<https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-overview>`_ e o `Azure Private Link<https://docs.microsoft.com/en-us/azure/private-link/private-link-overview>`_ podem ser combinados para fornecer conectividade segura aos volumes de armazenamento gerenciados pelo Snowflake. Essa configuração garante que as operações de leitura e gravação do seu mecanismo de consulta externo no volume nativo do Iceberg usem a rede interna do Azure, não a Internet pública.

Benefícios

A implementação de pontos de extremidade privados para acessar as volumes de armazenamento gerenciados pelo Snowflake oferece as seguintes vantagens:

  • Os dados não atravessam a Internet pública quando mecanismos de consulta externos leem ou gravam no volume nativo do Iceberg.

  • Os administradores podem garantir segurança e monitoramento consistentes em relação a como os mecanismos de consulta se conectam às contas de armazenamento.

  • Os administradores não precisam modificar as configurações do firewall para acessar os dados do volume de armazenamento.

Limitações

O Microsoft Azure define como um ponto de extremidade privado pode interagir com o Snowflake:

  • Um único ponto de extremidade privado pode se comunicar com um único ponto de extremidade do serviço Snowflake. Você pode ter várias configurações um a um que se conectam ao mesmo volume de armazenamento gerenciado.

  • O número máximo de pontos de extremidade privados na sua conta de armazenamento que podem se conectar a um volume de armazenamento gerenciado pelo Snowflake. Para obter detalhes, consulte Limites de conta de armazenamento padrão.

Configuração de pontos de extremidade privados para acessar volumes de armazenamento gerenciados pelo Snowflake

Para configurar pontos de extremidade privados para acessar as volumes de armazenamento gerenciados pelo Snowflake, é necessário que sua organização tenha as três seguintes funções:

  1. O administrador da conta Snowflake (ou seja, um usuário com a função de sistema ACCOUNTADMIN do Snowflake).

  2. O administrador do Microsoft Azure.

  3. O administrador da rede.

Dependendo da organização, pode ser necessário coordenar os esforços de configuração com mais de uma pessoa ou equipe para implementar as seguintes etapas de configuração.

Complete as seguintes etapas para configurar e implementar o acesso seguro aos volumes de armazenamento gerenciados pelo Snowflake através de pontos de extremidade privados do Azure:

  1. Verifique se sua assinatura Azure está registrada junto ao gerente de recursos do Azure Storage. Esta etapa permite conectar o volume de armazenamento gerenciado a partir de um ponto de extremidade privado.

  2. Como administrador da conta Snowflake, execute os seguintes comandos nela. Registre o ID de recurso da conta do seu volume de armazenamento não failsafe e failsafe gerenciado pelo Snowflake, respectivamente definido pelas chaves privatelink-snowflake-managed-storage-volume-nfs e privatelink-snowflake-managed-storage-volume-fs. Para obter mais informações, consulte ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK e SYSTEM$GET_PRIVATELINK_CONFIG.

    USE ROLE ACCOUNTADMIN;
    ALTER ACCOUNT SET ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK = true;
    SELECT KEY, VALUE FROM TABLE(FLATTEN(input=>PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
    
  3. Como administrador do Azure, crie um ponto de extremidade privado pelo portal Azure para cada um de seus volumes de armazenamento gerenciados pelo Snowflake.

    Veja as propriedades do ponto de extremidade privado e registre o valor do ID do recurso. Você fornecerá esse valor como o argumento da função privateEndpointResourceID na próxima etapa.

    Para obter mais informações, consulte a documentação do Microsoft Azure Private Link.

    Importante

    Antes de prosseguir com a próxima etapa para autorizar o ponto de extremidade privado, você precisa estar ciente do comportamento do DNS do Microsoft Azure quando um ponto de extremidade privado é autorizado em um local de armazenamento pela primeira vez.

    Quando o primeiro ponto de extremidade privado é conectado e autorizado, o Azure cria automaticamente um registro CNAME no DNS público.

    Em circunstâncias normais, a atualização desse DNS não deve afetar a conectividade pública existente com a conta de armazenamento. No entanto, se o seu ambiente já tiver zonas DNS privadas configuradas, a atualização do DNS poderá levar a um comportamento não intencional.

    Para evitar esse problema, a Microsoft recomenda habilitar a opção Fallback to Internet na configuração da zona DNS privada antes de autorizar o primeiro ponto de extremidade privado.

  4. Como administrador do Snowflake, chame a função SYSTEM$AUTHORIZE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS usando o valor privateEndpointResourceID como argumento da função. Esta etapa autoriza o acesso ao volume de armazenamento gerenciado pelo Snowflake por meio do ponto de extremidade privado.

    USE ROLE ACCOUNTADMIN;
    SELECT SYSTEM$AUTHORIZE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
    

    Se necessário, conclua estas etapas para revogar o acesso ao volume de armazenamento gerenciado pelo Snowflake.

  5. Envolva seu administrador da rede para atualizar as configurações de DNS em uma zona de DNS privada. As configurações devem resolver o URL privatelink para os endereços IP privados do ponto de extremidade privado do Azure que se conecta à sua conta de armazenamento do volume gerenciado pelo Snowflake.

    Para obter mais informações, consulte Configuração de DNS dos pontos de extremidade privados do Azure.

    Dica

    • Use uma conta Snowflake separada para testar e configurar uma zona DNS privada em um VNet de teste para examinar o recurso de forma que o teste seja isolado e não afete outras cargas de trabalho.

    • Se não for possível usar uma conta Snowflake separada, use um usuário de teste para acessar o Snowflake a partir de um VNet em que as alterações DNS são feitas.

    • Para testar a partir de aplicativos no local, use o encaminhamento de DNS para encaminhar solicitações para o DNS privado do Azure no VNet onde as configurações de DNS são feitas.

Bloqueando o acesso público

Depois de configurar pontos de extremidade privados para acessar o volume de armazenamento gerenciado usando o Azure Private Link, você pode bloquear solicitações de endereços IP públicos para o volume de armazenamento gerenciado. Depois de bloquear o acesso público, todo o tráfego deverá passar pelo ponto de extremidade privado.

Importante

Confirme se o tráfego que usa conectividade privada está alcançando o volume de armazenamento gerenciado antes de bloquear o acesso público. Bloquear o acesso público sem configurar a conectividade privada pode causar interrupções não intencionais.

Para bloquear todo o tráfego de endereços IP públicos para o volume de armazenamento gerenciado, chame a seguinte função:

SELECT SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS();

A função pode levar alguns minutos para ser concluída.

Bloqueando o acesso público com exceções da lista de permissão de IP

A função SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_WITH_EXCEPTION permite bloquear o acesso público e, ao mesmo tempo, ter uma lista de endereços IP ou blocos CIDR com permissão para alcançar o volume de armazenamento gerenciado.

Bloquear o acesso público enquanto permite endereços IP ou blocos CIDR específicos:

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_WITH_EXCEPTION('1.2.3.4/24, 100.0.0.1');

Como garantir que o acesso público seja bloqueado

Para determinar se endereços IP públicos podem acessar um volume de armazenamento gerenciado pelo Snowflake, chame a função SYSTEM$SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_STATUS.

SELECT SYSTEM$SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_STATUS();

Desbloqueio do acesso público

Para permitir o acesso público a um volume de armazenamento gerenciado pelo Snowflake que foi bloqueado anteriormente, chame a função SYSTEM$UNBLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS.

SELECT SYSTEM$UNBLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS();

Revogação de pontos de extremidade privados para acesso a volumes de armazenamento gerenciados pelo Snowflake

Complete as seguintes etapas para revogar o acesso a volumes de armazenamento gerenciados pelo Snowflake através de pontos de extremidade privados do Microsoft Azure:

  1. Como administrador do Snowflake, confirme se o parâmetro ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK está definido como TRUE. Por exemplo:

    USE ROLE ACCOUNTADMIN;
    SHOW PARAMETERS LIKE 'ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK' IN ACCOUNT;
    
  2. Como administrador do Snowflake, chame a função SYSTEM$REVOKE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS para revogar o acesso ao ponto de extremidade privado e use o mesmo valor privateEndpointResourceID usado para autorizar o acesso.

    USE ROLE ACCOUNTADMIN;
    SELECT SYSTEM$REVOKE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
    
  3. Como administrador do Azure, exclua o ponto de extremidade privado por meio do portal do Azure.

  4. Como administrador de rede, remova os registros de DNS e alias que foram usados para resolver as URLs da conta de armazenamento.