Gérer les points de terminaison de connectivité 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 connectivité privée pour le trafic réseau sortant.

Pour activer la connectivité privée pour votre compte Open Catalog, il vous suffit généralement de suivre une seule fois les étapes de configuration de cette rubrique. Ensuite, vous activez la connectivité privée sortante pour chaque catalogue dans votre compte Open Catalog.

Par exemple, si vous avez effectué les étapes de configuration et que vous créez ensuite un nouveau catalogue catalog1, vous n’aurez généralement qu’à activer la connectivité privée sortante pour catalog1. Pour obtenir des instructions sur l’activation de la connectivité privée pour un catalogue, consultez Activer la connectivité privée sortante pour un catalogue. Toutefois, si catalog1 utilise un compartiment de stockage dont vous n’avez pas mis à jour la politique, vous devez également mettre à jour la politique de compartiment pour ce compartiment. Lorsque vous mettez à jour une politique de compartiment, vous limitez l’accès au réseau pour le compartiment à un point de terminaison de connectivité 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 du compartiment de stockage AWS où sont stockées vos tables Iceberg. Pour plus d’informations, consultez la rubrique Politiques de compartiment pour Amazon S3 dans la documentation de AWS.

  • Votre moteur de requête tiers ou votre moteur Snowflake doit avoir accès à votre compartiment de stockage via AWS PrivateLink ou un point de terminaison S3 Gateway. Pour plus de détails, voir Configurer un point de terminaison d’interface dans la documentation de AWS. Sinon, lorsque vous activez la connectivité 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.

Paramétrage de la connectivité privée pour votre compte

Suivez les étapes suivantes pour mettre en place la connectivité privée pour votre compte Open Catalog.

Étape 1 : créez une connexion Snowflake CLI pour Open Catalog

Pour mettre en place une connectivité privée dans Open Catalog, vous avez besoin d’une connexion Snowflake CLI pour Open Catalog. Suivez les étapes suivantes pour créer cette connexion. Si le programme d’installation de Snowflake CLI n’est pas encore installé, voir Installation de Snowflake CLI.

Avant de commencer

Pour créer une connexion au compte Snowflake CLI pour Open Catalog, vous avez besoin de votre identificateur de compte complet Open Catalog. L’identificateur de compte comprend le nom de votre organisation Snowflake et le nom de votre compte Open Catalog ; par exemple, <nom organisation>.<my-snowflake-open-catalog-account-name>.

  • Pour trouver le nom de votre organisation Snowflake (<nom organisation>), voir Trouver le nom de l'organisation et du 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>), voir Trouver le nom de compte d'un compte Snowflake Open Catalog <https://other-docs.snowflake.com/en/opencatalog/find-account-name>_.

Important

Pour créer cette connexion, vous devez être un utilisateur d’Open Catalog disposant des privilèges d’administrateur de service. Pour des informations sur les privilèges de l’administrateur du service, voir Rôle de l’administrateur du service.

Ajoutez une connexion Snowflake CLI pour Snowflake Open Catalog

Ajoutez une connexion pour le compte Snowflake Open Catalog dans lequel vous souhaitez activer la connectivité privée.

  • Ajoutez 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 Entrer pour ne pas spécifier de valeur pour le paramètre.

    Paramètres de configuration de la connexion

    Valeur

    Nom de cette connexion

    Indiquez un nom pour la connexion ; par exemple, myopencatalogconnection.

    Nom du compte

    Indiquez le nom de votre organisation Snowflake, suivi du nom de votre compte Open Catalog, dans ce format :

    <orgnamemy-snowflake-open-catalog-account-name>-<>.

    Par exemple, ABCDEFG-MYACCOUNT1.

    Pour trouver ces noms, voir Avant de commencer_.

    Nom d’utilisateur

    Spécifiez votre nom d’utilisateur pour Open Catalog ; par exemple, jsmith.

    Mot de passe [optionnel]

    Ce paramètre est non optionnel 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 [optionnel]

    Ce paramètre est non optionnel lorsque vous créez une connexion pour Open Catalog.

    Vous devez saisir POLARIS_ACCOUNT_ADMIN

Testez la connexion Snowflake CLI

  • Pour tester votre connexion à CLI, suivez cet exemple, qui teste la connexion à myopencatalogconnection:

    snow connection test -c myopencatalogconnection
    
    Copy

    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                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

Paramétrez votre connexion Snowflake CLI pour Snowflake Open Catalog comme connexion par défaut

Pour vous assurer que la connexion que vous utilisez dispose toujours du rôle POLARIS_ACCOUNT_ADMIN requis, vous pouvez définir la connexion Snowflake CLI que vous avez créée pour Open Catalog comme la connexion par défaut. Pour plus d’informations sur la connexion par défaut, voir Paramétrer la connexion par défaut <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>_.

  1. Suivez cet exemple, qui paramètre la connexion myopencatalogconnection par défaut :

    snow connection set-default myopencatalogconnection
    
    Copy
  2. Pour confirmer que vous utilisez l’utilisateur et le rôle corrects, exécutez la procédure suivante :

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    La réponse devrait renvoyer votre nom d’utilisateur Open Catalog et le ROLE CURRENT devrait être POLARIS_ACCOUNT_ADMIN.

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

Étape 2 : Mettez à disposition un point de terminaison de connectivité privée

Utilisez votre connexion Snowflake CLI pour Open Catalog afin d’appeler les fonctions suivantes du système :

  1. Pour provisionner un point de terminaison de connectivité privée pour vos compartiments de stockage, appelez la fonction système SYSTEM$PROVISION_PRIVATELINK_ENDPOINT.

  2. Pour confirmer que le point de terminaison de connectivité privée est prêt à être utilisé, appelez la fonction système SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.

Pour obtenir des instructions, reportez-vous à la section Fournir des points de terminaison de connectivité privée dans la documentation de Snowflake. N’oubliez pas que les instructions se réfèrent à un compte Snowflake et non à 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 Snowflake CLI que vous avez définie par défaut n’a pas le rôle POLARIS_ACCOUNT_ADMIN, vous devez inclure l’instruction suivante dans votre commande : USE ROLE POLARIS_ACCOUNT_ADMIN;

  • Avec votre commande, vous devez insérer une barre oblique immédiatement avant $ pour l’échapper. Par exemple, snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();".

Note

Vous pouvez utiliser ce point de terminaison de connectivité privée que vous provisionnez pour accorder l’accès à tous les compartiments de stockage situés dans la même région AWS où votre compte Open Catalog est hébergé ; vous ne pouvez pas l’utiliser pour accorder l’accès à un compartiment situé dans une région différente.

Exemple : Mise à disposition d’un point de terminaison de connectivité privée

L’exemple suivant crée un PrivateLink avec un accès externe à Amazon S3 afin de 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'
);
Copy

Étape 3 : Mettez à jour votre politique en matière de compartiments

Pour limiter l’accès réseau à votre compartiment de stockage au point de terminaison de connectivité privée que vous avez créé à l’étape précédente, dans AWS, mettez à jour la politique de compartiment pour votre compartiment de stockage. Pour obtenir des instructions, reportez-vous à la section Restreindre l’accès à un VPCendpoint spécifique dans la documentation AWS. Pour <vpce-id> dans la politique de compartiment, indiquez l’ID du point de terminaison de connectivité privée que vous avez créé à l’étape précédente.

Si nécessaire, répétez cette étape pour tous les autres compartiments 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 à partir 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 à partir 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"
                }
            }
        }
    ]
}
Copy

Activez la connectivité privée sortante pour un catalogue

Cette section décrit comment activer la connectivité privée sortante pour un catalogue dans votre compte Open Catalog.

Étape 1 : Activez la connectivité privée

Vous pouvez activer la connectivité privée pour un catalogue nouveau ou existant :

Activer la connectivité privée pour un nouveau catalogue

Suivez les instructions de Créer un catalogue à l’aide d’Amazon Simple Storage Service (Amazon S3). Assurez-vous que, pour le catalogue, la bascule Private Link est activée.

Note

Si vous n’avez pas mis à jour la politique du compartiment où sont stockées les tables du catalogue, consultez Mettez à jour votre politique en matière de compartiments. Lorsque vous mettez à jour une politique de compartiment, vous limitez l’accès réseau à votre compartiment de stockage à votre point de terminaison de connectivité privée.

Activez la connectivité privée pour un catalogue existant

  1. Connectez-vous à Open Catalog.

  2. Dans le menu de navigation, sélectionnez Catalogues.

  3. Dans la liste des catalogues, sélectionnez le catalogue pour lequel vous souhaitez activer la connectivité privée.

  4. Dans l’onglet Détails du catalogue, paramétrez l’option PrivateLink sur activé.

Étape 2 : Créez 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, il se peut que vous n’ayez pas configuré AWS PrivateLink pour le moteur de requête.

Dépannage

Cette section fournit des solutions aux problèmes liés à la connectivité privée sortante pour le trafic réseau.

Impossible de voir 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 vous recevez le message d’erreur suivant : « Aucune autorisation d’accès à cette ressource ».

Cause

Dans AWS, vous avez mis à jour votre politique de compartiment pour router le trafic réseau via votre point de terminaison VPC. Cependant, dans Open Catalog, vous n’avez pas activé la connectivité privée pour ce catalogue, donc Open Catalog ne peut pas accéder à votre compartiment.

Solution

Activez la connectivité privée pour le catalogue (par exemple, catalog1). Pour plus d’informations, consultez Activer la connectivité privée pour un nouveau catalogue.