Points de terminaison de l’interface AWS VPC pour les volumes de stockage gérés par Snowflake

Cette rubrique fournit des concepts et des instructions détaillées pour se connecter à des volumes de stockage gérés par Snowflake via les points de terminaison de l’interface AWS VPC.

Vue d’ensemble

Lorsque vous utilisez un moteur de requêtes externe tel que Apache Spark pour lire ou écrire dans une table Iceberg qui utilise un stockage géré par Snowflake, le moteur de requêtes communique directement avec le volume Iceberg natif hébergé sur Amazon S3. Par défaut, ce trafic peut passer par l’Internet public.

AWS PrivateLink pour Amazon S3 peut être combiné avec les points de terminaison de l’interface VPC pour fournir une connexion sécurisée au volume de stockage géré. Cette configuration garantit que les opérations de lecture et d’écriture de votre moteur de requêtes externe vers le volume Iceberg natif utilisent le réseau AWS interne au lieu de l’Internet public.

Avantages

L’implémentation de points de terminaison de l’interface VPC pour accéder à des volumes de stockage gérés par Snowflake apporte les avantages suivants :

  • Les données ne traversent pas l’Internet public lorsque des moteurs de requêtes externes lisent ou écrivent dans le volume Iceberg géré par Snowflake.

  • 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 du volume.

  • Les administrateurs peuvent implémenter une sécurité et une surveillance cohérentes pour la connexion des moteurs de requêtes au stockage.

Limitations

AWS ne prend pas en charge les points de terminaison d’interface VPC interrégionaux pour le service Amazon S3. Par conséquent, votre point de terminaison de l’interface VPC doit être situé dans la même région que votre compte Snowflake pour fournir une connexion entrante vers votre volume de stockage géré par Snowflake.

La prise en charge interrégionale pour AWS PrivateLink n’est pas disponible dans les régions gouvernementales ni en République populaire de Chine.

Les clients utilisant une région SnowGov pour la conformité à la norme Federal Information Processing Standard (FIPS) doivent savoir que AWS Privatelink pour Amazon S3 ne prend pas en charge les points de terminaison FIPS.

Pour plus d’informations sur les régions AWS dans lesquelles FIPS est appliqué, voir Régions Cloud prises en charge.

Pour plus d’informations sur la recherche des noms de régions pour votre compte, voir Rechercher le nom du fournisseur Cloud de la région de votre compte.

Pour plus d’informations sur les limites d’AWS PrivateLink, consultez la documentation AWS.

Prise en main

Avant de configurer AWS et Snowflake pour permettre aux requêtes d’accéder à un volume de stockage géré par Snowflake via AWS PrivateLink, vous devez remplir les conditions préalables.

Conditions préalables

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

      • À partir de la version 1.3.0, SnowSQL désactive les mises à niveau automatiques par défaut pour éviter les problèmes potentiels pouvant affecter les environnements de production lorsqu’une mise à niveau automatique se produit. Pour effectuer une mise à niveau, vous devez télécharger et installer les nouvelles versions manuellement, de préférence dans un environnement non productif. Snowflake vous recommande de laisser ce paramètre désactivé, mais vous pouvez activer manuellement le comportement de mise à niveau automatique en configurant l’option SnowSQL noup <label-snowsql_enable_auto_upgrade>.

Accès à un volume de stockage géré par Snowflake avec un point de terminaison de l’interface

Pour configurer un point de terminaison de l’interface VPC pour accéder à un volume de stockage géré par Snowflake, les rôles suivants de votre entreprise doivent se coordonner :

  1. L’administrateur du compte Snowflake (c’est-à-dire un utilisateur disposant du rôle système ACCOUNTADMINdans Snowflake).

  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é à un volume de stockage géré par Snowflake par le biais d’un point de terminaison VPC :

  1. En tant qu’administrateur AWS, créez un point de terminaison VPC vers S3 en utilisant la console AWS. Enregistrez le nom VPCE DNS à utiliser à l’étape suivante ; n’enregistrez pas de noms de zones VPCE DNS.

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

    Exemple de nom VPCE DNS : *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  2. Configurez votre moteur de requêtes externe pour utiliser directement le nom VPCE DNS. Remplacez le * dans le nom VPCE DNS par compartiment. Par exemple, dans Apache Spark :

    .config("spark.sql.catalog.<catalog_name>.s3.endpoint",
            "bucket.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com")
    

    Astuce

    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é, de sorte que le test soit isolé et ne perturbe les autres charges de travail.

Blocage de l’accès public

Après avoir configuré les points de terminaison de l’interface VPC pour accéder au volume de stockage géré via AWS PrivateLink, vous pouvez éventuellement restreindre l’accès au volume en utilisant des règles réseau et des politiques réseau.

Conditions préalables

Pour utiliser les règles réseau afin de restreindre l’accès à un volume de stockage géré par Snowflake, l’administrateur du compte doit activer le paramètre ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME :

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME = true;

Création d’une règle de réseau

Créez une règle réseau avec MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME et TYPE = AWSVPCEID pour restreindre l’accès au volume de stockage géré en fonction des identificateurs de points de terminaison VPC :

CREATE NETWORK RULE managed_volume_rule
  TYPE = AWSVPCEID
  VALUE_LIST = ('vpce-123abc3420c1931')
  MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME
  COMMENT = 'Allow access from Horizon and S3 VPC endpoints';

Application d’une politique réseau

Créez une politique réseau qui utilise la règle réseau et appliquez-la au compte :

CREATE NETWORK POLICY managed_volume_policy
  ALLOWED_NETWORK_RULE_LIST = ('managed_volume_rule')
  COMMENT = 'Restrict Snowflake-managed storage volume access to specific VPC endpoints';

ALTER ACCOUNT SET NETWORK_POLICY = managed_volume_policy;