AWS PrivateLink et Snowflake¶
Ce chapitre décrit comment configurer AWS PrivateLink pour connecter directement votre compte Snowflake à un ou plusieurs VPCs AWS.
Notez que AWSPrivateLink n’est pas un service fourni par Snowflake. Il s’agit d’un service AWS que Snowflake prend en charge pour une utilisation avec votre compte Snowflake.
Dans ce chapitre :
Qu’est-ce que AWS PrivateLink ?¶
AWS PrivateLink est un service AWS qui sert à créer des points de terminaison VPC privés, qui permettent une connectivité directe et sécurisée entre vos VPCs AWS et le VPC Snowflake sans passer par l’Internet public. La connectivité est pour les VPCs AWS de la même région AWS.
Pour Écriture de fonctions externes, vous pouvez également utiliser AWS PrivateLink avec des points de terminaison privés.
En outre, si vous disposez d’un environnement sur site (par exemple, un centre de données non hébergé), vous pouvez choisir d’utiliser AWS Direct Connect, conjointement avec AWS PrivateLink, pour connecter tous vos environnements virtuels et physiques dans un réseau unique et privé.
Note
AWS Direct Connect est un service AWS distinct qui doit être mis en œuvre indépendamment d’AWS PrivateLink et n’est pas abordé dans ce chapitre. Pour plus d’informations sur la mise en œuvre de AWS Direct Connect, contactez Amazon.
Activation d’AWS PrivateLink¶
Note
Actuellement, le processus d’activation en libre-service de cette section ne prend pas en charge l’autorisation d’un identificateur de compte AWS provenant d’un service Cloud géré ou d’un fournisseur tiers.
Pour autoriser un identificateur de compte AWS pour ce cas d’utilisation, veuillez récupérer l’identificateur de compte AWS auprès du fournisseur et contacter le support Snowflake.
Pour activer AWS PrivateLink pour votre compte Snowflake, effectuez les étapes suivantes :
Dans votre environnement de ligne de commande, exécutez la commande AWS CLI STS suivante et enregistrez la sortie. La sortie sera utilisée comme valeur pour l’argument
federated_token
dans l’étape suivante.aws sts get-federation-token --name sam
Notez que
get-federation-token
nécessite soit un utilisateur de gestion des identités et des accès dans AWS, soit l’utilisateur root du compte AWS. Pour plus de détails, reportez-vous à la documentation AWS.Extrayez le nombre à 12 chiffres de la valeur
"FederatedUserId"
(tronquée). Par exemple, si votre jeton contient :{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
Extrayez
185...
. Ce nombre à 12 chiffres sera la valeur deaws_id
à l’étape suivante.En tant qu’administrateur de compte Snowflake (c’est-à-dire un utilisateur ayant le rôle système ACCOUNTADMIN), appelez la fonction SYSTEM$AUTHORIZE_PRIVATELINK pour autoriser (c’est-à-dire activer) AWS PrivateLink pour votre compte Snowflake :
select SYSTEM$AUTHORIZE_PRIVATELINK ( '<aws_id>' , '<federated_token>' );
Où :
'aws_id'
L’identificateur à 12 chiffres qui identifie de manière unique votre compte Amazon Web Services (AWS) sous forme de chaîne.
'federated_token'
La valeur du jeton fédéré qui contient les identifiants d’accès pour un utilisateur fédéré sous forme de chaîne.
Par exemple :
use role accountadmin; select SYSTEM$AUTHORIZE_PRIVATELINK ( '185...', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "enw...", "SessionToken": "Fwo...", "Expiration": "2021-01-07T19:06:23+00:00" }, "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }' );
Pour vérifier votre configuration autorisée, appelez la fonction SYSTEM$GET_PRIVATELINK de votre compte Snowflake sur AWS. Cette fonction utilise les mêmes valeurs d’argument pour 'aws_id'
et 'federated_token'
que celles utilisées pour autoriser votre compte Snowflake.
Snowflake renvoie Account is authorized for PrivateLink.
pour une autorisation réussie.
S’il est nécessaire de désactiver AWS PrivateLink dans votre compte Snowflake, appelez la fonction SYSTEM$REVOKE_PRIVATELINK en utilisant les mêmes valeurs d’argument pour 'aws-id'
et 'federated_token'
.
Important
Le federated_token
expire après 12 heures.
Si vous appelez l’une des fonctions système pour autoriser, vérifier ou désactiver votre compte Snowflake afin d’utiliser AWS PrivateLink et que le jeton n’est pas valide, régénérez le jeton en utilisant la commande AWS CLI STS indiquée au début de la procédure de cette section.
Configuration de votre environnement VPC AWS¶
Attention
Cette section ne couvre que les détails spécifiques à Snowflake pour la configuration de votre environnement VPC.
De plus, notez que Snowflake n’est pas responsable de la configuration finale des points de terminaison VPC AWS nécessaires, des règles de groupes de sécurité et des enregistrements DNS. Si vous rencontrez des problèmes avec l’une de ces tâches de configuration, veuillez contacter le support AWS directement.
Créer et configurer un point de terminaison VPC (VPCE)¶
Effectuez les étapes suivantes pour créer et configurer un point de terminaison VPC : dans votre environnement AWS VPC :
En tant qu’administrateur de compte Snowflake (c’est-à-dire un utilisateur ayant le rôle système ACCOUNTADMIN), appelez la fonction SYSTEM$GET_PRIVATELINK_CONFIG et enregistrez la valeur
privatelink-vpce-id
.Dans votre environnement AWS, créez un point de terminaison VPC en utilisant la valeur
privatelink-vpce-id
de l’étape précédente.Dans votre environnement AWS, autorisez un groupe de services de sécurité qui connectent la connexion sortante Snowflake aux ports
443
et80
du CIDR (Classless Inter-Domain Routing) du VPCE.
Pour plus de détails, voir la documentation AWS :
Configurer votre réseau VPC¶
Pour accéder à Snowflake via un point de terminaison AWS PrivateLink, il est nécessaire de créer des enregistrements CNAME dans votre DNS pour résoudre les valeurs des points de terminaison de la fonction SYSTEM$GET_PRIVATELINK_CONFIG du nom DNS de votre point de terminaison VPC.
Ces valeurs de point de terminaison vous permettent d’accéder à Snowflake, à Snowsight, et à Snowflake Marketplace tout en utilisant également OCSP pour déterminer si un certificat est révoqué lorsque les clients Snowflake tentent de se connecter à un point de terminaison par le biais de HTTPS et d’URLs de connexion.
Les valeurs de fonction à obtenir sont :
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
Notez que les valeurs pour regionless-snowsight-privatelink-url
et snowsight-privatelink-url
permettent l’accès à Snowsight et Snowflake Marketplace en utilisant une connectivité privée. Cependant, il y a une configuration supplémentaire si vous voulez activer les redirections d’URL.
Pour plus de détails, voir Snowsight et connectivité privée.
Pour obtenir de l’aide supplémentaire sur la configuration de DNS, veuillez contacter votre administrateur AWS interne.
Important
La structure du nom d’hôte du serveur de cache OCSP dépend de la version de vos clients installés, comme décrit à l’étape 1 de Configuration de vos clients Snowflake (dans cette rubrique) :
Si vous utilisez les versions répertoriées (ou supérieures), utilisez le formulaire décrit ci-dessus, qui permet une meilleure résolution DNS lorsque vous avez plusieurs comptes Snowflake (par exemple, dev, test et production) dans la même région. Lors de la mise à jour des pilotes clients et de l’utilisation d’OCSP avec PrivateLink, mettez à jour les règles de pare-feu pour autoriser le nom d’hôte OCSP.
Si vous utilisez des versions de client plus anciennes, le nom d’hôte du serveur de cache OCSP prend la forme
ocsp.<id_région>.privatelink.snowflakecomputing.com
(c’est-à-dire aucun identificateur de compte).Notez également que votre enregistrement DNS doit être résolu en adresses IP privées dans votre VPC. S’il est résolu en adresses IP publiques, l’enregistrement n’est pas configuré correctement.
Créer des points de terminaison d’interface VPC AWS pour Amazon S3¶
Cette étape est requise pour que le trafic Amazon S3 des clients Snowflake reste sur le backbone AWS. Les clients Snowflake (par exemple, SnowSQL, pilote JDBC) ont besoin d’accéder à Amazon S3 pour effectuer diverses opérations d’exécution.
Si votre réseau VPC AWS ne permet pas l’accès à l’Internet public, vous pouvez configurer une connectivité privée aux zones de préparation internes ou davantage de points de terminaison de passerelle vers les noms d’hôtes Amazon S3 requis par les clients Snowflake.
Globalement, il existe trois options pour configurer l’accès à Amazon S3. Les deux premières options évitent l’Internet public, contrairement à la troisième :
Configurer un point de terminaison d’interface AWS VPC pour des zones de préparation internes. Cette option est recommandée.
Configurer un point de terminaison de passerelle Amazon S3. Pour plus d’informations, voir la note ci-dessous.
Ne configurez pas de point de terminaison d’interface ou de point de terminaison de passerelle. Il en résulte un accès par l’Internet public.
Attention
Pour que les communications entre un compartiment Amazon S3 et un VPC AWS avec Snowflake n’utilisent pas l’Internet public, vous pouvez configurer un point de terminaison de passerelle Amazon S3 dans la même région AWS que celle du compartiment Amazon S3. Cette approche s’explique par le fait que AWS PrivateLink autorise uniquement les communications entre VPCs et le compartiment Amazon S3 qui n’est pas inclus dans VPC.
Vous pouvez configurer le point de terminaison de passerelle Amazon S3 pour limiter l’accès à des utilisateurs spécifiques, des ressources S3, des itinéraires et des sous-réseaux ; cependant, Snowflake n’exige pas cette configuration. Pour plus de détails, consultez Points de terminaison pour Amazon S3.
Pour configurer les stratégies de points de terminaison de passerelle Amazon S3 afin de les restreindre à l’utilisation exclusive des ressources Amazon S3 pour Snowflake, choisissez l’une des options suivantes :
Utilisez les adresses de noms d’hôtes Amazon S3 spécifiques utilisés par votre compte Snowflake. Pour obtenir la liste complète des noms d’hôte utilisés par votre compte, voir SYSTEM$ALLOWLIST.
Utilisez un modèle de nom d’hôte Amazon S3 correspondant aux noms d’hôte Snowflake S3. Dans ce scénario, il existe deux types de connexions possibles avec Snowflake : VPC-à-VPC ou Sur-site-à-VPC.
En fonction de votre type de connexion, notez les points suivants :
- VPC-à-VPC:
Assurez-vous que le point de terminaison de la passerelle Amazon S3 existe. Modifiez éventuellement la politique de point de terminaison de passerelle S3 pour qu’elle corresponde aux modèles de noms d’hôte spécifiques indiqués dans le tableau Noms d’hôtes Amazon S3.
- Sur-site-à-VPC:
Vous devez définir une configuration permettant d’inclure les modèles de noms d’hôte S3 dans la configuration du pare-feu ou du proxy si le trafic Amazon S3 est non autorisé sur la passerelle publique.
Le tableau suivant répertorie les modèles de noms d’hôte Amazon S3 pour lesquels vous pouvez créer des points de terminaison de passerelle si vous ne souhaitez pas qu’ils soient spécifiques aux compartiments S3 gérés par Snowflake de votre compte :
Noms d’hôtes Amazon S3
Remarques
Toutes les régions
sfc-*-stage.s3.amazonaws.com:443
Toutes les régions autres que US Est
sfc-*-stage.s3-<id_région>.amazonaws.com:443
Notez que le modèle utilise un trait d’union (
-
) avant l’ID de la région.sfc-*-stage.s3.<id_région>.amazonaws.com:443
Notez que le modèle utilise un point (
.
) avant l’ID de la région.
Pour plus de détails sur la création des points de terminaison de la passerelle, voir Points de terminaison de passerelle VPC.
Se connecter à Snowflake¶
Avant de vous connecter à Snowflake, vous pouvez éventuellement utiliser SnowCD (outil de diagnostic de la connectivité Snowflake) pour évaluer la connexion réseau avec Snowflake et AWS PrivateLink.
Pour plus d’informations, voir SnowCD et SYSTEM$ALLOWLIST_PRIVATELINK.
Sinon, connectez-vous à Snowflake avec votre URL de compte de connectivité privée.
Notez que si vous souhaitez vous connecter à Snowsight via AWS PrivateLink, suivez les instructions de la documentation Snowsight.
Blocage de l’accès public — Facultatif¶
Après avoir testé la connectivité privée à Snowflake en utilisant AWS PrivateLink, vous pouvez éventuellement bloquer l’accès public à Snowflake. Cela signifie que les utilisateurs ne peuvent accéder à Snowflake que si leur demande de connexion provient d’une adresse IP située dans une plage de blocs CIDR particulière spécifiée dans une politique réseau Snowflake.
Pour bloquer l’accès public à l’aide d’une politique réseau :
Créez une politique réseau ou modifiez une politique réseau existante. Ajoutez la plage de blocage CIDR pour votre organisation.
Activez la politique réseau pour votre compte.
Pour plus de détails, voir Contrôle du trafic réseau avec des politiques réseau.
Configuration de vos clients Snowflake¶
S’assurer que les clients Snowflake prennent en charge le serveur de cache OCSP¶
Le serveur de cache OCSP de Snowflake diminue les problèmes de connectivité entre les clients Snowflake et le serveur. Pour permettre à vos clients Snowflake installés de profiter du serveur de cache OCSP, assurez-vous d’utiliser les versions de clients suivantes :
SnowSQL 1.1.57 (ou supérieur)
Connecteur Python 1.8.2 (ou supérieur)
Pilote JDBC 3.8.3 (ou supérieur)
Pilote ODBC 2.19.3 (ou supérieur)
Note
Le serveur de cache OCSP Snowflake écoute sur le port 80
, d’où les instructions à la section Créer et configurer un point de terminaison VPC (VPCE) pour configurer votre groupe de sécurité AWS PrivateLink VPCE afin qu’il accepte ce port, ainsi que le port 443
(nécessaire pour tout le reste du trafic Snowflake).
Spécifier le nom d’hôte des clients Snowflake¶
Chaque client Snowflake nécessite un nom d’hôte pour se connecter à votre compte Snowflake.
Le nom d’hôte est le même que le nom d’hôte que vous avez spécifié dans le ou les enregistrements CNAME à la section Configurer votre réseau VPC.
Cette étape ne s’applique pas pour accéder à Snowflake Marketplace.
Par exemple, pour un compte nommé xy12345
:
Si le compte est dans l’ouest des US, le nom d’hôte est
xy12345.us-west-2.privatelink.snowflakecomputing.com
.Si le compte est dans l’EU (Francfort), le nom d’hôte est
xy12345.eu-central-1.privatelink.snowflakecomputing.com
.
Important
La méthode de spécification du nom d’hôte diffère selon le client :
Pour le connecteur Spark et les pilotes ODBC et JDBC, spécifiez le nom d’hôte complet.
Pour tous les autres clients, ne spécifiez pas de nom d’hôte complet.
Au lieu de cela, spécifiez l’identificateur de compte avec le segment
privatelink
(c’est-à-dire<identificateur_de_compte>.privatelink
), que Snowflake concatène avecsnowflakecomputing.com
pour construire dynamiquement le nom d’hôte.
Pour plus de détails sur la spécification du nom de compte ou du nom d’hôte Snowflake, consultez la documentation de chaque client.
Utilisation de SSO avec AWS PrivateLink¶
Snowflake prend en charge l’utilisation de SSO avec AWS PrivateLink. Pour plus d’informations, voir :
Utilisation de la redirection des clients avec AWS PrivateLink¶
Snowflake prend en charge l’utilisation de la redirection des clients avec AWS PrivateLink.
Pour plus d’informations, voir Rediriger les connexions du client.
Utilisation de la réplication et de Tri-Secret Secure avec une connectivité privée¶
Snowflake prend en charge la réplication de vos données du compte source vers le compte cible, que vous activiez ou non Tri-Secret Secure ou cette fonctionnalité dans le compte cible.
Pour plus de détails, reportez-vous à Réplication de base de données et chiffrement.
Dépannage¶
Notez les articles suivants de la communauté Snowflake :