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

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

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

構成モデルを選択する

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

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

    Snowflakeワークスペース を使用する場合は、Gitリポジトリへのユーザー認証を簡素化するOAuth2用のAPI統合を構成できます。

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

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

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

    .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 フロー で認証する。

    Configure an API integration to allow for an OAuth2 flow.

認証なし用に構成する

認証なしの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 db.schema.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 で認証するために構成する

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

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.

  • GitHubを使用している場合、認証に Snowflake GitHubアプリ を使用するAPI統合を作成できます。

    Snowflake GitHubアプリは、Snowflakeによって使用される、容易に認証するために設計された、事前に構成されたOAuth2アプリケーションです。このアプリを構成する必要はありません。 Snowflake GitHubアプリ を指定するAPI統合を作成するだけです。

  • GitHubを含むすべてのリポジトリプロバイダーの場合、代わりに認証時に使用するクライアントIDとシークレット含む OAuth2パラメーター の値を指定するAPI統合を作成できます。

    API統合を作成する前に、クライアントIDおよびシークレット含むリポジトリプロバイダー用のOAuth2パラメーターを収集します。これらの値はAPI統合で指定します。

    詳細については、リポジトリプロバイダーのドキュメントをご参照ください。

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

    • リクエストを制限する必要があるHTTPSエンドポイントを指定するAPI_ALLOWED_PREFIXESパラメーター値

    • 使用しているGitリポジトリプロバイダーに対応するAPI_USER_AUTHENTICATION値

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

      • Snowflake GitHubアプリを使用せずにリポジトリプロバイダーで認証する場合(GitHub以外の任意のリポジトリプロバイダーなど)、 CREATEAPIINTEGRATION で説明されているように、次のパラメーターに値を指定します。

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