Points de terminaison privés Azure pour les zones de préparation internes

Cette rubrique fournit des concepts ainsi que des instructions détaillées pour se connecter aux zones de préparation internes de Snowflake par le biais de points de terminaison privés Microsoft Azure.

Dans ce chapitre :

Vue d’ensemble

Les points de terminaison privés Azure et Azure Private Link peuvent être combinés pour fournir une connectivité sécurisée aux zones de préparation internes Snowflake. Cette configuration garantit que les opérations de chargement et de déchargement des données vers des zones de préparation internes Snowflake utilisent le réseau interne Azure et non l’Internet public.

Avant la prise en charge des points de terminaison privés par Microsoft pour accéder aux zones de préparation internes, il était nécessaire de créer une ferme de proxy dans Azure VNet pour faciliter l’accès sécurisé aux zones de préparation internes Snowflake. Avec la prise en charge des points de terminaison privés pour les zones de préparation internes Snowflake, les utilisateurs et les applications client peuvent désormais y accéder par le biais du réseau privé Azure. Le diagramme suivant résume cette nouvelle prise en charge :

Connect to internal stage using Azure Private Link

Remarques concernant les chiffres dans le diagramme BEFORE :

  • Les utilisateurs ont deux options pour se connecter à une zone de préparation interne Snowflake :

    • L’option A permet une connexion sur site directe à la zone de préparation interne, comme illustré par le chiffre 1.

    • L’option B permet une connexion à la zone de préparation interne par le biais d’une ferme de proxy, comme illustré par les chiffres 2 et 3.

  • En choisissant une ferme de proxy, les utilisateurs peuvent également se connecter directement à Snowflake comme illustré par le chiffre 4.

Remarques concernant les chiffres dans le diagramme AFTER :

  • Les mises à jour de cette fonctionnalité suppriment la nécessité de se connecter à Snowflake ou à une zone de préparation interne Snowflake par le biais d’une ferme de proxy.

  • Un utilisateur sur site peut se connecter directement à Snowflake comme illustré par le chiffre 5.

  • Pour se connecter à une zone de préparation interne Snowflake, l’utilisateur sur site se connecte à un point de terminaison privé, chiffre 6, et utilise ensuite Azure Private Link pour se connecter à la zone de préparation interne Snowflake comme illustré par le chiffre 7.

Dans Azure, chaque compte Snowflake possède un compte de stockage dédié à utiliser comme zone de préparation interne. Les URIs de compte de stockage varient en fonction de si la connexion au compte de stockage utilise une connectivité privée ou non (par exemple Azure Private Link). L’URL de connectivité privée inclut un segment privatelink dans l’URL.

URI de compte de stockage public

<nom_compte_de_stockage>.blob.core.windows.net

Connectivité privée URI de compte de stockage

<nom_compte_de_stockage>.privatelink.blob.core.windows.net

Avantages

L’implémentation de points de terminaison privés pour accéder aux zones de préparation internes Snowflake apporte les avantages suivants :

  • Les données de la zone de préparation interne ne transitent pas par l’Internet public.

  • Les applications client et SaaS, par exemple Microsoft PowerBI, exécutées en dehors d’Azure VNet peuvent se connecter à Snowflake de manière sécurisée.

  • Les administrateurs n’ont pas besoin de modifier les paramètres de pare-feu pour accéder aux données de la zone de préparation interne.

  • Les administrateurs peuvent assurer une sécurité et une surveillance cohérentes concernant la connexion des utilisateurs aux comptes de stockage.

Limites

  • Un seul point de terminaison privé peut communiquer avec un seul point de terminaison de service. Par conséquent, configurez un point de terminaison privé pour chaque compte Snowflake à utiliser pour la connectivité privée aux zones de préparation internes. Notez qu’il s’agit d’une limite de Microsoft Azure et non de Snowflake.

Configuration de points de terminaison privés pour accéder aux zones de préparation internes Snowflake

Pour configurer des points de terminaison privés pour accéder aux zones de préparation internes Snowflake, il est nécessaire d’être assisté par les trois rôles suivants dans votre organisation :

  1. L’administrateur de compte Snowflake (par exemple un utilisateur avec le rôle système ACCOUNTADMIN).

  2. L’administrateur Microsoft Azure.

  3. L’administrateur réseau.

Selon l’organisation, il peut être nécessaire de coordonner les efforts de configuration avec plus d’une personne ou équipe pour implémenter les étapes de configuration suivantes.

Exécutez les étapes suivantes pour configurer et implémenter l’accès sécurisé aux zones de préparation internes Snowflake par le biais de points de terminaison privés Azure :

  1. En tant qu’administrateur de compte Snowflake, exécutez les instructions suivantes dans votre compte Snowflake et enregistrez le ResourceID du compte de stockage de la zone de préparation interne défini par la clé privatelink_internal_stage. Pour plus d’informations, voir ENABLE_INTERNAL_STAGES_PRIVATELINK.

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    select system$get_privatelink_config();
    
  2. En tant qu’administrateur Azure, créez un point de terminaison privé par le biais du portail Azure.

    Enregistrez la valeur privateEndpointResourceID, comme illustré dans l’onglet Properties dans l’interface des détails du point de terminaison privé, que vous utiliserez dans la prochaine étape.

    Vérifiez que la valeur Target sub-resource est définie sur blob.

  3. En tant qu’administrateur Snowflake, exécutez l’instruction suivante à l’aide de la valeur de chaîne privateEndpointResourceID en tant qu’argument de fonction. Cette étape autorise l’accès à la zone de préparation interne Snowflake par le biais du point de terminaison privé.

    use role accountadmin;
    select system$authorize_stage_privatelink_access('privateEndpointResourceID');
    
  4. En tant qu’administrateur réseau, mettez à jour les paramètres DNS pour résoudre les URLs comme suit :

    <nom_compte_de_stockage>.blob.core.windows.net à <nom_compte_de_stockage>.privatelink.blob.core.windows.net

    En cas d’utilisation d’une zone DNS privée dans un VNet Azure, créez l’enregistrement d’alias pour <nom_compte_de_stockage>.privatelink.blob.core.windows.net.

    Pour plus d’informations, consultez Configuration du DNS du point de terminaison privé Azure.

    Astuce

    • Utilisez un compte séparé Snowflake pour les tests et configurez une zone DNS privée dans un VNet de test pour tester la fonctionnalité afin de ne pas perturber les autres charges de travail.

    • Si vous ne pouvez pas utiliser de compte Snowflake séparé, utilisez un utilisateur test pour accéder à Snowflake à partir d’un VPC de test où les modifications DNS sont effectuées.

    • Pour effectuer des tests à partir d’applications sur site, utilisez le transfert de DNS pour rediriger les requêtes vers le DNS privé Azure dans le VNet où les réglages du DNS sont effectués. Exécutez la commande suivante à partir de la machine client pour vérifier que l’adresse IP renvoyée correspond à l’adresse IP privée du compte de stockage :

      dig <storage_account_name>.blob.core.windows.net
      

Dépannage

Les applications Azure accédant aux zones de préparation Snowflake via l’Internet public et utilisant aussi un service DNS privé pour résoudre les noms d’hôte de service ne peuvent pas accéder aux zones de préparation Snowflake si une connexion de point de terminaison privé est établie avec la zone de préparation, comme décrit dans la présente rubrique.

Dès qu’une connexion de point de terminaison privé est créée, Microsoft Azure crée automatiquement un enregistrement CNAME dans le service DNS public qui dirige l’hôte de compte de stockage vers son équivalent Azure Private Link (par exemple .privatelink.core.windows.net). Si une application a configuré une région DNS privée pour le même domaine, alors Microsoft Azure essaie de résoudre l’hôte de compte de stockage en interrogeant le service DNS privé. Si l’entrée du compte de stockage est introuvable dans le service DNS privé, une erreur de connexion survient.

Il existe deux méthodes pour résoudre ce problème :

  1. Supprimez et retirez la région DNS privée de l’application.

  2. Créez un enregistrement CNAME pour le nom d’hôte privé du compte de stockage (par exemple <nom_compte_de_stockage>.privatelink.core.windows.net) dans le service DNS privé et dirigez-le vers le nom d’hôte spécifié par la sortie de cette commande :

    dig CNAME <storage_account_name>.privatelink.core.windows.net