Gérer les points de terminaison de la connexion privée pour Snowflake Open Catalog : AWS¶
Lorsque les données de vos catalogues dans votre compte Snowflake Open Catalog sont stockées dans des compartiments de stockage Amazon Simple Storage Service (Amazon S3), suivez ces étapes pour configurer la connexion privée pour le trafic réseau sortant.
Pour activer la connexion privée pour votre compte Open Catalog, vous ne devez généralement effectuer qu’une seule fois les étapes de configuration de cette rubrique. Ensuite, vous activez la connexion privée sortante pour chaque catalogue dans votre compte Open Catalog.
Par exemple, si vous avez terminé les étapes de la configuration, puis que vous avez créé ultérieurement un nouveau catalogue catalog1
, il suffit généralement d’activer la connexion privée sortante pour catalog1
. Pour obtenir des instructions sur la manière d’activer la connexion privée pour un catalogue, voir Activer la connexion privée sortante pour un catalogue. Cependant, si catalog1
utilise un compartiment de stockage dont vous n’avez pas mis à jour la politique de compartiment, vous devez également mettre à jour la politique de compartiment pour le compartiment. Lorsque vous mettez à jour une politique de compartiment, vous limitez l’accès réseau du compartiment à un point de terminaison de connexion privée.
Conditions préalables¶
Votre compte Open Catalog et votre stockage Cloud externe doivent tous deux être hébergés dans la même région AWS.
Vous avez besoin des autorisations IAM dans AWS qui vous permettent de modifier la politique de compartiment pour votre compartiment de stockage AWS dans lequel sont stockées vos tables Iceberg. Pour plus de détails, voir Politiques de compartiment pour Amazon S3 dans la documentation AWS.
Votre moteur de requête tiers ou Snowflake doit avoir accès à votre compartiment de stockage par l’intermédiaire de AWS PrivateLink ou du point de terminaison S3 Gateway. Pour plus de détails, voir Configurer un point de terminaison d’interface dans la documentation AWS. Sinon, lorsque vous activez la connexion privée sortante, le moteur ne peut pas lire ou écrire dans les tables stockées dans le compartiment, mais Open Catalog peut lire ou écrire des métadonnées dans le compartiment.
Configurer la connexion privée pour votre compte¶
Suivez ces étapes pour configurer la connexion privée pour votre compte Open Catalog.
Étape 1 : Créer une connexion Snowflake CLI pour Open Catalog¶
Pour configurer une connexion privée dans Open Catalog, vous avez besoin d’une connexion CLI Snowflake pour Open Catalog. Suivez les étapes suivantes pour créer cette connexion. Si vous n’avez pas encore installé Snowflake CLI, consultez Installation de Snowflake CLI.
Avant de commencer¶
Pour créer une connexion Snowflake CLI pour Open Catalog, vous avez besoin de votre identificateur de compte Open Catalog complet. L’identificateur du compte comprend le nom de votre organisation Snowflake et votre nom d’utilisateur Open Catalog ; par exemple, <orgname>.<my-snowflake-open-catalog-account-name>
.
Pour trouver le nom de votre organisation Snowflake (
<orgname>
), voirRecherche de l'organisation et du nom de compte pour un compte <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>
_.Pour trouver votre nom de compte Snowflake Open Catalog (
<my-snowflake-open-catalog-account-name>
), voirRechercher le nom d’un utilisateur Snowflake Open Catalog <https://other-docs.snowflake.com/en/opencatalog/find-account-name>
_.
Important
Pour créer cette connexion, vous devez être un utilisateur Open Catalog disposant de privilèges d’administrateur de service. Pour plus d’informations sur les privilèges d’administrateur de service, voir Rôle d’administrateur de service.
Ajouter une connexion CLI Snowflake pour Snowflake Open Catalog¶
Ajoutez une connexion pour le compte Snowflake Open Catalog dans lequel vous souhaitez activer la connexion privée.
Ajouter une connexion <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>
_ avec les valeurs suivantes. Pour tous les autres paramètres, appuyez sur Entrée pour ne pas spécifier de valeur pour le paramètre.Paramètres de configuration de la connexion
Valeur
Nom de cette connexion
Spécifiez un nom pour la connexion ; par exemple,
myopencatalogconnection
.Nom d’utilisateur
Indiquez le nom de votre organisation Snowflake, suivi de votre nom d’utilisateur Open Catalog, au format suivant :
<orgname>-<my-snowflake-open-catalog-account-name>
.Par exemple,
ABCDEFG-MYACCOUNT1
.Pour trouver ces noms, voir
Avant de commencer
_.Nom d’utilisateur
Indiquez votre nom d’utilisateur pour Open Catalog ; par exemple,
jsmith
.Mot de passe [facultatif]
Ce paramètre n’est pas facultatif lorsque vous créez une connexion pour Open Catalog.
Saisissez votre mot de passe pour Open Catalog ; par exemple,
MyPassword123456789
.Rôle pour la connexion [facultatif]
Ce paramètre n’est pas facultatif lorsque vous créez une connexion pour Open Catalog.
Vous devez saisir
POLARIS_ACCOUNT_ADMIN
Test de la connexion CLI Snowflake¶
Pour tester votre connexion CLI, suivez cet exemple, qui teste la connexion pour
myopencatalogconnection
:snow connection test -c myopencatalogconnection
La réponse devrait ressembler à ceci :
+------------------------------------------------------------------------------+ | key | value | |----------------------------+-------------------------------------------------| | Connection name | myopencatalogconnection | | Status | OK | | Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.com | | Account | ABCDEFG-MYACCOUNT1 | | User | jsmith | | Role | POLARIS_ACCOUNT_ADMIN | | Database | not set | | Warehouse | not set | +------------------------------------------------------------------------------+
Définissez votre connexion CLI Snowflake pour Snowflake Open Catalog comme connexion par défaut¶
Pour que la connexion que vous utilisez dispose toujours du bon rôle POLARIS_ACCOUNT_ADMIN qui lui est attribué, vous pouvez définir la connexion CLI Snowflake que vous avez créée pour Open Catalog comme connexion par défaut. Pour plus d’informations sur la connexion par défaut, voir Définir la connexion par défaut <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>
_.
Suivez cet exemple, qui définit la connexion
myopencatalogconnection
par défaut :snow connection set-default myopencatalogconnection
Pour confirmer que vous utilisez le bon utilisateur et le bon rôle, exécutez la commande suivante :
snow sql -q "Select current_user(); select current_role();"
La réponse doit renvoyer votre nom d’utilisateur Open Catalog et le CURRENT ROLE devrait être POLARIS_ACCOUNT_ADMIN.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
Étape 2 : Fournir un point de terminaison de connexion privée¶
Utiliser votre connexion CLI Snowflake pour Open Catalog afin d’appeler les fonctions système suivantes :
Pour fournir un point de terminaison de connexion privée pour vos compartiments de stockage, appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT.
Pour confirmer que le point de terminaison de connexion privée est prêt à être utilisé, appelez la fonction système SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Pour obtenir des instructions, voir Fourniture de points de terminaison de connexion privée dans la documentation Snowflake. N’oubliez pas que les instructions font référence à un compte Snowflake au lieu d’un compte Snowflake Open Catalog, mais le processus est le même dans Open Catalog.
Important
Vous devez utiliser le rôle POLARIS_ACCOUNT_ADMIN au lieu du rôle ACCOUNTADMIN mentionné dans les instructions.
Si la connexion CLI Snowflake que vous avez définie n’a pas le rôlePOLARIS_ACCOUNT_ADMIN qui lui est accordé, vous devez inclure l’instruction suivante avec votre commande :
USE ROLE POLARIS_ACCOUNT_ADMIN;
Avec votre commande, vous devez insérer une barre oblique immédiatement avant
$
pour effectuer un échappement. Par exemple,snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();"
.
Note
Vous pouvez utiliser ce point de terminaison de connexion privée que vous fournissez pour accorder l’accès à tous les compartiments de stockage situés dans la même région AWSoù votre compte Open Catalog est hébergé ; vous ne pouvez pas l’utiliser pour accorder l’accès à un compartiment situé dans une autre région.
Exemple : Fournir un point de terminaison de connexion privée¶
L’exemple suivant crée un PrivateLink avec un accès externe à Amazon S3 pour configurer un point de terminaison pour la région us-west-2
:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Étape 3 : Mettre à jour votre politique de compartiment¶
Pour restreindre l’accès réseau à votre compartiment de stockage au point de terminaison de connexion privée que vous avez créé à l’étape précédente, dans AWS, mettez à jour la politique de compartiment de votre compartiment de stockage. Pour obtenir des instructions, voir Restriction de l’accès à un VPCendpoint spécifique dans la documentation AWS. Pour <vpce-id>
dans la politique de compartiment, spécifiez l’ID du point de terminaison de connexion privée que vous avez créé à l’étape précédente.
Si nécessaire, répétez cette étape pour tous les compartiments supplémentaires que vous souhaitez connecter à Open Catalog.
Important
Assurez-vous que votre politique de compartiment inclut des privilèges qui vous permettent d’accéder au compartiment et à la politique de compartiment du navigateur après l’avoir ajouté. Sinon, après avoir mis à jour votre politique de compartiment, vous ne pourrez plus accéder au compartiment ou à la politique de compartiment à partir du navigateur.
Cet exemple de politique de compartiment vous permet d’accéder au compartiment et à la politique de compartiment du navigateur :
{
"Version": "2012-10-17",
"Id": "Policy1234567890123",
"Statement": [
{
"Sid": "Deny public access",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotLike": {
"aws:SourceVpc": "vpc-*"
}
}
},
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-xxxxxxxxxxx"
}
}
}
]
}
Activer la connexion privée sortante pour un catalogue¶
Cette section décrit comment activer la connexion privée sortante pour un catalogue dans votre compte Open Catalog.
Étape 1 : Désactiver la connexion privée¶
Vous pouvez activer la connexion privée pour un catalogue nouveau ou existant :
Activer la connexion privée pour un nouveau catalogue¶
Suivez les instructions dans Créer un catalogue à l’aide d’Amazon Simple Storage Service (Amazon S3). Assurez-vous que, pour le catalogue, le bouton bascule Lien privé soit Activé.
Note
Si vous n’avez pas mis à jour la politique du compartiment dans lequel les tables du catalogue sont stockées, voir Mettre à jour votre politique de compartiment. Lorsque vous mettez à jour une politique de compartiment, vous limitez l’accès réseau de votre compartiment de stockage à votre point de terminaison de connexion privée.
Activer la connexion privée pour un catalogue existant¶
Connectez-vous à Open Catalog.
Dans le menu de navigation, sélectionnez Catalogues.
Dans la liste des catalogues, sélectionnez le catalogue pour lequel vous souhaitez activer la connexion privée.
Dans l’onglet Détails du catalogue, définissez le bouton bascule PrivateLink sur Activé.
Étape 2 : Créer une table en utilisant le moteur de requête¶
Pour vérifier que votre moteur de requête est connecté à votre catalogue via AWS PrivateLink, utilisez votre moteur de requête pour créer une table et y insérer des données. Si vous ne pouvez pas insérer de données dans la table, c’est que vous n’avez peut-être pas configuré AWS PrivateLink pour le moteur de requête.
Résolution des problèmes¶
Cette section fournit des solutions de dépannage pour les problèmes liés à la connexion privée sortante pour le trafic réseau.
Impossible d’afficher le schéma d’une table dans Open Catalog¶
Symptôme
Dans Open Catalog, vous sélectionnez une table dans votre catalogue (par exemple, catalog1
) mais recevez le message d’erreur suivant : « Pas d’autorisations pour accéder à cette ressource. »
Cause
Dans AWS, vous avez réussi à mettre à jour votre politique de compartiment pour acheminer le trafic réseau via votre point de terminaison VPC. Cependant, dans Open Catalog, vous n’avez pas activé la connexion privée pour ce catalogue, donc Open Catalog ne peut pas accéder à votre compartiment.
Solution
Activer la connexion privée pour le catalogue (par exemple, catalog1
). Pour plus de détails, voir Activer la connexion privée pour un catalogue.
Erreur « Business Critical » lors de l’exécution de la commande SYSTEM$PROVISION_PRIVATELINK_ENDPOINT¶
Symptôme
Dans votre connexion CLI Snowflake, vous exécutez la commande SYSTEM\$PROVISION_PRIVATELINK_ENDPOINT
mais elle échoue avec le message d’erreur suivant : « Business Critical ou une version supérieure est nécessaire pour cette opération. Veuillez installer la version requise et réessayer ».
Cause
La version de votre compte Open Catalog n’est pas Business Critical.
Pour activer la connexion privée pour le trafic réseau sortant, ce qui inclut la mise en service d’un point de terminaison de connexion privée, la version de votre compte Snowflake Open Catalog doit être Business Critical.
Solution
Contactez le support Snowflake pour obtenir de l’aide sur la mise à niveau de votre compte Open Catalog vers Business Critical.