Configuration de Snowflake pour utiliser Git

Lorsque vous intégrez un référentiel Git et que vous clonez le référentiel, Snowflake crée une zone de préparation du référentiel Git qui spécifie l’emplacement du référentiel, les identifiants de connexion (si nécessaire) et des 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 avec Snowflake, suivez les étapes suivantes :

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

  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 une zone de préparation du référentiel Git Snowflake vers laquelle vous pouvez synchroniser les fichiers du référentiel.

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

Si votre référentiel Git 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.

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 securityadmin;
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écifier, si l’authentification est requise, un secret qui contient les identifiants de connexion du référentiel 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

    • La chaîne 'all' (insensible à la casse) pour spécifier que n’importe quel secret peut être utilisé

    • La chaîne 'none' (insensible à 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 securityadmin;
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éer une zone de préparation du référentiel Git et cloner le référentiel

Pour configurer Snowflake afin de fonctionner avec un référentiel Git, créez une zone de préparation du référentiel Git qui contiendra les fichiers extraits du référentiel.

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.

La zone de préparation du référentiel Git spécifie les éléments suivants :

  • L’origine du référentiel

    Dans Git, origin est l’abréviation de l’URL du référentiel distant. Utilisez cette URL lorsque vous configurez Snowflake pour utiliser un référentiel Git. 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
      https://github.com/my-account/snowflake-extensions.git
      
      Copy

      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 une zone de préparation d’un référentiel Git, vous devez utiliser un rôle auquel ont été accordés les privilèges suivants :

  • CREATE GIT REPOSITORY sur le schéma contenant le référentiel

    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

  • USAGE sur l’intégration d’API à laquelle la zone de préparation du référentiel Git fait référence

Vous pouvez créer une zone de préparation de référentiel Git en utilisant Snowsight ou SQL.

Vous pouvez utiliser la commande CREATE GIT REPOSITORY pour créer une zone de préparation du référentiel Git.

Note

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

Le code de l’exemple suivant crée une zone de préparation du référentiel Git appelée snowflake_extensions. La zone de préparation spécifie l’intégration d’API git_api_integration et le secret myco_git_secret avec les identifiants de connexion pour l’authentification.

USE ROLE securityadmin;
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