Einrichten von Snowflake für Verwendung von Git

Wenn Sie Ihr Snowflake-Konto mit einem externen Git-Repository verbinden, erstellt Snowflake einen Klon für das Git-Repository, wobei die neueste Version aller Dateien im Repository kopiert wird (flacher Klon) und Metadaten über den Speicherort des externen Repositorys, Anmeldeinformationen (falls erforderlich) und Konfigurationsdetails darüber gespeichert werden, wie Snowflake mit der Git-Repository-API interagieren soll.

Abhängig von Ihren Anforderungen können Sie Snowflake durch die Konfiguration der Komponenten für die Authentifizierung, die Interaktion mit der Git-APIund die Kommunikation über eine private Verbindung zwischen Snowflake und Ihrem Anbieter von Clouddiensten so einrichten, dass ein externes Git-Repository zu einem integralen Bestandteil Ihres Workflows in Snowflake wird.

Auswählen eines Konfigurationsmodells

Je nach Ihren Netzwerk- und Workflow-Anforderungen können Sie Snowflake auf verschiedene Weise für den Zugriff auf ein externes Git-Repository konfigurieren. Im Folgenden finden Sie eine Auflistung von Beispiel-Anwendungsfällen und den zugehörigen Repository-Zugriffsstrategien.

  • Arbeiten Sie mit Dateien in einem Git-Repository über einen Workflow, der das Abrufen, Verschieben und Erstellen von Dateien umfasst.

    Bei Verwendung von Snowflake Workspaces können Sie eine API-Integration für OAuth2 konfigurieren, um die Benutzerauthentifizierung bei Git-Repositorys zu vereinfachen.

  • Verweisen Sie auf Dateien in einem Git-Repository als Teil einer Datenpipeline oder eines ML-Projekts.

    Wenn ein Skriptprozess auf das Repository zugreift, sollten Sie eine Authentifizierung mit einem Token in Betracht ziehen.

  • Get started by cloning a public repository (including Snowflake Labs) to run SQL scripts or notebook files in Snowflake Workspaces.

    Sie können Workspaces für .sql-Dateien, Snowflake-Notizbücher für .ipynb-Dateien oder Snowflake Workspaces für .py-Dateien verwenden.

Im Folgenden werden die Optionen für den Zugriff über ein öffentliches Netzwerk oder ein privates Netzwerk beschrieben:

Zugriff über ein öffentliches Netzwerk

Zugriff über ein privates Netzwerk

Beim Zugriff über ein öffentliches Netzwerk können Sie sich bei Ihrem entfernten Git-Repository-Server über den gesamten IP-Bereich Ihrer Snowflake-Cloudanbieter-Bereitstellung authentifizieren (da Snowflake keinen statischen IP-Bereich bereitstellt).

  1. Konfigurieren Sie Snowflake für den Zugriff auf das Repository.

    Wählen Sie eine der folgenden Authentifizierungsmethoden aus:

    • Keine Authentifizierung.

      Sie konfigurieren eine API-Integration mit Details zum Git-Repository-Server. Sie geben keine Anmeldeinformationen an.

    • Authentifizierung mit einem Token, z. B. einem persönlichen Zugriffstoken.

      Sie konfigurieren ein Geheimnis, das den Benutzernamen und das zu verwendende Token enthält, und dann eine API-Integration, die es Snowflake ermöglicht, das Geheimnis zur Authentifizierung einzusetzen.

    • Authentifizierung über einen OAuth-Ablauf.

      Sie konfigurieren eine API-Integration zur Unterstützung der OAuth2-Authentifizierung. In diesem Fall müssen Sie kein Geheimnis erstellen.

  2. Erstellen einesn Git-Repository-Klos, mit dem Sie Dateien aus dem externen Repository synchronisieren können.

Durch den Zugriff über ein privates Netzwerk wird verhindert, dass der Zugriff auf den Git-Server für den gesamten IP-Bereich Ihrer Snowflake-Cloudanbieter-Bereitstellung erlaubt wird.

Sie können Snowflake so konfigurieren, dass eine ausgehende Konnektivität über eine ausgehende Private Link-Verbindung zwischen Snowflake und Ihrer Cloud-Infrastruktur hergestellt wird. Snowflake leitet den Git-Datenverkehr über diese Verbindung zum Git-Repository-Server.

  1. Konfigurieren der Private Link-Verbindung.

    Bevor Sie Snowflake für den Zugriff auf das externe Git-Repository konfigurieren können, müssen Sie eine private Verbindung zwischen Snowflake und Ihrem Clouddienstanbieter einrichten.

  2. Konfigurieren Sie den Snowflake-Zugriff auf das externe Git-Repository.

    Nachdem Sie eine private Verbindung zwischen Snowflake und Ihrem Clouddienstanbieter eingerichtet haben, können Sie den Snowflake-Zugriff auf das externe Git-Repository konfigurieren.

  3. Erstellen einesn Git-Repository-Klos, mit dem Sie Dateien aus dem externen Repository synchronisieren können.

Konfigurieren von Snowflake für den Zugriff über ein öffentliches Netzwerk

Sie können Snowflake so einrichten, dass der Zugriff auf Ihr Git-Repository über ein öffentliches Netzwerk erfolgt. Sie können Snowflake die Authentifizierung mit einer der folgenden Strategien überlassen:

  • Keine Authentifizierung.

    Konfigurieren einer API-Integration mit Details zum Git-Repository-Server.

  • Authentifizierung mit einem Token, z. B. einem persönlichen Zugriffstoken.

    Sie konfigurieren ein Geheimnis, das den Benutzernamen und das zu verwendende Token enthält, und dann eine API-Integration, die es Snowflake ermöglicht, das Geheimnis zur Authentifizierung einzusetzen.

  • Authentifizierung über einen OAuth-Ablauf.

    Configure an API integration to allow for an OAuth2 flow.

Konfiguration bei Verzicht auf Authentifizierung

Diagramm mit den Komponenten, die zum Konfigurieren einer Git-Verbindung ohne Authentifizierung benötigt werden

Führen Sie die folgenden Schritte aus, um Snowflake für die Verwendung eines Git-Repositorys ohne Authentifizierung einzurichten:

  1. Erstellen Sie eine API-Integration, die den Zugriff ohne Authentifizierung unterstützt, und geben Sie die folgenden Details an:

    • git_https_api als Wert des Parameters API_PROVIDER

    • HTTPS-Endpunkte, auf die Anforderungen als Werte des Parameters API_ALLOWED_PREFIXES beschränkt sein müssen

    Weitere Informationen dazu finden Sie unter 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. Erstellen Sie einen Git-Repository-Klon wie unter Erstellen eines Snowflake-Git-Repository-Klons beschrieben.

Konfiguration für die Authentifizierung mit einem Token

Diagramm mit den Komponenten, die zum Konfigurieren einer Git-Verbindung ohne Authentifizierung benötigt werden

Damit sich Snowflake beim Git-Repository mit Benutzername und Token, wie etwa einem persönlichen Zugriffstoken (PAT), authentifiziert, gehen Sie wie folgt vor:

  1. Stellen Sie Anmeldeinformationen in einem Geheimnis der Basisauthentifizierung bereit.

    Um die Anmeldeinformationen bereitzustellen, die Snowflake für die Authentifizierung beim Repository verwendet, erstellen Sie ein Geheimnis, das Folgendes enthält:

    Weitere Informationen zum SQL-Befehl zum Erstellen eines Geheimnisses finden Sie unter CREATE SECRET.

    Der Code im folgenden Beispiel erstellt ein Geheimnis namens my_git_secret mit einem Benutzernamen und dem persönlichen Zugriffstoken des Benutzers, das als Anmeldeinformation verwendet wird:

    CREATE OR REPLACE SECRET db.schema.my_git_secret
      TYPE = password
      USERNAME = 'gladyskravitz'
      PASSWORD = 'ghp_token';
    
    Copy
  2. Erstellen Sie eine API-Integration, die die Authentifizierung mit einem -Token unterstützt.

    Um eine API-Integration für den Zugriff auf ein Git-Repository ohne Authentifizierung zu erstellen, geben Sie die folgenden Details an:

    • git_https_api als Wert des Parameters API_PROVIDER

    • HTTPS-Endpunkte, auf die Anforderungen als Werte des Parameters API_ALLOWED_PREFIXES beschränkt sein müssen

    Weitere Informationen dazu finden Sie unter 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. Erstellen Sie einen Git-Repository-Klon wie unter Erstellen eines Snowflake-Git-Repository-Klons beschrieben.

Konfiguration für die Authentifizierung mit OAuth

Diagramm mit den Komponenten, die zum Konfigurieren einer Git-Verbindung ohne Authentifizierung benötigt werden

You can configure Snowflake to authenticate with the remote Git repository using an OAuth2 flow. How you set up for OAuth2 authentication differs depending on the repository provider.

  • Wenn Sie GitHub verwenden, können Sie eine API-Integration erstellen, die die Snowflake GitHub-App zum Authentifizieren verwendet.

    Die Snowflake GitHub-App ist eine vorkonfigurierte OAuth2-Anwendung, die von Snowflake verwendet wird und die die Authentifizierung vereinfachen soll. Sie müssen diese App nicht konfigurieren. Sie müssen nur eine API-Integration erstellen, die die Snowflake GitHub-App angibt.

  • Für alle Repository-Anbieter einschließlich GitHub können Sie stattdessen eine API-Integration erstellen, die Werte für OAuth2-Parameter angibt, einschließlich der Client-ID und des Geheimnisses, die bei der Authentifizierung verwendet werden sollen.

    Bevor Sie die API-Integration erstellen, sammeln Sie OAuth2-Parameter für Ihren Repository-Anbieter, einschließlich der Client-ID und des Geheimnisses. Sie geben diese Werte in der API-Integration an.

    Weitere Informationen dazu finden Sie in der Dokumentation des Repository-Anbieters.

To set up Snowflake so that it authenticates with the remote Git repository using an OAuth2 flow, follow these steps:

  1. Create an API integration that supports authenticating through OAuth2.

    Create an API integration that specifies the following values:

    • An API_PROVIDER parameter value of git_https_api

    • Ein API_ALLOWED_PREFIXES-Parameterwert, der die HTTPS-Endpunkte angibt, auf die Anforderungen beschränkt sein müssen

    • Ein API_USER_AUTHENTICATION-Wert, der dem von Ihnen verwendeten Git-Repository-Anbieter entspricht

      • When authenticating with GitHub using the Snowflake GitHub App, specify (TYPE = SNOWFLAKE_GITHUB_APP).

      • Bei Authentifizierung bei einem Repository-Anbieter ohne Verwendung der Snowflake GitHub-App – wie bei einem beliebigen Repository-Anbieter außer GitHub – geben Sie Werte für die folgenden Parameter an, wie unter CREATE API INTEGRATION beschrieben:

        • OAUTH_CLIENT_ID

        • OAUTH_CLIENT_SECRET

        • API_USER_AUTHENTICATION

        • OAUTH_AUTHORIZATION_ENDPOINT

        • OAUTH_TOKEN_ENDPOINT

        • OAUTH_ACCESS_TOKEN_VALIDITY

        • OAUTH_REFRESH_TOKEN_VALIDITY

        • OAUTH_ALLOWED_SCOPES

    Code in the following examples creates an API integration called 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. Erstellen Sie einen Arbeitsbereich, der mit einem Git-Repository verbunden ist, wie unter Einen Git-Arbeitsbereich erstellen beschrieben.

Konfigurieren von Snowflake für den Zugriff über ein privates Netzwerk

Sie können Snowflake so konfigurieren, dass eine ausgehende Konnektivität über eine ausgehende Private Link-Verbindung zwischen Snowflake und Ihrer Cloud-Infrastruktur hergestellt wird. Snowflake leitet den Git-Datenverkehr über diese Verbindung zum Git-Repository-Server.

Mit einer Private Link-Verbindung vermeiden Sie den Zugriff auf den Git-Server für den gesamten IP-Bereich Ihrer Snowflake-Cloudanbieter-Bereitstellung. In diesem Abschnitt werden die Schritte in allgemeiner Form beschrieben.

  1. Konfigurieren der Private Link-Verbindung.

    Sie werden Konfigurationsänderungen sowohl auf Snowflake als auch auf Ihre Clouddienst-Infrastruktur anwenden. Unter diesem Thema werden die Schritte auf der Snowflake-Seite beschrieben. Details zu allen Schritten, einschließlich der Konfiguration Ihres Clouddienstanbieters, finden Sie im Knowledge Base-Artikel Konfigurieren der Git-Integration mit Snowflake über Private Link.

  2. Konfigurieren Sie den Snowflake-Zugriff auf das externe Git-Repository.

Bemerkung

Snowflake unterstützt nur Verbindungen innerhalb der gleichen Cloud und Region. Wenn sich Ihre Snowflake-Bereitstellung zum Beispiel auf AWS befindet und Sie in der Region „us-west-2“ tätig sind, dann müssen sich Ihre anderen Komponenten ebenfalls in dieser Region befinden.

Konfigurieren des Snowflake-Zugriffs auf das externe Git-Repository

Nachdem Sie eine private Verbindung zwischen Snowflake und Ihrem Clouddienstanbieter eingerichtet haben, können Sie den Snowflake-Zugriff auf das externe Git-Repository konfigurieren.

  1. Erstellen Sie eine API-Integration, die die Authentifizierung mit einem Zertifikat unterstützt.

    Da Snowflake Ihren Git-Server über das HTTPS-Protokoll erreicht, muss der Domänenname ein gültiges Zertifikat haben. Die von Ihnen verwendete Konfiguration unterscheidet sich je nachdem, ob Sie ein selbstsigniertes Zertifikat oder ein von einer Zertifizierungsstelle signiertes Zertifikat verwenden.

    • Verwenden eines selbstsignierten Zertifikats:

      Diagramm mit den Komponenten, die zum Konfigurieren einer Git-Verbindung ohne Authentifizierung benötigt werden
      1. Stellen Sie Anmeldeinformationen in einem allgemeinen Zeichenfolgengeheimnis bereit.

        Dies sollte ein öffentlicher Schlüssel einer selbstsignierten Domäne sein, über die eine HTTPS-Verbindung hergestellt wird. Um Snowflake die Anmeldeinformationen zur Verfügung zu stellen, die für die Authentifizierung beim Server verwendet werden sollen, erstellen Sie ein Geheimnis mit den folgenden Details:

        • Ein TYPE-Parameterwert von GENERIC_STRING

        • Eine Zeichenfolge für das öffentliche Zertifikat als Wert des SECRET_STRING-Parameters

          Geben Sie für den Wert des Parameters eine Geheimnis-Zeichenfolge an, z. B. eine öffentliche Zertifizierungsstelle.

        CREATE OR REPLACE SECRET my_public_certificate
          TYPE = GENERIC_STRING
          SECRET_STRING = '-----BEGIN CERTIFICATE-----
                    <certificate_body>
                    -----END CERTIFICATE-----';
        
        Copy
      2. Erstellen Sie eine API-Integration zur Integration in die Git-API, und geben die folgenden Details an:

        • Ein API_PROVIDER-Parameter, der auf git_https_api gesetzt ist

        • Eine API_ALLOWED_PREFIXES, die auf die Basis-URL eingestellt ist, unterhalb derer der Zugriff erlaubt ist

        • Ein USE_PRIVATELINK_ENDPOINT-Parameter, der auf TRUE gesetzt ist

        • Ein TLS_TRUSTED_CERTIFICATES-Parameter, der auf den Namen des von Ihnen erstellten Geheimnisses mit dem Zertifikat gesetzt ist

        Weitere Informationen dazu finden Sie unter 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
    • Verwenden eines von einer Zertifizierungsstelle signierten Zertifikats:

      Diagramm mit den Komponenten, die zum Konfigurieren einer Git-Verbindung ohne Authentifizierung benötigt werden
      1. Erstellen Sie eine API-Integration zur Integration in die Git-API, und geben die folgenden Details an:

        • Ein API_PROVIDER-Parameter, der auf git_https_api gesetzt ist

        • Eine API_ALLOWED_PREFIXES, die auf die Basis-URL eingestellt ist, unterhalb derer der Zugriff erlaubt ist

        • Ein USE_PRIVATELINK_ENDPOINT-Parameter, der auf TRUE gesetzt ist

        • Ein TLS_TRUSTED_CERTIFICATES-Parameter, der auf den Namen des von Ihnen erstellten Geheimnisses mit dem Zertifikat gesetzt ist

        Weitere Informationen dazu finden Sie unter 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. Stellen Sie Anmeldeinformationen in einem Geheimnis der Basisauthentifizierung bereit.

    Nachdem Sie erfolgreich eine Verbindung zum Git-Server über einen privaten Link hergestellt haben, müssen Sie sich weiterhin beim Repository authentifizieren, indem Sie ein weiteres Geheimnis erstellen, das Anmeldeinformationen für das Repository bereitstellt.

    Um die Anmeldeinformationen bereitzustellen, die Snowflake für die Authentifizierung beim Repository verwendet, erstellen Sie ein Geheimnis, das Folgendes enthält:

    Weitere Informationen zum SQL-Befehl zum Erstellen eines Geheimnisses finden Sie unter CREATE SECRET.

  3. Erstellen Sie einen Git-Repository-Klon wie unter Erstellen eines Snowflake-Git-Repository-Klons beschrieben.

Erstellen eines Snowflake-Git-Repository-Klons

Um Snowflake für die Arbeit mit einem externen Git-Repository einzurichten, erstellen Sie in Snowflake einen Git-Repository-Klon, der die aus dem externen Repository abgerufenen Dateien enthält.

Bemerkung

Bevor Sie mit den Schritten in diesem Abschnitt beginnen, sollten Sie zuerst Komponenten konfigurieren, die Sie möglicherweise benötigen, einschließlich eines Geheimnisses (wenn das externe Repository eine Authentifizierung erfordert), einer API-Integration und einer Private Link-Verbindung zwischen Snowflake und Ihrem Clouddienstanbieter.

Bemerkung

Weitere Informationen zum Erstellen eines Git-Arbeitsbereichs in Snowsight finden Sie unter Einen Git-Arbeitsbereich erstellen.

Ein Git-Repository-Klon in Snowflake gibt die folgenden Details an:

  • Ursprung des externen Repositorys

    In Git ist origin die URL des externen Repositorys. Verwenden Sie diese URL, wenn Sie Snowflake für die Verwendung eines Git-Repositorys einrichten. Die URL muss HTTPS verwenden. Sie können die ursprüngliche URL auf folgende Weisen abrufen:

    • In der GitHub-Benutzeroberfläche können Sie die ursprüngliche URL von der Startseite des Repositorys abrufen. Klicken Sie auf die Schaltfläche Code, und kopieren Sie dann die HTTPS-URL aus dem Feld, das unter der Schaltfläche angezeigt wird.

    • Über die Befehlszeile: Verwenden Sie von Ihrem lokalen Repository aus den Befehl git config, wie im folgenden Beispiel gezeigt:

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

      Der Befehl erzeugt eine Ausgabe wie die folgende:

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

      Referenzinformationen zu git config finden Sie in der Git-Dokumentation.

  • Anmeldeinformationen, falls erforderlich, die Snowflake bei der Authentifizierung am Repository verwenden soll

    Geben Sie für den Parameter GIT_CREDENTIALS ein von Ihnen erstelltes Snowflake-Geheimnis an.

  • Eine API-Integration, die Details zur Interaktion von Snowflake mit der Repository-API angibt

Sie können einen Git-Repository-Klon erstellen, indem Sie entweder Snowsight oder SQL verwenden.

Bemerkung

Bevor Sie einen Git-Repository-Klon erstellen, müssen Sie ein Geheimnis (wenn das externe Repository eine Authentifizierung erfordert) und eine API-Integration erstellen.

Der Code im folgenden Beispiel erstellt einen Git-Repository-Klon namens snowflake_extensions. Der Klon gibt die my_git_api_integration API-Integration und das my_git_secret-Geheimnis mit den Anmeldeinformationen für die Authentifizierung an.

USE ROLE ACCOUNTADMIN;
GRANT CREATE GIT REPOSITORY ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;
GRANT USAGE ON INTEGRATION my_git_api_integration TO ROLE myco_git_admin;
GRANT USAGE ON SECRET db.schema.my_git_secret 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