Épingler les points de terminaison de la connectivité privée pour le trafic entrant¶
Pour les comptes Snowflake sur Amazon Web Services (AWS) et Microsoft Azure (Azure), vous pouvez épingler (spécifier, enregistrer et mapper) des points de terminaison de connectivité privée à votre compte. En épinglant des points de terminaison privés à votre compte, Snowflake s’assure que le trafic entrant provenant des points de terminaison épinglés ne va qu’au compte qui les a épinglés. Snowflake recommande d’utiliser des points de terminaison épinglés, des politiques réseau et des règles réseau pour renforcer votre posture de sécurité en réduisant la surface d’attaque réseau de votre compte Snowflake.
Astuce
L’épinglage permet uniquement d’utiliser des points de terminaison privés autorisés pour envoyer du trafic depuis le réseau du client vers un compte Snowflake spécifique. Si vous souhaitez restreindre l’accès entrant aux comptes Snowflake à partir de listes IPs et d’IDs/LinkIDs VPCE spécifiques, utilisez des politiques réseau et des règles réseau.
Snowflake effectue un contrôle du point de terminaison privé au point d’entrée pour chaque requête reçue via une connectivité privée. Ce contrôle compare deux informations clés :
L’ID de point de terminaison fourni dans l’en-tête de la requête.
Le compte qui a épinglé le point de terminaison, tel qu’enregistré dans les métadonnées de Snowflake.
Si ces éléments correspondent - en d’autres termes, si la requête provient du compte qui a enregistré le point de terminaison -, Snowflake autorise la connexion. Sinon, Snowflake bloque la connexion.
Par exemple :

Point de terminaison privé épinglé |
Compte Snowflake qui a épinglé un point de terminaison privé |
Le compte Snowflake cible de la requête |
Décision de contrôle de l’épinglage de Snowflake |
---|---|---|---|
PE1 |
A1 |
A1 |
ALLOW |
PE1 |
A1 |
A2 |
DENY |
PE2 |
A2 |
A1 |
DENY |
PE2 |
A2 |
A2 |
ALLOW |
Conditions préalables¶
Avant d’épingler un point de terminaison privé, vous devez :
Configurer un lien privé pour votre compte Snowflake sur AWS ou Azure.
Limiter le champ d’application du jeton d’accès que vous utilisez pour enregistrer un point de terminaison avec votre compte Snowflake.
Pour plus d’informations sur la configuration des liens privés, voir AWS PrivateLink ou Azure Private Link.
Gérer l’application de la loi à l’aide de l’argument de temporisation¶
Après avoir configuré vos liens privés, vous appelez la fonction système SYSTEM$REGISTER_PRIVATELINK_ENDPOINT pour enregistrer un point de terminaison de connectivité privée avec votre compte Snowflake. Dans cet appel de fonction, vous pouvez optionnellement spécifier un délai. Le délai est le nombre de minutes à attendre avant d’appliquer l’enregistrement du point de terminaison privé. La valeur du délai permet d’éviter que vous ne vous bloquiez accidentellement l’accès à Snowflake lorsque vous enregistrez un nouveau point de terminaison privé. Le délai maximum est de 1 440 minutes (24 heures) et la valeur par défaut est de 60 minutes.
Le point de terminaison privé que vous enregistrez pour votre compte Snowflake peut également être enregistré pour d’autres comptes Snowflake. Par exemple, vous pouvez avoir trois comptes Snowflake et vouloir vous assurer que la connexion à chaque compte Snowflake ne passe que par un seul point de terminaison privé enregistré. En définissant l’argument du délai sur 60 minutes, vous vous donnez suffisamment de temps pour enregistrer le point de terminaison de connectivité privée avec chaque compte Snowflake.
Toutefois, lorsque vous enregistrez un point de terminaison de connectivité privée et que vous spécifiez un délai, vous devez tenir compte de l’horodatage local du premier compte dans lequel vous appelez la fonction système. Le temps d’exécution est basé sur l’horodatage local du premier compte lorsque vous appelez la fonction système, plus tout délai que vous spécifiez, par rapport à un point de terminaison de connectivité privée spécifique.
Prenons l’exemple de l’épinglage d’un seul point de terminaison de connectivité privée avec trois comptes dans le même fuseau horaire :
Si vous appelez la fonction système dans
account1
à 10h00 AM et que vous spécifiez un délai de 60 minutes, l’heure d’exécution est 11h00 AM.Si vous appelez la fonction système dans
account2
à 10h30 AM, l’heure d’exécution est 11h00 AM.Si vous appelez la fonction système dans
account3
à 11h01 AM, l’heure d’exécution est immédiate (maintenant).
Astuce
Enregistrez l’horodatage du moment où vous enregistrez le point de terminaison privé dans le premier compte. Conservez un enregistrement des comptes qui sont épinglés à un point de terminaison privé particulier.
Si vous prévoyez d’enregistrer plusieurs comptes et qu’un délai de 1 440 minutes n’est pas suffisant, contactez le support Snowflake.
Gérer le champ d’application du jeton d’accès sur Microsoft Azure¶
Avant d’épingler un point de terminaison privé à votre compte Snowflake sur Azure, vous devez limiter le champ d’application du jeton d’accès que vous transmettez à la fonction système SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. L’exigence faite à l’appelant d’étendre le champ d’application du jeton d’accès au point de terminaison privé permet à Snowflake d’autoriser l’accès de l’appelant au point de terminaison. Cela signifie que le jeton n’est valable que pour le point de terminaison privé et le compte Snowflake où vous appelez la fonction système.
Important
N’utilisez pas le jeton utilisé dans la fonction système SYSTEM$AUTHORIZE_PRIVATELINK. Les étapes suivantes permettent de générer un jeton unique pour SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Pour limiter le champ d’application du jeton d’accès pour votre point de terminaison privé sur Azure, procédez comme suit dans votre compte Microsoft Azure :
Créez une définition de rôle personnalisé d’abonnement pour un rôle appelé
snowflake-pep-role
, et remplacez le caractère génériquesubscription_id
par l’ID de votre abonnement.az role definition create --role-definition '{"Name":"snowflake-pep-role","Description": "To generate advanced proof of access token for Snowflake private endpoint pinning","Actions": ["Microsoft.Network/privateEndpoints/read"],"AssignableScopes":["/subscriptions/<subscription_id>"]}'
L’ID d’abonnement doit correspondre à l’abonnement dans lequel le point de terminaison privé existe. Vous ne devez créer la définition du rôle qu’une seule fois pour votre abonnement.
Créez l’attribution de rôles et attribuez à un utilisateur (ou à un groupe) le rôle et le champ d’application
snowflake-pep-role
du point de terminaison privé. Remplacez les caractères de remplacement pouruser
etprivate_endpoint_resource_id
.az role assignment create --assignee <user> --role snowflake-pep-role --scope <private_endpoint_resource_id>
Générez le jeton d’accès à utiliser avec la fonction système SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. Remplacez le caractère générique
subscription_id
par l’ID de votre abonnement.az account get-access-token --subscription <subscription_id>
Gérer le champ d’application du jeton d’accès sur Amazon Web Services¶
Avant d’épingler un point de terminaison privé à votre compte Snowflake sur AWS, vous devez limiter le champ d’application du jeton d’accès que vous transmettez à la fonction système SYSTEM$REGISTER_PRIVATELINK_ENDPOINT. L’exigence faite à l’appelant de cadrer le jeton d’accès au point de terminaison privé permet à Snowflake d’autoriser l’accès de l’appelant au point de terminaison. Cela signifie que le jeton n’est valable que pour le point de terminaison privé et le compte Snowflake où vous appelez la fonction système.
Important
N’utilisez pas le jeton utilisé dans la fonction système SYSTEM$AUTHORIZE_PRIVATELINK. Les étapes suivantes permettent de générer un jeton unique pour SYSTEM$REGISTER_PRIVATELINK_ENDPOINT.
Pour limiter le champ d’application du jeton d’accès pour votre point de terminaison privé sur AWS, générez un jeton fédéré, comme indiqué dans l’exemple suivant :
aws sts get-federation-token --name snowflake --policy
'{ "Version": "2012-10-17", "Statement":
[ {
"Effect": "Allow", "Action": ["ec2:DescribeVpcEndpoints"],
"Resource": ["*"] }
] }'
Exemple¶
À titre d’exemple représentatif, enregistrez un point de terminaison pour router votre connexion au service Snowflake.
Configurez AWS PrivateLink ou Azure Private Link pour votre compte Snowflake. Si ce service est déjà configuré, passez à l’étape suivante.
Connectez-vous à Snowflake en utilisant l’Internet public, c’est-à-dire l’URL que vous utilisez et qui ne contient pas de segment
privatelink
dans l’URL.Appelez la fonction système SYSTEM$REGISTER_PRIVATELINK_ENDPOINT pour enregistrer le point de terminaison VPC avec votre compte Snowflake. Les arguments de
token
contiennent des valeurs tronquées et l’unité de temps de retard est la minute :AWS
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( 'vpce-0c1...', '123.....', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "alD...", "SessionToken": "IQo...", "Expiration": "2024-12-10T08:20:20+00:00" }, "FederatedUser": { "FederatedUserId": "0123...:snowflake", "Arn": "arn:aws:sts::174...:federated-user/snowflake" }, "PackedPolicySize": 9, }', 120 );
Azure
SELECT SYSTEM$REGISTER_PRIVATELINK_ENDPOINT( '123....', '/subscriptions/0cc51670-.../resourceGroups/dbsec_test_rg/providers/Microsoft.Network/ privateEndpoints/...', 'eyJ...', 120 );
#. Confirm the private connectivity endpoint mapping by calling the SYSTEM$GET_PRIVATELINK_ENDPOINT_REGISTRATIONS system function.
Vous pouvez annuler l’enregistrement du point de terminaison de connectivité privée de votre compte Snowflake en appelant la fonction système SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT.
Important
Si vous enregistrez un point de terminaison VPC ou un point de terminaison privé dans Snowflake et que vous supprimez le point de terminaison dans votre compte VPC ou VNet, vous devez appeler la fonction système SYSTEM$UNREGISTER_PRIVATELINK_ENDPOINT dans votre compte Snowflake pour annuler l’enregistrement du point de terminaison. Dans le cas contraire, votre connexion au service Snowflake ne pourra pas utiliser la connectivité privée, elle utilisera l’internet public.