Connectivité privée avec fonctions externes : portail Azure¶
Cette rubrique fournit des détails de configuration pour configurer la connectivité privée sortante vers un service externe en appelant une fonction externe pour les comptes Snowflake sur Microsoft Azure comme suit :
Utilisez l’interface utilisateur du portail Azure pour configurer les ressources dans Microsoft Azure.
Créez une intégration API et une fonction externe dans Snowflake.
Appelez la fonction externe dans Snowflake pour valider la connectivité privée au service externe.
Facturation et tarification¶
Vous payez pour le point de terminaison de la connectivité privée et pour toutes les données traitées. Pour connaître les prix de ces éléments, consultez le tableau de consommation des services de Snowflake.
Aperçu du processus¶
Voici un aperçu général du processus de configuration. Les étapes dans Snowflake doivent être effectuées par un utilisateur disposant du rôle ACCOUNTADMIN. Les étapes du portail Azure sont effectuées par un utilisateur disposant de droits d’utilisation des ressources correspondantes, sauf indication contraire.
Les étapes suivantes sont les mêmes que celles utilisées pour l’utilisation de fonctions externes avec l’Internet public :
Suivez les étapes préalables pour les fonctions externes sur Microsoft Azure.
Dans le portail Azure, créez le service distant.
Dans le portail Azure, créez le service proxy.
Cependant, vous souhaiterez peut-être créer de nouvelles ressources pour différencier complètement vos besoins de connectivité privée de vos besoins Internet public. Consultez vos administrateurs de sécurité interne pour déterminer la meilleure approche adaptée à vos besoins.
Ces étapes sont propres aux fonctions externes qui utilisent une connectivité privée pour un service externe :
Dans Snowflake, créez un point de terminaison privé.
Snowflake stocke l’adresse IP privée du point de terminaison privé en interne.
Dans le portail Azure, approuvez le point de terminaison privé.
Cette action est effectuée par le propriétaire de la ressource Azure API Management (service externe).
Dans Snowflake, créez une intégration API.
Vous avez besoin d’une intégration API dédiée pour prendre en charge la connectivité privée au service externe.
Dans Snowflake, créez une fonction externe. L’URL de la connectivité privée est la valeur de l’URL d’invocation dans la fonction externe.
Dans Snowflake, appelez la fonction externe pour permettre à Snowflake de se connecter au service externe à l’aide d’une connectivité privée.
Supprimez tous les points de terminaison de connectivité privée qui ne sont pas nécessaires.
Configuration¶
Effectuez ces étapes dans le portail Azure :
Si la ressource Azure API Management est déjà configurée et que vous souhaitez réutiliser le service distant et le service proxy, passez aux étapes de connectivité privée. Sinon, procédez comme suit :
Complétez les prérequis des fonctions externes sur Microsoft Azure.
Dans le portail Azure, créez le service distant.
Dans le portail Azure, créez le service proxy.
Suivez ces étapes pour configurer la connectivité privée :
Dans Snowflake, exécutez la commande CREATE API INTEGRATION pour créer une intégration API afin de prendre en charge la connectivité privée au service externe. Mettez à jour les valeurs des propriétés pour les aligner sur votre abonnement Microsoft Azure :
CREATE API INTEGRATION external_api_integration_azure_private API_PROVIDER = azure_private_api_management AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9' AZURE_AD_APPLICATION_ID = 'dv3421nq-1g4s-4ap4-x89c-xrf28hna7m2o' API_ALLOWED_PREFIXES = ('https://aztest1-external-function-api.azure.net') ENABLED = TRUE COMMENT = 'API integration for private connectivity to an external service with external functions on Azure.';
Dans Snowflake, appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour créer le point de terminaison privé. Mettez à jour les valeurs des arguments pour les aligner sur votre abonnement Microsoft Azure :
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/f4b00c5f-f6bf-41d6-806b-e1cac4f1f36f/resourceGroups/aztest1-external-function-rg/providers/Microsoft.ApiManagement/service/aztest1-external-function-api', 'aztest1-external-function-api.azure.net', 'Gateway' );
Dans le portail Azure et en tant que propriétaire de la ressource Azure API Management, approuvez le point de terminaison privé. Pour plus de détails, consultez le processus d’approbation.
Liez l’intégration API pour Azure au service proxy pour permettre à Snowflake d’envoyer les demandes de l’API au service Azure API Management.
Vous pouvez choisir de bloquer l’accès public à la ressource Azure API Management. Pour plus d’informations, voir Accès sécurisé à la ressource Azure API Management (dans cette rubrique).
Dans Snowflake, si vous disposez déjà d’une base de données et d’un schéma pour stocker la fonction externe et que vous souhaitez utiliser ces objets, assurez-vous que ces objets sont utilisé ou sélectionnez-les dans Snowsight. Sinon, créez une base de données et un schéma pour stocker la fonction externe à utiliser avec une connectivité privée à un service externe :
CREATE DATABASE private_external_service_db; CREATE SCHEMA private_ext_functions;
Dans Snowflake, exécutez la commande CREATE EXTERNAL FUNCTION pour créer la fonction externe à utiliser avec une connectivité privée au service externe. Assurez-vous de mettre à jour l’URL d’invocation avec l’URL du service externe connectivité privée :
CREATE OR REPLACE SECURE EXTERNAL FUNCTION private_ext_function_azure_portal( a INTEGER , b VARCHAR) RETURNS VARIANT API_INTEGRATION = external_api_integration_azure_private AS 'https://aztest1-external-function-api.azure.net/my-api-url-suffix/http-function-name';
Le format de l’URL dépend du fait que vous créez une fonction externe à l’aide du portail Azure ou du modèle ARM Azure. Pour plus de détails, voir format de l’URL d’invocation.
Dans Snowflake, appelez la fonction externe pour tester la connectivité privée au service externe :
SELECT private_ext_function_azure(66, 'Mario');
[0, 66, 'Mario']
Si la sortie de la fonction renvoie le résultat qui correspond à la configuration du service distant au début de la procédure, vous avez confirmé que la connectivité privée au service externe fonctionne comme prévu.
Accès sécurisé à la ressource Azure API Management¶
Vous pouvez sécuriser l’accès à la ressource Azure API Management associée au point de terminaison privé pour une utilisation avec des fonctions externes. Pour la ressource Azure API Management, Snowflake est une connexion entrante. En sécurisant l’accès, vous réduisez la probabilité d’attaques qui pourraient compromettre votre utilisation de fonctions externes.
Par exemple, vous souhaiterez peut-être exécuter cette commande CLI apim Azure pour bloquer l’accès public :
az apim update --name <api-name> --resource-group <resource group name> --public-network-access false
Mettez à jour les valeurs de l’espace réservé avec les valeurs qui correspondent au nom de la ressource Azure API Management et le nom du groupe de ressources.
Pour plus de détails et d’options, consultez ces rubriques :