Configuration de Snowflake pour utiliser Git

Lorsque vous connectez votre compte Snowflake à un référentiel Git distant, Snowflake crée un référentiel Git clone, en copiant la dernière version de tous les fichiers du référentiel (un clone superficiel) et en stockant des métadonnées sur l’emplacement du référentiel distant, des identifiants de connexion (si nécessaire) et des informations de configuration sur la manière dont Snowflake doit interagir avec l’API du référentiel Git.

Selon vos besoins, en configurant des composants pour l’authentification, l’interaction avec l’API Git et la communication via un lien privé entre Snowflake et votre fournisseur de services Cloud, vous pouvez configurer Snowflake de sorte qu’un référentiel Git distant fasse partie intégrante de votre workflow au sein de Snowflake.

Choisir un modèle de configuration

En fonction de vos exigences en matière de réseau et de workflow, vous pouvez configurer Snowflake pour l’accès à un référentiel Git distant de plusieurs manières. La liste suivante présente des exemples de cas d’utilisation, ainsi que les stratégies d’accès au référentiel que vous pouvez utiliser pour les prendre en charge.

  • Travaillez avec des fichiers sur un référentiel Git grâce à un workflow qui comprend le pull, le push et la création de fichiers.

    Envisagez d’utiliser les espaces de travail Snowflake. Si vous utilisez un référentiel sur github.com, vous pouvez vous authentifier avec OAuth.

  • Référencez des fichiers sur un référentiel Git dans le cadre d’un pipeline de données ou d’un projet ML.

    Si un processus scripté doit accéder au référentiel, envisagez de vous authentifier à l’aide d’un jeton.

  • Commencez par cloner un référentiel public (y compris Snowflake Labs) pour exécuter des scripts ou des fichiers de notebooks.

    Vous pouvez utiliser les espaces de travail pour les fichiers .sql, les notebooks Snowflake pour les fichiers .ipynb ou les espaces de travail Snowflake pour les fichiers .py.

Ce qui suit décrit les options disponibles selon que vous souhaitez accéder via un réseau public ou un réseau privé :

Accès via un réseau public

Accès via un réseau privé

L”accès via un réseau public vous permet de vous authentifier auprès de votre serveur de référentiel Git distant en utilisant la totalité de la plage IP de déploiement de votre fournisseur Cloud Snowflake (car Snowflake ne fournit pas de plage IP statique).

  1. Configurez Snowflake pour l’accès au référentiel.

    Choisissez l’une des méthodes d’authentification suivantes :

    • Pas d’authentification.

      Configurer une intégration API avec des informations sur le serveur de référentiel Git. Vous ne fournissez pas d’identifiants de connexion.

    • Authentifiez-vous avec un jeton, tel qu’un jeton d’accès personnel.

      Configurez un secret contenant le nom d’utilisateur et le jeton à utiliser, puis configurez une intégration API qui permet à Snowflake d’utiliser le secret lors de l’authentification.

    • Authentifiez-vous par le biais d’un flux OAuth.

      Configurez une intégration API pour prendre en charge l’authentification OAuth2. Dans ce cas, il n’est pas nécessaire de créer un secret.

  2. Créez un clone de référentiel Git vers lequel vous pouvez synchroniser les fichiers du référentiel distant.

L”accès via un réseau privé vous évite d’autoriser l’accès au serveur Git pour la totalité de la plage IP de déploiement de votre fournisseur Cloud Snowflake.

Vous pouvez configurer Snowflake pour établir une connectivité sortante via une connexion de lien privé sortante entre Snowflake et votre infrastructure Cloud. Snowflake achemine le trafic Git via cette connexion vers le serveur du référentiel Git.

  1. Configurez la connexion par lien privé.

    Avant de pouvoir configurer Snowflake pour l’accès au référentiel Git distant, vous devez configurer un lien privé entre Snowflake et votre fournisseur de services Cloud.

  2. Configurez l’accès de Snowflake au référentiel Git distant.

    Après avoir configuré un lien privé entre Snowflake et votre fournisseur de services Cloud, vous pouvez configurer l’accès de Snowflake au référentiel Git distant.

  3. Créez un clone de référentiel Git vers lequel vous pouvez synchroniser les fichiers du référentiel distant.

Configurer Snowflake pour un accès via un réseau public

Vous pouvez configurer Snowflake pour accéder à votre référentiel Git via un réseau public. Vous pouvez demander à Snowflake de s’authentifier en utilisant l’une des méthodes suivantes :

  • Pas d’authentification.

    Configurer une intégration API avec des informations sur le serveur de référentiel Git.

  • Authentifiez-vous avec un jeton, tel qu’un jeton d’accès personnel.

    Configurez un secret contenant le nom d’utilisateur et le jeton à utiliser, puis configurez une intégration API qui permet à Snowflake d’utiliser le secret lors de l’authentification.

  • Authentifiez-vous par le biais d’un flux OAuth.

    Configurer une intégration API pour autoriser l’un des types d’authentification suivants : OAuth2, un jeton d’accès personnel ou pas d’authentification.

    Note

    L’utilisation de OAuth pour travailler avec un référentiel Git n’est prise en charge qu’à partir d’espaces de travail et uniquement lorsque le référentiel est hébergé sur github.com. Pour plus d’informations, voir Créer un espace de travail Git.

Configurer pour aucune authentification

Schéma illustrant les composants nécessaires pour configurer la connexion Git ne nécessitant aucune authentification

Pour configurer Snowflake afin d’utiliser un référentiel Git sans authentification, procédez comme suit :

  1. Créer une intégration API qui prend en charge l’accès sans authentification, et indiquez les détails suivants :

    • git_https_api comme valeur du paramètre API_PROVIDER.

    • Les points de terminaison HTTPS vers lesquels les requêtes doivent être limitées en tant que valeurs du paramètre API_ALLOWED_PREFIXES

    Pour plus d’informations, voir CREATE API INTEGRATION.

    CREATE OR REPLACE API INTEGRATION my_git_api_integration
      API_PROVIDER = git_https_api
      API_ALLOWED_PREFIXES = ('https://example.com/my-account')
      ENABLED = TRUE;
    
    Copy
  2. Créez un référentiel Git clone comme décrit dans Créer un référentiel Git Snowflake clone.

Configurer pour l’authentification avec un jeton

Schéma illustrant les composants nécessaires pour configurer la connexion Git ne nécessitant aucune authentification

Pour que Snowflake s’authentifie auprès du référentiel Git à l’aide d’un nom d’utilisateur et d’un jeton tel qu’un jeton d’accès personnel (PAT), procédez comme suit :

  1. Fournissez des identifiants de connexion dans un secret d’authentification de base.

    Pour fournir les identifiants de connexion que Snowflake utilise pour s’authentifier auprès du référentiel, créez un secret qui contient les éléments suivants :

    • Une valeur TYPE de password

    • Un nom d’utilisateur et un jeton, comme un jeton d’accès personnel (PAT)

      Si votre référentiel Git est hébergé sur Bitbucket, spécifiez x-token-auth comme valeur du nom d’utilisateur.

      Note

      Pour plus d’informations sur la création d’un jeton d’accès personnel dans GitHub, voir Gestion de vos jetons d’accès personnels dans la documentation GitHub.

    Pour plus d’informations sur la commande SQL pour créer un secret, voir CREATE SECRET.

    Le code de l’exemple suivant crée un secret appelé my_git_secret avec un nom d’utilisateur et le jeton d’accès personnel de l’utilisateur à utiliser comme identifiants de connexion :

    CREATE OR REPLACE SECRET my_git_secret
      TYPE = password
      USERNAME = 'gladyskravitz'
      PASSWORD = 'ghp_token';
    
    Copy
  2. Créez une intégration API qui prend en charge l’authentification avec un jeton.

    Pour créer une intégration API pour l’accès à un référentiel Git sans authentification, indiquez les détails suivants :

    • git_https_api comme valeur du paramètre API_PROVIDER.

    • Les points de terminaison HTTPS vers lesquels les requêtes doivent être limitées en tant que valeurs du paramètre API_ALLOWED_PREFIXES

    Pour plus d’informations, voir CREATE API INTEGRATION.

    CREATE OR REPLACE API INTEGRATION my_git_api_integration
      API_PROVIDER = git_https_api
      API_ALLOWED_PREFIXES = ('https://github.com/my-account')
      ALLOWED_AUTHENTICATION_SECRETS = (my_git_secret)
      ENABLED = TRUE;
    
    Copy
  3. Créez un référentiel Git clone comme décrit dans Créer un référentiel Git Snowflake clone.

Configurer pour l’authentification avec OAuth

Note

L’utilisation de OAuth pour travailler avec un référentiel Git n’est prise en charge qu’à partir d’espaces de travail et uniquement lorsque le référentiel est hébergé sur github.com. Pour plus d’informations, voir Créer un espace de travail Git.

Schéma illustrant les composants nécessaires pour configurer la connexion Git ne nécessitant aucune authentification

Pour configurer Snowflake afin qu’il s’authentifie auprès du référentiel Git distant à l’aide d’un flux OAuth, procédez comme suit :

  1. Créer une intégration API qui prend en charge l’authentification via OAuth.

    Lorsque vous spécifiez l’authentification avec un flux OAuth2, créez une intégration API qui spécifie ce qui suit :

    • git_https_api comme valeur du paramètre API_PROVIDER.

    • Les points de terminaison HTTPS vers lesquels les requêtes doivent être limitées en tant que valeurs du paramètre API_ALLOWED_PREFIXES

      Il doit s’agir d’un préfixe à https://github.com. L’authentification avec OAuth est prise en charge uniquement pour les référentiels hébergés sur github.com.

    • Une API_USER_AUTHENTICATION dont la valeur est (TYPE = SNOWFLAKE_GITHUB_APP)

    Pour plus d’informations, voir CREATE API INTEGRATION.

    Le code de l’exemple suivant crée une intégration d’API appelée my_git_api_integration :

    CREATE OR REPLACE API INTEGRATION my_git_api_integration
      API_PROVIDER = git_https_api
      API_ALLOWED_PREFIXES = ('https://github.com')
      API_USER_AUTHENTICATION = (TYPE = SNOWFLAKE_GITHUB_APP)
      ENABLED = TRUE;
    
    Copy
  2. Créez un espace de travail connecté à un référentiel Git comme décrit dans la section Créer un espace de travail Git.

Configurer Snowflake pour un accès via un réseau privé

Vous pouvez configurer Snowflake pour établir une connectivité sortante via une connexion de lien privé sortante entre Snowflake et votre infrastructure Cloud. Snowflake achemine le trafic Git via cette connexion vers le serveur du référentiel Git.

Avec une connexion via lien privé, vous évitez d’autoriser l’accès au serveur Git pour la totalité de la plage IP de déploiement de votre fournisseur Cloud Snowflake. Cette section décrit les étapes à un niveau élevé.

  1. Configurez la connexion par lien privé.

    Vous appliquerez les modifications de configuration à Snowflake et à votre infrastructure de services Cloud. Cette rubrique décrit les étapes à suivre du côté de Snowflake. Pour en savoir plus sur l’ensemble des étapes, notamment sur la configuration de votre fournisseur de services Cloud, consultez l’article de la base de connaissances Configuration de l’intégration Git avec Snowflake via Private Link.

  2. Configurez l’accès de Snowflake au référentiel Git distant.

Note

Snowflake ne prend en charge que les connexions au sein d’un même cloud et d’une même région. Par exemple, si votre déploiement Snowflake se trouve sur AWS dans la région us-west-2, vos autres composants doivent également se trouver dans cette région.

Configurer l’accès de Snowflake au référentiel Git distant

Après avoir configuré un lien privé entre Snowflake et votre fournisseur de services Cloud, vous pouvez configurer l’accès de Snowflake au référentiel Git distant.

  1. Créez une intégration API qui prend en charge l’authentification avec un certificat.

    Étant donné que Snowflake accédera à votre serveur Git à l’aide du protocole HTTPS, le nom de domaine doit disposer d’un certificat valide. La configuration que vous utilisez diffère selon que vous utilisez un certificat auto-signé ou un certificat signé par une autorité de certification.

    • Utiliser un certificat auto-signé :

      Schéma illustrant les composants nécessaires pour configurer la connexion Git ne nécessitant aucune authentification
      1. Fournissez des identifiants de connexion dans un secret de chaîne générique.

        Il doit s’agir d’une clé publique d’un domaine auto-signé pour établir une connexion HTTPS. Pour fournir à Snowflake les identifiants de connexion qu’il utilisera pour s’authentifier auprès du serveur, créez un secret contenant les informations suivantes :

        • Une valeur de paramètre TYPE de GENERIC_STRING

        • Une chaîne de certificats publics comme valeur de paramètre SECRET_STRING

          Pour la valeur du paramètre, spécifiez une chaîne secrète, telle qu’un organisme de certification public.

        CREATE OR REPLACE SECRET my_public_certificate
          TYPE = GENERIC_STRING
          SECRET_STRING = '-----BEGIN CERTIFICATE-----
                    <certificate_body>
                    -----END CERTIFICATE-----';
        
        Copy
      2. Créez une intégration API pour intégrer l’API Git, et indiquez les détails suivants :

        • Un paramètre API_PROVIDER défini sur git_https_api

        • Un paramètre API_ALLOWED_PREFIXES défini sur l’URL de base en fonction de laquelle l’accès est autorisé

        • Un paramètre USE_PRIVATELINK_ENDPOINT défini sur TRUE

        • Un paramètre TLS_TRUSTED_CERTIFICATES défini sur le nom du secret que vous avez créé, qui contient le certificat

        Pour plus d’informations, voir CREATE API INTEGRATION.

        CREATE OR REPLACE API INTEGRATION my_git_api_integration
          API_PROVIDER = git_https_api
          API_ALLOWED_PREFIXES = ('https://example.com/my-account')
          ALLOWED_AUTHENTICATION_SECRETS = ALL
          USE_PRIVATELINK_ENDPOINT = TRUE
          TLS_TRUSTED_CERTIFICATES = (my_public_certificate)
          ENABLED = TRUE;
        
        Copy
    • Utilisez un certificat signé par une autorité de certification :

      Schéma illustrant les composants nécessaires pour configurer la connexion Git ne nécessitant aucune authentification
      1. Créez une intégration API pour intégrer l’API Git, et indiquez les détails suivants :

        • Un paramètre API_PROVIDER défini sur git_https_api

        • Un paramètre API_ALLOWED_PREFIXES défini sur l’URL de base en fonction de laquelle l’accès est autorisé

        • Un paramètre USE_PRIVATELINK_ENDPOINT défini sur TRUE

        • Un paramètre TLS_TRUSTED_CERTIFICATES défini sur le nom du secret que vous avez créé, qui contient le certificat

        Pour plus d’informations, voir CREATE API INTEGRATION.

        CREATE OR REPLACE API INTEGRATION my_git_api_integration
          API_PROVIDER = git_https_api
          API_ALLOWED_PREFIXES = ('https://example.com/my-account')
          ALLOWED_AUTHENTICATION_SECRETS = ALL
          USE_PRIVATELINK_ENDPOINT = TRUE
          ENABLED = TRUE;
        
        Copy
  2. Fournissez des identifiants de connexion dans un secret d’authentification de base.

    Après vous être connecté avec succès au serveur Git via un lien privé, vous devez encore vous authentifier auprès du référentiel en créant un autre secret qui fournit des identifiants de connexion pour le référentiel.

    Pour fournir les identifiants de connexion que Snowflake utilise pour s’authentifier auprès du référentiel, créez un secret qui contient les éléments suivants :

    • Une valeur TYPE de password

    • Un nom d’utilisateur et un jeton, comme un jeton d’accès personnel (PAT)

      Note

      Pour plus d’informations sur la création d’un jeton d’accès personnel dans GitHub, voir Gestion de vos jetons d’accès personnels dans la documentation GitHub.

    Pour plus d’informations sur la commande SQL pour créer un secret, voir CREATE SECRET.

  3. Créez un référentiel Git clone comme décrit dans Créer un référentiel Git Snowflake clone.

Créer un référentiel Git Snowflake clone

Pour configurer Snowflake afin qu’il fonctionne avec un référentiel Git distant, créez un clone de référentiel Git dans Snowflake qui contiendra les fichiers récupérés du référentiel distant.

Note

Avant de commencer les étapes décrites dans cette section, pensez à d’abord configurer les composants dont vous pourriez avoir besoin, notamment un secret (si le référentiel distant nécessite une authentification), une intégration API et une connexion par lien privée entre Snowflake et votre fournisseur de services Cloud.

Note

Pour plus d’informations sur la création d’un espace de travail Git dans Snowsight, voir Créer un espace de travail Git.

Un référentiel Git clone dans Snowflake spécifie les détails suivants :

  • L’origine du référentiel distant

    Dans Git, l”origin est l’URL du référentiel distant. Utilisez cette URL lorsque vous configurez Snowflake pour utiliser un référentiel Git distant. L’URL doit utiliser HTTPS. Par exemple, vous pouvez récupérer l’URL d’origine de la manière suivante :

    • Dans l’interface utilisateur GitHub, pour obtenir l’URL d’origine à partir de la page d’accueil du référentiel, sélectionnez le bouton Code, puis copiez l’URL HTTPS dans la zone affichée sous le bouton.

    • À partir de la ligne de commande, utilisez la commande git config dans votre référentiel local, comme dans l’exemple suivant :

      $ git config --get remote.origin.url
      
      Copy

      La commande génère une sortie telle que la suivante :

      https://github.com/my-account/snowflake-extensions.git
      

      Pour obtenir des informations de référence sur git config, consultez la documentation git.

  • Les identifiants de connexion, si nécessaire, que Snowflake doit utiliser lors de l’authentification avec le référentiel

    Pour le paramètre GIT_CREDENTIALS, spécifiez un secret Snowflake que vous avez créé.

  • Une intégration d’API spécifiant les détails de l’interaction de Snowflake avec l’API du référentiel

Vous pouvez créer un clone de référentiel Git en utilisant Snowsight ou SQL.

Note

Avant de créer un référentiel Git clone, vous devrez créer un secret (si le référentiel distant nécessite une authentification) et une intégration API.

Le code de l’exemple suivant crée un référentiel Git clone appelé snowflake_extensions. Le clone spécifie l’intégration API my_git_api_integration et le secret my_git_secret avec les identifiants de connexion pour l’authentification.

USE ROLE ACCOUNTADMIN;
GRANT CREATE GIT REPOSITORY ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_git_admin;

CREATE OR REPLACE GIT REPOSITORY snowflake_extensions
  API_INTEGRATION = my_git_api_integration
  GIT_CREDENTIALS = my_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy