Pontos de extremidade privados do Azure para estágios internos¶
Este tópico fornece conceitos e instruções detalhadas para conexão com áreas de preparação internas do Snowflake através de pontos de extremidade privados do Microsoft Azure.
Neste tópico:
Visão geral¶
Os pontos de extremidade privados do Azure e o Azure Private Link podem ser combinados para fornecer conectividade segura às áreas de preparação internas do Snowflake. Esta configuração garante que as operações de carregamento e descarregamento de dados para as áreas de preparação internas do Snowflake utilizem a rede interna do Azure e não ocorram através da internet pública.
Antes de a Microsoft oferecer suporte a pontos de extremidade privados para acesso a áreas de preparação internas, era necessário criar um farm proxy dentro do Azure VNet para facilitar o acesso seguro às áreas de preparação internas do Snowflake. Com o suporte adicional de pontos de extremidade privados para as áreas de preparação internas do Snowflake, usuários e aplicativos clientes agora podem acessar as áreas de preparação internas do Snowflake através da rede privada Azure. O diagrama a seguir resume este novo suporte:
Observe o seguinte em relação aos números no diagrama BEFORE:
Os usuários têm duas opções para se conectar a um estágio interno do Snowflake:
A opção A permite uma conexão no local diretamente ao estágio interno, como mostra o número 1.
A opção B permite uma conexão com o estágio interno através de um farm proxy, como mostrado pelos números 2 e 3.
Se o farm proxy for usado, os usuários também podem se conectar diretamente ao Snowflake, como indicado pelo número 4.
Observe o seguinte em relação aos números no diagrama AFTER:
Para maior clareza, o diagrama mostra um único ponto de extremidade privado de um Azure VNet apontando para uma única áreas de preparação interna do Snowflake (6 e 7).
Observe que é possível configurar vários pontos de extremidade privados, cada um dentro de um VNet diferente, que apontam para a mesma área de preparação interna do Snowflake.
As atualizações neste recurso eliminam a necessidade de conectar ao Snowflake ou a um estágio interno do Snowflake através de um farm proxy.
Um usuário no local pode se conectar diretamente ao Snowflake, como mostrado no número 5.
Para conectar-se a uma área de preparação interna do Snowflake, o usuário no local se conecta a um ponto de extremidade privado, número 6, e então usa o Azure Private Link para conectar-se à área de preparação interna do Snowflake, como mostrado no número 7.
No Azure, cada conta Snowflake tem uma conta de armazenamento dedicada a ser usada como um estágio interno. Os URIs de conta de armazenamento são diferentes dependendo se a conexão à conta de armazenamento utiliza conectividade privada (ou seja, Azure Private Link). A URL de conectividade privada inclui um segmento privatelink na URL.
- URI da conta de armazenamento público:
<nome_da_conta_de_armazenamento>.blob.core.windows.net- URI da conta de armazenamento de conectividade privada:
<nome_da_conta_de_armazenamento>.privatelink.blob.core.windows.net
Após a configuração de uma conexão de ponto de extremidade privado para a área de preparação interna da sua conta, o Microsoft Azure cria automaticamente um registro CNAME no serviço de DNS público que aponta o host da conta de armazenamento para sua contraparte do Azure Private Link. Essa contraparte é .privatelink.blob.core.windows.net.
Benefícios¶
A implementação de pontos de extremidade privados para acessar as áreas de preparação internas do Snowflake oferece as seguintes vantagens:
Os dados da área de preparação interna não atravessam a Internet pública.
Aplicativos clientes e SaaS, tais como Microsoft PowerBI, que funcionam fora do Azure VNet, podem se conectar ao Snowflake com segurança.
Os administradores não são obrigados a modificar as configurações do firewall para acessar os dados do estágio interno.
Os administradores podem implementar segurança e monitoramento consistentes sobre como os usuários se conectam às contas 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 múltiplas configurações um a um que se conectam ao mesmo estágio interno do Snowflake.
O número máximo de pontos de extremidade privados na sua conta de armazenamento que podem conectar-se a um estágio interno do Snowflake é fixo. Para obter detalhes, consulte Limites de conta de armazenamento padrão.
Configuração de pontos de extremidade privados para acesso aos estágios internos do Snowflake¶
Para configurar pontos de extremidade privados para acessar as áreas de preparação internas do Snowflake, é necessário ter o suporte das três seguintes funções em sua organização:
O administrador da conta Snowflake (ou seja, um usuário com a função de sistema ACCOUNTADMIN do Snowflake).
O administrador do Microsoft Azure.
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 às áreas de preparação internas do Snowflake através de pontos de extremidade privados do Azure:
Verifique se sua assinatura Azure está registrada junto ao gerente de recursos do Azure Storage. Esta etapa permite a conexão com o estágio interno a partir de um ponto de extremidade privado.
Como administrador de conta Snowflake, execute as seguintes instruções em sua conta Snowflake e registre o
ResourceIDda conta de armazenamento da área de preparação interna definida pela chaveprivatelink_internal_stage. Para obter mais informações, consulte ENABLE_INTERNAL_STAGES_PRIVATELINK e SYSTEM$GET_PRIVATELINK_CONFIG.USE ROLE ACCOUNTADMIN; ALTER ACCOUNT SET ENABLE_INTERNAL_STAGES_PRIVATELINK = true; SELECT KEY, VALUE FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
Como administrador do Azure, crie um ponto de extremidade privado através do portal Azure.
Veja as propriedades do ponto de extremidade privado e registre o valor do ID do recurso. Você fornecerá este valor como o argumento da função
privateEndpointResourceIDna próxima etapa.Verifique se o valor Target sub-resource está definido para
blob.Para obter mais informações, consulte a documentação do Microsoft Azure Private Link.
Como administrador do Snowflake, chame a função SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS usando o valor
privateEndpointResourceIDcomo argumento da função. Esta etapa autoriza o acesso à área de preparação interna do Snowflake através do ponto de extremidade privado.USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
Se necessário, complete estas etapas para revogar o acesso ao estágio interno.
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 do blob do PrivateLink
<storage_account_name>.privatelink.blob.core.windows.netpara os endereços IP privados do ponto de extremidade privado do Azure que se conecta à área de preparação interna de sua conta de armazenamento.Para obter mais informações, consulte Configuração de DNS dos pontos de extremidade privados do Azure.
Dica
Use uma conta Snowflake separada para testes e configure uma zona DNS privada em um VNet de teste para testar o recurso de forma que o teste seja isolado e não tenha impacto em suas 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 VPC de teste onde 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. Execute o seguinte comando da máquina cliente para verificar se o endereço IP retornado é o endereço IP privado para a conta de armazenamento:
dig <storage_account_name>.blob.core.windows.net
Bloqueio de acesso público — Recomendado¶
Depois de configurar pontos de extremidade privados para acessar a área de preparação interna por meio do Azure Private Link, você poderá, opcionalmente, bloquear solicitações de endereços IP públicos para a área de preparação interna. Depois de bloquear o acesso público, todo o tráfego deverá passar pelo ponto de extremidade privado.
Controlar o acesso público a uma área de preparação interna do Azure é diferente de controlar o acesso público ao serviço Snowflake. Você usa a função SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS, e não uma política de redes, para bloquear solicitações para o estágio interno. Ao contrário das políticas de redes, esta função não pode bloquear alguns endereços IP públicos enquanto permite outros. A chamada da função SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS bloqueia todos os endereços IP públicos.
Importante
Confirme se o tráfego por meio de conectividade privada está alcançando da área de preparação interna antes de bloquear o acesso público. Bloquear o acesso público sem configurar a conectividade privada pode causar interrupções não intencionais, incluindo interferência com serviços geridos como o Azure Data Factory.
A função SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS impõe suas restrições alterando as configurações Networking da conta de armazenamento do Azure onde o estágio interno está localizado. Estas configurações do Azure são normalmente referidas como «configurações de firewall da conta de armazenamento». A chamada dessa função do sistema Snowflake executa as seguintes ações no Azure:
Define o campo Public network access como Enabled from selected virtual networks and IP addresses.
Adiciona IDs de sub-rede VNet do Snowflake à seção Virtual Networks.
Limpa todos os endereços IP da seção Firewall.
Para bloquear todo o tráfego de endereços IP públicos para a área de preparação interna, chame a seguinte função:
SELECT SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS();
A função pode levar alguns minutos para ser concluída.
Como garantir que o acesso público seja bloqueado¶
Para determinar se endereços IP públicos podem acessar uma área de preparação interna, chame a função SYSTEM$INTERNAL_STAGES_PUBLIC_ACCESS_STATUS.
Se as configurações do Azure estiverem bloqueando todo o tráfego público, a função retornará Public Access to internal stages is blocked. Isso verifica se as configurações não foram alteradas desde que a função BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS$SYSTEM foi chamada.
Se pelo menos alguns endereços IP públicos puderem acessar o estágio interno, a função retornará Public Access to internal stages is unblocked.
Desbloqueio do acesso público¶
Para permitir o acesso público a uma área de preparação interna que foi bloqueado anteriormente, chame a função SYSTEM$UNBLOCK_INTERNAL_STAGES_PUBLIC_ACCESS.
A chamada da função altera as configurações Networking da conta de armazenamento do Azure onde a área de preparação interna está localizada. Ela define o campo Public network access do Azure como Enabled from all networks.
Revogação de pontos de extremidade privados para acesso às áreas de preparação internas do Snowflake¶
Complete as seguintes etapas para revogar o acesso às áreas de preparação internas do Snowflake através de pontos de extremidade privados do Microsoft Azure:
Como administrador do Snowflake, confirme se o parâmetro ENABLE_INTERNAL_STAGES_PRIVATELINK está definido como
TRUE. Por exemplo:USE ROLE ACCOUNTADMIN; SHOW PARAMETERS LIKE 'enable_internal_stages_privatelink' IN ACCOUNT;
Como administrador do Snowflake, chame a função SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS para revogar o acesso ao ponto de extremidade privado e use o mesmo valor
privateEndpointResourceIDque foi usado para autorizar originalmente o acesso ao ponto de extremidade privado.USE ROLE ACCOUNTADMIN; SELECT SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
Como administrador do Azure, exclua o ponto de extremidade privado por meio do portal do Azure.
Como administrador de rede, remova os registros de DNS e alias que foram usados para resolver as URLs da conta de armazenamento.
Neste ponto, o acesso ao ponto de extremidade privado é revogado. O resultado da consulta da chamada da função SYSTEM$GET_PRIVATELINK_CONFIG não deve retornar a chave privatelink_internal_stage e seu valor.
Solução de problemas¶
Aplicativos Azure que acessam as áreas de preparação do Snowflake através da Internet pública e também utilizam um serviço privado DNS para resolver nomes de hosts de serviço não podem acessar as áreas de preparação do Snowflake se for estabelecida uma conexão de ponto de extremidade privado para a área de preparação, conforme descrito neste tópico.
Se algum aplicativo tiver configurado uma região DNS privada para o mesmo domínio, então o Microsoft Azure tenta resolver o host da conta de armazenamento consultando o serviço privado DNS. Se a entrada para a conta de armazenamento não for encontrada no serviço privado DNS, ocorre um erro de conexão.
Para resolver esse problema, use uma destas duas opções:
Remover ou dissociar a região privada DNS do aplicativo.
Criar um registro CNAME para o nome do host privado da conta de armazenamento (ou seja,
<storage_account_name>.privatelink.blob.core.windows.net) no serviço privado DNS e apontá-lo para o nome do host especificado pela saída deste comando:dig CNAME <storage_account_name>.privatelink.blob.core.windows.net