Connectivité privée vers des volumes externes pour Google Cloud¶
Cette rubrique décrit comment configurer la connectivité privée sortante vers un volume externe sur Google Cloud Storage (GCS). La principale différence entre la connectivité publique sortante et la connectivité privée sortante réside dans l’ensemble des paramètres de la propriété USE_PRIVATELINK_ENDPOINT pour le volume externe.
Lorsque le volume externe est configuré pour utiliser la connectivité privée, votre connexion à Google Cloud Storage passe par le réseau interne Google Cloud. En configurant votre volume externe pour qu’il utilise 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.
Pour plus d’informations sur l’utilisation de volumes externes pour se connecter à votre stockage Cloud externe pour les tables Iceberg, voir Configurer un volume externe.
Note
Vous pouvez utiliser Google Cloud Private Service Connect pour accéder aux tables Iceberg gérées par Snowflake et aux tables Iceberg qui utilisent une intégration de catalogue pour le stockage des objets. Actuellement, vous ne pouvez pas utiliser la connectivité privée pour accéder aux tables Iceberg qui utilisent d’autres intégrations de catalogues.
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 service de stockage Cloud. Pour ce faire, créez un volume externe dédié à la connectivité publique sortante et spécifiez USE_PRIVATELINK_ENDPOINT = FALSE.
Limitations¶
La connectivité privée sortante vers les volumes Google Cloud Storage ne prend pas en charge les compartiments multirégionaux.
Spécifier la connectivité privée pour un volume externe¶
La propriété USE_PRIVATELINK_ENDPOINT d’un volume externe détermine s’il est accessible par une connectivité privée ou en traversant le réseau public. Pour utiliser la connectivité privée, définissez. USE_PRIVATELINK_ENDPOINT = TRUE lors de la création ou de la modification d’un volume externe, comme le montrent les exemples suivants.
Utilisez la syntaxe suivante pour créer un volume externe :
CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
STORAGE_LOCATIONS =
(
(
NAME = 'my-gcs-loc'
STORAGE_PROVIDER = 'gcs'
STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
)
)
ALLOW_WRITES=true;
Utilisez la syntaxe suivante pour modifier un volume externe existant :
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
La commande DESCRIBE EXTERNAL VOLUME inclut la propriété USE_PRIVATELINK_ENDPOINT et sa valeur.
Provisionner un point de terminaison privé¶
Procédez comme suit pour provisionner un point de terminaison privé pour votre volume Google Cloud Storage :
Dans Snowflake : appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT. Fournissez en tant qu’arguments un 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.
Utilisez SYSTEM$PROVISION_PRIVATELINK_ENDPOINT pour provisionner un point de terminaison privé dans votre VNet Snowflake afin de permettre à Snowflake de se connecter au stockage Google Cloud externe via une connectivité privée. Seuls les compartiments référencés par un volume externe pour lequel la propriété USE_PRIVATELINK_ENDPOINT est activée sont accessibles via le point de terminaison.
Dans Snowflake, appelez la fonction SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Lorsque la sortie de SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO comprend `« statut » : « »APPROVED« `, votre connexion de Snowflake à votre compte de stockage peut utiliser la connectivité privée.
Vous pouvez passer aux étapes suivantes en attendant le statut
« APPROVED ».
Configurer l’accès aux volumes externes¶
Procédez comme suit pour configurer la connectivité privée à votre volume de stockage externe :
Créez le volume externe et définissez la propriété USE_PRIVATELINK_ENDPOINT sur TRUE. Par exemple :
CREATE EXTERNAL VOLUME external_volume STORAGE_LOCATIONS = ( ( NAME = 'my-gcs-loc' STORAGE_PROVIDER = 'gcs' STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/' USE_PRIVATELINK_ENDPOINT = true ) ) ALLOW_WRITES=true;
Utilisez la commande CREATE ICEBERG TABLE pour créer une table Iceberg qui fait référence au volume externe. Par exemple :
CREATE ICEBERG TABLE rand_table (data STRING) BASE_LOCATION='table' EXTERNAL_VOLUME=external_volume CATALOG='snowflake';
Une fois que le point de terminaison privé a le statut « APPROVED », testez le déchargement des données de Snowflake vers le volume externe.
Désactiver la connectivité privée¶
Si vous n’avez plus besoin de connectivité privée pour le volume externe, vous pouvez définir la propriété USE_PRIVATELINK_ENDPOINT pour le volume sur FALSE, puis appelez la fonction système SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT pour déprovisionner le point de terminaison. Par exemple :
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = false;
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');