Connexion privée aux zones de préparation externe pour Google Cloud¶
Cette rubrique décrit comment configurer la connectivité privée sortante vers une zone de préparation externe sur Google Cloud. La principale différence entre la connectivité publique sortante et la connectivité privée sortante réside dans la manière dont vous configurez l’intégration de stockage. Par exemple, vous pouvez spécifier la propriété USE_PRIVATELINK_ENDPOINT pour l’intégration de stockage, puis faire référence à cette intégration de stockage dans la zone de préparation externe. La zone de préparation externe hérite de la configuration du point de terminaison privé de l’intégration de stockage. Par la suite, votre connexion à la zone de préparation Google Cloud passe par le réseau interne Google Cloud. En configurant votre intégration de stockage et votre zone de préparation pour utiliser une connectivité privée sortante, vous ajoutez une sécurité supplémentaire à vos opérations de déchargement des données en bloquant l’accès public au compte de stockage.
Coûts de la connectivité privée sortante¶
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.
Vous pouvez connaître le coût de ces éléments en filtrant sur les types de services suivants lors de la requête des vues de facturation dans les schémas ACCOUNT_USAGE et ORGANIZATION_USAGE :
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
Par exemple, vous pouvez interroger la vue USAGE_IN_CURRENCY_DAILY et filtrer sur ces types de services.
Considérations¶
Vous pouvez configurer la connectivité publique sortante et la connectivité privée sortante pour le même compte de stockage. Pour ce faire, créez une intégration de stockage dédiée à la connectivité publique sortante et spécifiez USE_PRIVATELINK_ENDPOINT = FALSE.
Limitations¶
La connectivité privée sortante vers une zone de préparation Google Cloud ne prend pas en charge les compartiments multirégionaux.
Spécifier la connectivité privée pour une intégration de stockage¶
Pour spécifier la connectivité privée lors de la création, du remplacement ou de la modification d’une intégration de stockage, incluez la propriété USE_PRIVATELINK_ENDPOINT comme indiqué dans les exemples suivants. Pour utiliser la connectivité privée, définissez USE_PRIVATELINK_ENDPOINT = TRUE pour l’intégration.
- Intégration de stockage
Les exemples suivants montrent comment vous pouvez spécifier la propriété USE_PRIVATELINK_ENDPOINT lorsque vous créez une intégration de stockage comportant un ou plusieurs emplacements :
CREATE OR REPLACE STORAGE INTEGRATION my_int TYPE=EXTERNAL_STAGE STORAGE_PROVIDER='gcs' STORAGE_ALLOWED_LOCATIONS=('gcs://<bucket>/<prefix>/') USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
L’exemple suivant montre comment vous pouvez modifier une intégration de stockage et définir la propriété USE_PRIVATELINK_ENDPOINT :
ALTER STORAGE INTEGRATION my_int SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
- Zones de préparation externes
Les mises à jour pour la syntaxe USE_PRIVATELINK_ENDPOINT ne sont pas prises en charge lorsque vous créez ou modifiez la zone de préparation. L’exemple suivant montre comment vous devez modifier l’intégration du stockage pour utiliser l’URL de la zone de préparation nouvelle ou modifiée :
CREATE OR REPLACE STAGE my_gcs_stage URL = 'gcs://<bucket>/<prefix>/' STORAGE_INTEGRATION=my_int
Configurer l’accès à la zone de préparation externe¶
Ces étapes sont propres à l’utilisation de la connectivité privée sortante avec une intégration de stockage pour décharger les données vers une zone de préparation externe sur Google Cloud.
Dans Snowflake : appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT. Fournissez comme arguments un stockage point de terminaison API de stockage régional et un nom d’hôte. Par exemple :
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'storage.us-east4.rep.googleapis.com', 'storage.us-east4.rep.googleapis.com');
Note
Snowflake prend uniquement en charge les points de terminaison API de stockage régional Google Cloud. Les compartiments Google Cloud multirégionaux ne sont pas pris en charge.
Le fait d’utiliser SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour provisionner un point de terminaison privé dans votre VNet Snowflake lie le point de terminaison privé au nom d’hôte. Cela permet à l’intégration de stockage de se connecter à votre zone de préparation Google Cloud externe en utilisant une connectivité privée.
Dans Snowflake, appelez la fonction SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Lorsque la sortie de la fonction comprend SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO comprend le
« statut » : « APPROVED », votre connexion de Snowflake à votre compte de stockage pourra utiliser la connectivité privée (après que les autres objets Snowflake nécessaires ont été activés pour la connectivité privée sortante).Vous pouvez passer aux étapes suivantes en attendant le statut
« APPROVED ».Créez une intégration de stockage et spécifiez TRUE comme valeur pour la propriété USE_PRIVATELINK_ENDPOINT. Par exemple :
CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'gcs' STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/'') USE_PRIVATELINK_ENDPOINT = true ENABLED = true;
Pour plus d’informations sur la création d’un rôle pour l’intégration de stockage, voir Configuration d’une intégration pour Google Cloud Storage.
Créez une zone de préparation externe qui fait référence à l’intégration de stockage : Par exemple :
CREATE OR REPLACE STAGE my_gcs_stage URL = 'gcs://mybucket1/path1/' STORAGE_INTEGRATION = outbound_private_link_int;
Une fois que le point de terminaison privé a le « statut » « APPROVED », testez le déchargement des données de Snowflake vers la zone de préparation externe : Par exemple :
COPY INTO @my_gcs_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Observez le résultat dans votre zone de préparation Google Cloud.
Désactiver la connectivité privée¶
Si vous n’avez plus besoin de connectivité privée pour la zone de préparation externe, vous pouvez définir la propriété USE_PRIVATELINK_ENDPOINT sur l’intégration de stockage sur FALSE, puis appelez la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT pour déprovisionner le point de terminaison. Par exemple :
USE ROLE ACCOUNTADMIN;
ALTER STORAGE INTEGRATION my_int
SET USE_PRIVATELINK_ENDPOINT = false;
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');