Gitを使用するためのSnowflakeの設定

SnowflakeアカウントをリモートGitリポジトリに接続すると、SnowflakeはGitリポジトリクローンを作成し、リポジトリ内のすべてのファイルの最新バージョンをコピー(シャロークローン)して、リモートリポジトリの場所に関するメタデータと、認証情報(必要な場合)、およびSnowflakeがGitリポジトリ API とやり取りする構成の詳細を保存します。

要件に応じて、認証用のコンポーネントを構成することで、Git API との相互作用と、Snowflakeとクラウドサービスプロバイダー間のプライベートリンクを介した通信により、リモートGitリポジトリがSnowflake内のワークフローの不可欠な部分になるようにSnowflakeを設定できます。

構成モデルを選択する

ネットワークとワークフローの要件に応じて、いくつかの方法でリモートのGitリポジトリにアクセスできるようにSnowflakeを構成できます。以下は、ユースケースの例と、それらをサポートするために使用するリポジトリアクセス戦略の一覧です。

  • ファイルのプル、プッシュ、作成を含むワークフローを通じて、Gitリポジトリ上のファイルを操作します。

    Snowflakeワークスペース の使用を検討してください。github.comでリポジトリを使用している場合は、:ref:` OAuth <label-git_setup_oauth> で認証できます`。

  • データパイプラインまたは ML プロジェクトの一部として、Gitリポジトリ上のファイルを参照します。

    スクリプトプロセスがリポジトリにアクセスする場合は、トークンを使用した認証 を検討してください。

  • スクリプトまたはノートブックファイルを実行するために、パブリックリポジトリ(Snowflakeラボを含む)をクローンすることから始めましょう。

    .sql ファイル、 Snowflakeノートブック.ipynb ファイル、または Snowflakeワークスペース.py ファイルのワークスペースを使用できます。

以下では、パブリックネットワークまたはプライベートネットワークでアクセスするかどうかのオプションについて説明します。

パブリックネットワーク経由でのアクセス

プライベートネットワーク経由でのアクセス

パブリックネットワーク経由でのアクセス により、Snowflakeクラウドプロバイダーデプロイメントの IP 範囲全体を使って、リモートのGitリポジトリサーバーを認証できます(Snowflakeは静的 IP 範囲を提供しないため)。

  1. リポジトリへのアクセス用にSnowflakeを構成します。

    以下の認証方法のいずれかを選択します。

    • 認証なし

      の構成Gitリポジトリサーバーの詳細と API の統合を構成します。認証情報は提供しません。

    • 個人用アクセストークンなど トークンで認証する

      ユーザー名とトークンを含むシークレットを構成したら、認証時にSnowflakeがシークレットを使用できるよう API 統合を構成します。

    • OAuth フロー で認証する。

      OAuth2 認証をサポートする API 統合を構成します。この場合、シークレットを作成する必要はありません。

  2. Git リポジトリのクローンを作成 し、リモートリポジトリからファイルを同期できるようにします。

プライベートネットワーク経由でのアクセス では、Snowflakeクラウドプロバイダーデプロイメントの IP 範囲全体にGitサーバーへのアクセスを許可する必要がなくなります。

Snowflakeとクラウドインフラストラクチャ間のアウトバウンドプライベートリンクを介して、アウトバウンド接続を確立するようにSnowflakeを構成できます。Snowflakeは、この接続を介してGitリポジトリサーバーにGitトラフィックをルーティングします。

  1. プライベートリンクの接続を構成する

    リモートGitリポジトリにアクセスできるようにSnowflakeを構成する前に、Snowflakeとクラウドサービスプロバイダーの間にプライベートリンクを設定する必要があります。

  2. リモートGitリポジトリへのSnowflakeアクセスを構成する

    Snowflakeとクラウドサービスプロバイダーの間にプライベートリンクを設定したら、SnowflakeのリモートGitリポジトリへのアクセスを構成できます。

  3. Git リポジトリのクローンを作成 し、リモートリポジトリからファイルを同期できるようにします。

パブリックネットワークを介してアクセスするためにSnowflakeを構成する

パブリックネットワークを介してGitリポジトリにアクセスするようSnowflakeを設定できます。次の戦略のいずれかを使用して、Snowflakeを認証させることができます。

  • 認証なし

    Gitリポジトリサーバーの詳細を含む API 統合を構成します。

  • 個人用アクセストークンなど トークンで認証する

    ユーザー名とトークンを含むシークレットを構成したら、認証時にSnowflakeがシークレットを使用できるよう API 統合を構成します。

  • OAuth フロー で認証する。

    以下の認証タイプのいずれかを許可する API 統合を構成します。OAuth2、個人用アクセストークン、または認証なし。

    注釈

    OAuth を使用してGitリポジトリを操作できるのは、ワークスペースからのみで、リポジトリがgithub.comでホストされている場合のみに限られます。詳細については、 Gitワークスペースの作成 をご参照ください。

認証なし用に構成する

認証なしのGit接続を構成するために必要なコンポーネントを示す図

認証なしでGitリポジトリを使用するためにSnowflakeを設定するには、次のステップに従います。

  1. 認証なしでアクセスをサポートする API 統合を作成し、次の詳細を指定します。

    • API_PROVIDER パラメーターの値としての git_https_api

    • API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント

    詳細については、 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. Snowflake Gitリポジトリクローンを作成する の説明に従って、Gitリポジトリのクローンを作成します。

トークンによる認証用に構成する

認証なしのGit接続を構成するために必要なコンポーネントを示す図

ユーザー名と個人アクセストークン(PAT)などのトークンを使用して、SnowflakeにGitリポジトリで認証させるには、次のステップに従います。

  1. 基本認証シークレット に認証情報を提供します。

    Snowflakeがリポジトリでの認証に使用する認証情報を提供するには、以下を含むシークレットを作成します。

    シークレットを作成するための SQL コマンドの詳細については、CREATE SECRET をご参照ください。

    次の例のコードは、ユーザー名と、認証情報として使用するユーザーの個人アクセストークンを含む my_git_secret というシークレットを作成します。

    CREATE OR REPLACE SECRET my_git_secret
      TYPE = password
      USERNAME = 'gladyskravitz'
      PASSWORD = 'ghp_token';
    
    Copy
  2. トークンでの認証をサポートする API 統合を作成します。

    認証なしでGitリポジトリにアクセスできる API 統合を作成するには、次の詳細を指定します。

    • API_PROVIDER パラメーターの値としての git_https_api

    • API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント

    詳細については、 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. Snowflake Gitリポジトリクローンを作成する の説明に従って、Gitリポジトリのクローンを作成します。

OAuth で認証するために構成する

注釈

OAuth を使用してGitリポジトリを操作できるのは、ワークスペースからのみで、リポジトリがgithub.comでホストされている場合のみに限られます。詳細については、 Gitワークスペースの作成 をご参照ください。

認証なしのGit接続を構成するために必要なコンポーネントを示す図

OAuth フローを使用してリモートGitリポジトリで認証するようにSnowflakeを設定するには、以下のステップに従います。

  1. OAuth による認証をサポートする API 統合を作成します。

    OAuth2 フローで認証コードを指定する場合、次を指定する API 統合を作成します。

    • API_PROVIDER パラメーターの値としての git_https_api

    • API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント

      これは https://github.com のプレフィックスである必要があります。OAuth を使用した認証は、github.comでホストされているリポジトリでのみサポートされます。

    • API_USER_AUTHENTICATION の値が (TYPE = SNOWFLAKE_GITHUB_APP)

    詳細については、 CREATE API INTEGRATION をご参照ください。

    次の例のコードは、 API という 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. Gitワークスペースの作成 の説明に従って、Gitリポジトリに接続されたワークスペースを作成します。

プライベートネットワーク経由でアクセスするためにSnowflakeを構成する

Snowflakeとクラウドインフラストラクチャ間のアウトバウンドプライベートリンクを介して、アウトバウンド接続を確立するようにSnowflakeを構成できます。Snowflakeは、この接続を介してGitリポジトリサーバーにGitトラフィックをルーティングします。

プライベートリンク接続を使用すると、GitサーバーへのアクセスをSnowflakeクラウドプロバイダーデプロイメントの IP 範囲全体に許可する必要がなくなります。このセクションでは、高レベルのステップについて説明します。

  1. プライベートリンクの接続を構成する

    Snowflakeとクラウドサービスインフラストラクチャの両方に構成の変更を適用します。このトピックでは、Snowflake側の手順について説明します。クラウドサービスプロバイダーの構成など、すべての手順の詳細については、ナレッジベース記事 プライベートリンクを介してSnowflakeとのGit統合を構成する をご参照ください。

  2. リモートGitリポジトリへのSnowflakeアクセスを構成する

注釈

Snowflakeは、同じクラウドおよびリージョン内の接続のみをサポートします。たとえば、Snowflakeのデプロイメントがus-west-2リージョンの AWS にある場合、他のコンポーネントもそのリージョンにある必要があります。

リモートGitリポジトリへのSnowflakeアクセスを構成する

Snowflakeとクラウドサービスプロバイダーの間にプライベートリンクを設定したら、リモートGitリポジトリへのSnowflakeアクセスを構成できます。

  1. トークンでの認証をサポートする API 統合を作成します。

    Snowflakeは HTTPS プロトコルを使用してGitサーバーにアクセスするため、ドメイン名には有効な証明書が必要です。使用する構成は、自己署名証明書を使用するか、証明機関によって署名された証明書を使用するかによって異なります。

    • 自己署名証明書の使用。

      認証なしのGit接続を構成するために必要なコンポーネントを示す図
      1. 一般的なシークレット文字列 で認証情報を提供します。

        これは、HTTPS 接続を確立するために自己署名ドメインのパブリックキーである必要があります。サーバーとの認証に使用する認証情報をSnowflakeに提供するには、次の詳細を含むシークレットを作成します。

        • GENERIC_STRING の TYPE パラメーター値

        • SECRET_STRING パラメーターの値としてのパブリック証明書文字列

          パラメーターの値には、パブリック証明書本文のような秘密文字列を指定します。

        CREATE OR REPLACE SECRET my_public_certificate
          TYPE = GENERIC_STRING
          SECRET_STRING = '-----BEGIN CERTIFICATE-----
                    <certificate_body>
                    -----END CERTIFICATE-----';
        
        Copy
      2. Git API と統合するための API 統合を作成し、次の詳細を指定します。

        • git_https_api に設定された API_PROVIDERパラメーター

        • ベースの URLに API_ALLOWED_PREFIXES を設定すると、その下でアクセスが許可されます

        • TRUE に設定されたUSE_PRIVATELINK_ENDPOINTパラメーター

        • TLS_TRUSTED_CERTIFICATES パラメーターを作成したシークレットの名前に設定します。これには証明書が含まれます

        詳細については、 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
    • 証明機関によって署名された証明書の使用。

      認証なしのGit接続を構成するために必要なコンポーネントを示す図
      1. Git API と統合するための API 統合を作成し、次の詳細を指定します。

        • git_https_api に設定された API_PROVIDERパラメーター

        • ベースの URLに API_ALLOWED_PREFIXES を設定すると、その下でアクセスが許可されます

        • TRUE に設定されたUSE_PRIVATELINK_ENDPOINTパラメーター

        • TLS_TRUSTED_CERTIFICATES パラメーターを作成したシークレットの名前に設定します。これには証明書が含まれます

        詳細については、 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. 基本認証シークレット に認証情報を提供します。

    プライベートリンクを介して正常にGitサーバーに接続した後も、リポジトリの認証情報を提供する別のシークレットを作成して、リポジトリで認証する必要があります。

    Snowflakeがリポジトリでの認証に使用する認証情報を提供するには、以下を含むシークレットを作成します。

    シークレットを作成するための SQL コマンドの詳細については、CREATE SECRET をご参照ください。

  3. Snowflake Gitリポジトリクローンを作成する の説明に従って、Gitリポジトリのクローンを作成します。

Snowflake Gitリポジトリクローンを作成する

リモートの Git リポジトリで動作するように Snowflake をセットアップするには、リモートリポジトリから取得したファイルを含む Git リポジトリのクローンを Snowflake に作成します。

注釈

このセクションのステップを開始する前に、次のことを考慮してください。まず シークレット(リモートリポジトリに認証が必要な場合)、API 統合、およびSnowflakeとクラウドサービスプロバイダー間のプライベートリンク接続など、必要な可能性のあるコンポーネントを構成します。

注釈

Snowsight でのGitワークスペースの作成に関する情報は、Gitワークスペースの作成 をご参照ください。

SnowflakeのGitリポジトリクローンは、次の詳細を指定します。

  • リモートリポジトリのオリジン

    Gitでは、origin はリモートリポジトリの URL です。リモートGitリポジトリを使用できるようSnowflakeを設定するときは、この URL を使用します。URL には HTTPS を使用する必要があります。たとえば、原点のURL は次の方法で取得できます。

    • GitHub ユーザーインターフェイスで、リポジトリのホームページから原点の URL を取得できます。Code ボタンを選択し、ボタンの下に表示されるボックスから HTTPS URL をコピーします。

    • コマンドラインから、次の例のように、ローカルリポジトリ内から git config コマンドを使用します。

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

      コマンドは次のような出力を生成します。

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

      git config に関する参照情報については、 gitドキュメント をご参照ください。

  • リポジトリで認証するときにSnowflakeが使用する認証情報(必要な場合)

    GIT_CREDENTIALS パラメーターは、作成したSnowflakeの シークレット を指定します。

  • Snowflakeとリポジトリ :doc:` のやり取りの詳細を指定する API </sql-reference/sql/create-api-integration> 統合 `API

Git リポジトリのクローンを作成するには、 Snowsight または SQL を使います。

注釈

Gitリポジトリクローンを作成する前に、シークレット </sql-reference/sql/create-secret>`(リモートリポジトリに認証が必要な場合)および :doc: API 統合 </sql-reference/sql/create-api-integration>` を作成する必要があります。

次の例のコードは、snowflake_extensions というGitリポジトリクローンを作成します。このクローンは、my_git_api_integration API 統合および認証用の認証情報を含む my_git_secret シークレットを指定します。

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