Points de terminaison d’interface AWS VPC 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 d’interface AWS VPC.

Dans ce chapitre :

Vue d’ensemble

Les points de terminaison d’interface AWS VPC et AWS PrivateLink pour Amazon S3 peuvent être combinés pour fournir une connectivité sécurisée aux zones de préparation internes de 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 AWS et non l’Internet public.

Avant la prise en charge des points de terminaison d’interface VPC par AWS pour accéder aux zones de préparation internes, il était nécessaire de créer une ferme de proxy dans l’AWS VPC pour faciliter l’accès sécurisé aux zones de préparation internes Snowflake. Avec la prise en charge des points de terminaison d’interface VPC 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 AWS privé. Le diagramme suivant résume cette nouvelle prise en charge :

Connect to internal stage using AWS PrivateLink for S3

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é au point n°5.

  • Pour se connecter à une zone de préparation interne Snowflake, les utilisateurs sur site se connectent à un point de terminaison d’interface, point n°6, et utilise ensuite AWS PrivateLink pour que Amazon S3 se connecte à la zone de préparation interne Snowflake comme illustré au point n 7.

Il y a un seul compartiment Amazon S3 par déploiement de zone de préparation interne. Un préfixe dans le compartiment Amazon S3 de zone de préparation interne est utilisé pour organiser les données dans chaque compte Snowflake. Les URLs des points de terminaison du compartiment Amazon S3 sont différents selon que la connexion au compartiment utilise une connectivité privée (c’est-à-dire AWS PrivateLink pour S3).

URL du point de terminaison global Amazon S3 public

<nom_compartiment>.s3.region.amazonaws.com/prefix

URL du point de terminaison Amazon S3 privé

<vpceID>.s3.<région>.vpce.amazonaws.com/prefix

Avantages

L’implémentation de points de terminaison d’interface VPC pour accéder à des 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’AWS VPC 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

Pour les limitations de AWS PrivateLink, consultez la documentation AWS.

Prise en main

Avant de configurer AWS et Snowflake pour permettre aux requêtes d’accéder à une zone de préparation interne de Snowflake via AWS PrivateLink, vous devez :

Conditions préalables

  • Définissez le paramètre ENABLE_INTERNAL_STAGES_PRIVATELINK pour activer la prise en charge de la connexion à une zone de préparation interne via AWS PrivateLink. Pour les deux stratégies de mise en œuvre présentées dans cette rubrique, l’administrateur de compte doit exécuter :

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    
    Copy
  • AWS PrivateLink pour S3.

    Important

    AWS PrivateLink pour S3 est un service AWS qui doit être activé dans votre environnement Cloud.

    Pour obtenir de l’aide sur la configuration et la mise en œuvre de ce service, contactez votre administrateur AWS interne.

  • Mettez à jour la liste des autorisations du pare-feu comme suit :

  • Pour les clients us-east-1 seulement : si vous utilisez l’un des clients Snowflake suivants pour vous connecter à Snowflake, veuillez effectuer une mise à niveau vers la version du client comme suit :

    • Pilote JDBC 3.13.3 (ou supérieur)

    • ilote ODBC 2.23.2 (ou supérieur)

    • Connecteur Python pour Snowflake : 2.5.1 (ou supérieur)

    • SnowSQL : 1.2.17 (ou supérieur)

      • Mettez à niveau SnowSQL avant d’utiliser cette fonction. Pour plus d’informations, voir Installation de SnowSQL.

      • Notez que si vous utilisez l’option SnowSQL --noup, la mise à niveau automatique SnowSQL est désactivée et une nouvelle version SnowSQL ne peut être téléchargée. Pour la mise à niveau, désactivez l’option --noup et réactivez-la une fois la mise à niveau terminée.

Choix d’une stratégie de mise en œuvre

Le choix de la bonne stratégie de mise en œuvre dépend de la question de savoir si votre organisation utilise AWS PrivateLink pour accéder à une seule zone de préparation interne ou à plusieurs zones de préparation internes.

Accès à une zone de préparation interne avec un point de terminaison d’interface

La stratégie de mise en œuvre suivante est recommandée lorsque votre organisation accède à la zone de préparation interne d’un seul unique. Si vous accédez à plusieurs zones de préparation internes à partir de votre VPC, consultez Accès à des zones de préparation internes avec des points de terminaison d’interface dédiés.

Pour configurer un point de terminaison d’interface VPC pour accéder à une zone de préparation interne 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 AWS.

  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.

Procédure

Exécutez les étapes suivantes pour configurer et implémenter l’accès sécurisé à une zone de préparation interne Snowflake par le biais de points de terminaison VPC :

  1. En tant qu’administrateur de compte Snowflake, exécutez les instructions suivantes dans votre compte Snowflake et enregistrez la valeur définie par la clé privatelink_internal_stage. Notez que le nom du compartiment Amazon S3 est défini dans le premier segment de l’URL lorsqu’il est lu de gauche à droite. Pour plus d’informations, voir ENABLE_INTERNAL_STAGES_PRIVATELINK et 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())));
    
    Copy
  2. En tant qu’administrateur AWS, créez un point de terminaison VPC pour AWS PrivateLink pour S3 en utilisant la console AWS. Enregistrez le nom DNS VPCE à utiliser à l’étape suivante ; n’enregistrez pas de noms de zones DNS VPCE.

    Le nom DNS VPCE peut être trouvé en décrivant un point de terminaison d’interface une fois le point de terminaison créé.

    Dans cet exemple, un caractère générique (c’est-à-dire *) est répertorié comme le caractère de tête du nom DNS VPCE. Remplacez le caractère générique de tête par le nom du compartiment Amazon S3 de l’étape précédente. Par exemple :

    Remplacer

    *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

    Avec

    <nom_compartiment>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  3. En tant qu’administrateur réseau, mettez à jour les paramètres DNS pour résoudre l’URL suivante :

    <nom_compartiment>.s3.<région>.amazonaws.com au nom DNS VPCE après que le caractère générique de tête soit remplacé par le nom du compartiment Amazon S3.

    Dans cet exemple, résolvez <nom_du_compartiment>.s3.<région>.amazonaws.com en <nom_du_compartiment>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com.

    Astuce

    • N’utilisez pas de caractères de remplacement (c’est-à-dire *) avec le mappage DNS en raison de l’impact possible de l’accès à d’autres compartiments Amazon S3 en dehors de Snowflake.

    • Utilisez un compte Snowflake distinct pour les tests et configurez une zone DNS hébergée privée dans un VPC 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 distinct, 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 la zone hébergée privée AWS dans le VPC où les réglages du DNS sont effectués. S’il y a des applications clientes à la fois dans le VPC et sur site, utilisez AWS Transit Gateway.

    • 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 <bucket_name>.s3.<region>.amazonaws.com
      
      Copy
  4. Pour les comptes Snowflake en us-east-1, vérifiez que vos clients Snowflake sont sur leurs dernières versions.

Accès à des zones de préparation internes avec des points de terminaison d’interface dédiés

La stratégie de mise en œuvre suivante est recommandée lorsque votre organisation accède aux zones de préparation internes de plusieurs comptes.

Le paramètre S3_STAGE_VPCE_DNS_NAME permet à des utilisateurs d’associer un compte Snowflake au nom DNS d’un point de terminaison d’interface Amazon S3. Cela permet aux organisations avec plusieurs comptes Snowflake dans un déploiement AWS d’associer chaque zone de préparation interne à un point de terminaison d’interface différent. Lorsque chaque zone de préparation interne possède son propre point de terminaison d’interface, le trafic réseau vers une zone de préparation interne spécifique est isolé du trafic réseau vers d’autres zones de préparation internes.

Avant de continuer, assurez-vous que vous avez respecté les conditions préalables.

Avantages

La stratégie dans laquelle une zone de préparation interne au sein d’un déploiement AWS dispose d’un point de terminaison d’interface Amazon S3 présente les avantages suivants :

Sécurité

Chaque compte peut avoir une stratégie de sécurité différente parce que les points de terminaison d’interface peuvent avoir des configurations de sécurité différentes.

Modèles de rétrofacturation

Les entreprises peuvent isoler le trafic réseau en fonction du type de compte (par exemple, production ou développement) et attribuer les coûts associés aux données qui transitent par un point de terminaison au compte approprié.

Gestion des DNS

Le nom DNS d’un point de terminaison de l’interface Amazon S3 est un nom unique à l’échelle globale qui localise le point de terminaison spécifique dans une région spécifique. AWS enregistre automatiquement ce nom DNS dans son service DNS public, ce qui signifie qu’il peut être résolu publiquement. Pour ces raisons, un administrateur n’a pas besoin d’effectuer une configuration DNS supplémentaire pour acheminer le trafic via un point de terminaison d’interface Amazon S3 vers une zone de préparation interne. Par exemple, l’administrateur n’a pas besoin de configurer une zone hébergée privée (PHZ) lors de la configuration du service DNS Amazon Route 53 ou d’enregistrer un nom DNS pour pointer vers un point de terminaison.

Configuration

La stratégie d’isolation du réseau comprend les éléments suivants :

  1. Dans AWS, un administrateur crée un nouveau point de terminaison d’interface Amazon S3 pour chaque compte Snowflake de l’organisation. Par exemple, si une organisation dispose de deux comptes dans le déploiement de Snowflake, l’administrateur crée deux points de terminaison d’interface.

  2. Dans Snowflake, un administrateur utilise le paramètre S3_STAGE_VPCE_DNS_NAME pour associer chaque compte Snowflake au nom DNS du point de terminaison d’interface dédié. Tout le trafic vers la zone de préparation interne du compte passe par ce point de terminaison d’interface.

Configuration d’AWS

Dans votre VPC en tant qu’administrateur AWS :

  1. Créez un point de terminaison d’interface Amazon S3 distinct pour chacun de vos comptes Snowflake.

  2. Pour chacun de ces points de terminaison, utilisez la console de gestion AWS VPC pour :

    1. Ouvrir le point de terminaison pour visualiser ses Details.

    2. Recherchez le champ DNS Names et copiez le nom DNS à portée régionale. Le paramètre S3_STAGE_VPCE_DNS_NAME de Snowflake sera défini sur cette valeur.

      Le format du nom DNS de la région ressemble à *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com. Bien que AWS fournisse également un nom DNS de zone de disponibilité, Snowflake recommande le nom DNS à l’échelle de la région, car il offre une haute disponibilité avec des capacités de basculement.

Configuration de Snowflake

Une fois que l’administrateur AWS a créé le point de terminaison de l’interface pour la zone de préparation interne d’un compte Snowflake, l’administrateur Snowflake peut utiliser le paramètre S3_STAGE_VPCE_DNS_NAME pour associer le nom DNS de ce point de terminaison au compte.

Le paramètre S3_STAGE_VPCE_DNS_NAME doit être défini sur le nom DNS à l’échelle de la région. Nom du point de terminaison d’interface associé à une zone de préparation interne spécifique. Le format standard commence par un astérisque (*) et se termine par vpce.amazonaws.com (par exemple, *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com).

Par exemple, l’administrateur de compte peut exécuter la procédure suivante pour associer un point de terminaison au compte actuel :

alter account set S3_STAGE_VPCE_DNS_NAME='*.vpce-sd98fs0d9f8g.s3.us-west2.vpce.amazonaws.com';
Copy

Valeur DNS finale

Le nom DNS final associé à un compte a la forme suivante : <nom_compartiment>.bucket.vpce-<vpceid>.s3.<région>.vpce.amazonaws.com

Où :

  • <nom_compartiment> est le nom du compartiment Amazon S3 de la zone de préparation interne.

  • <vpceid> est l’identificateur unique du point de terminaison d’interface Amazon S3 associé au compte.

  • <région> est la région Cloud qui héberge votre compte Snowflake.

Le nom DNS final apparaît dans les journaux pour chaque pilote qui se connecte à la zone de préparation interne.