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.

    Erwägen Sie die Verwendung von Snowflake Workspaces. Wenn Sie ein Repository unter github.com verwenden, besteht die Möglichkeit zur Authentifizierung mit OAuth.

  • 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.

  • Klonen Sie zunächst ein öffentliches Repository (einschließlich Snowflake Labs), um Skripte oder Notizbuchdateien auszuführen.

    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.

    Konfigurieren einer API-Integration für einen der folgenden Authentifizierungstypen: OAuth2, ein persönliches Zugriffstoken oder keine Authentifizierung.

    Bemerkung

    Die Verwendung von OAuth für die Arbeit mit einem Git-Repository wird nur von Workspaces aus unterstützt und nur, wenn das Repository unter github.com gehostet wird. Weitere Informationen dazu finden Sie unter Einen Git-Arbeitsbereich erstellen.

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

Bemerkung

Die Verwendung von OAuth für die Arbeit mit einem Git-Repository wird nur von Workspaces aus unterstützt und nur, wenn das Repository unter github.com gehostet wird. Weitere Informationen dazu finden Sie unter Einen Git-Arbeitsbereich erstellen.

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

Gehen Sie wie folgt vor, um Snowflake so einzurichten, dass es sich beim externen Git-Repository über einen OAuth-Ablauf authentifiziert:

  1. Erstellen Sie eine API-Integration, die die Authentifizierung über OAuth unterstützt.

    Wenn Sie die Authentifizierung mit einem OAuth2-Ablauf angeben, erstellen Sie eine API-Integration, die Folgendes angibt:

    • 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

      Dies muss ein Präfix bei https://github.com sein. Die Authentifizierung mit OAuth wird nur für Repositorys unterstützt, die auf github.com gehostet werden.

    • Eine API_USER_AUTHENTICATION mit dem Wert (TYPE = SNOWFLAKE_GITHUB_APP)

    Weitere Informationen dazu finden Sie unter CREATE API INTEGRATION.

    Der Code im folgenden Beispiel erstellt eine API-Integration namens 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;

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