Configuration de Snowflake pour utiliser Git

Lorsque vous intégrez un référentiel Git distant et que vous clonez le référentiel, Snowflake crée un clone de référentiel Git qui spécifie l’emplacement du référentiel distant, les identifiants de connexion (si nécessaire) et les détails sur la façon dont Snowflake doit interagir avec l’API du référentiel Git.

Pour utiliser un référentiel Git distant avec Snowflake, procédez comme suit :

  1. Créez un secret, si nécessaire, pour conserver les identifiants de connexion avec le référentiel distant.

  2. Créez une intégration d’API pour spécifier les détails de l’interaction de Snowflake avec l’API du référentiel Git.

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

Créer un secret avec des identifiants de connexion pour l’authentification

Si votre référentiel Git distant nécessite une authentification, vous devrez créer un secret qui contient les identifiants de connexion que Snowflake peut utiliser pour s’authentifier auprès du référentiel distant.

Vous utiliserez le secret de multiples façons. Une personne créant une intégration d’API qui spécifie l’interaction de Snowflake avec l’API du référentiel Git doit spécifier ce secret comme valeur du paramètre ALLOWED_AUTHENTICATION_SECRETS. De plus, une personne qui configure Snowflake pour utiliser Git précise le secret.

Pour créer un secret, vous devez utiliser un rôle qui vous a été attribué avec les privilèges suivants :

Une bonne pratique consiste à utiliser un jeton d’accès personnel pour la valeur PASSWORD du secret. 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.

SQL:

Vous pouvez utiliser la commande CREATE SECRET pour créer un secret contenant les identifiants de connexion du référentiel Git.

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

USE ROLE ACCOUNTADMIN;
CREATE ROLE myco_secrets_admin;
GRANT CREATE SECRET ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_secrets_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_secrets_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE SECRET myco_git_secret
  TYPE = password
  USERNAME = 'gladyskravitz'
  PASSWORD = 'ghp_token';
Copy

Créer une API d’intégration pour interagir avec l’API du référentiel

Pour spécifier les détails de l’interaction de Snowflake avec l’API du référentiel Git, vous devez créer une intégration d’API.

Une personne qui crée un compte Snowflake pour utiliser Git spécifiera l’intégration d’API à utiliser.

Pour créer une intégration d’API, vous devez utiliser un rôle qui a les privilèges suivants :

Lorsque vous créez une intégration d’API pour une API de référentiel Git, vous devez :

  • Indiquer git_https_api comme valeur du paramètre API_PROVIDER.

  • Spécifiez, si l’authentification est requise, un secret qui contient les identifiants de connexion du référentiel distant en tant que valeur du paramètre ALLOWED_AUTHENTICATION_SECRETS. Vous pouvez spécifier l’une des valeurs suivantes :

    • Un ou plusieurs secrets Snowflake (dans une liste séparée par des virgules) que Snowflake peut utiliser lors de l’authentification avec le référentiel.

    • all (Non sensible à la casse) pour spécifier que n’importe quel secret peut être utilisé.

    • none (Non sensible à la casse) pour spécifier qu’aucun secret ne peut être utilisé.

SQL:

Vous pouvez utiliser la commande CREATE API INTEGRATION pour créer une intégration d’API qui spécifie les détails de l’interaction de Snowflake avec l’API du référentiel Git.

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

USE ROLE ACCOUNTADMIN;
CREATE ROLE myco_git_admin;
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE myco_git_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_git_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_secrets_admin;
GRANT USAGE ON SECRET myco_git_secret TO ROLE myco_git_admin;

USE ROLE myco_git_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE API INTEGRATION git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-account')
  ALLOWED_AUTHENTICATION_SECRETS = (myco_git_secret)
  ENABLED = TRUE;
Copy

Créez un clone de référentiel Git Snowflake à partir du référentiel distant

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 de cette section, pensez d’abord à créer un secret (si le référentiel distant nécessite une authentification) et une intégration d’API. Vous pourriez avoir besoin des deux.

Le clone du référentiel Git spécifie les éléments suivants :

  • L’origine du référentiel distant

    Dans Git, origin est l’abréviation de l’URL du référentiel distant. Utilisez cette URL lorsque vous configurez Snowflake pour qu’il utilise un référentiel Git distant. L’URL doit utiliser HTTPS. 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

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

Pour créer un clone de référentiel Git dans Snowflake, vous devez utiliser un rôle auquel les privilèges suivants ont été accordés :

  • Privilège CREATE GIT REPOSITORY pour le schéma qui contient le clone du référentiel Git

    Pour plus d’informations, voir les exigences de contrôle d’accès CREATE GIT REPOSITORY.

  • USAGE sur le secret qui contient les identifiants de connexion pour s’authentifier avec Git

  • Privilège USAGE pour l’intégration de l’API à laquelle le clone du référentiel Git fait référence

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

Note

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

Le code de l’exemple suivant crée un clone de référentiel Git appelé snowflake_extensions. Le clone spécifie git_api_integration l’intégration API et le secret myco_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 = git_api_integration
  GIT_CREDENTIALS = myco_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy