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

Gitリポジトリを統合してリポジトリをクローンすると、Snowflakeはリポジトリの場所、認証情報(必要な場合)、およびSnowflakeがGitリポジトリ API とやり取りする方法の詳細を指定するGitリポジトリステージを作成します。

SnowflakeでGitリポジトリを使用するには、次のステップに従います。

  1. シークレットを作成 して、必要に応じてリポジトリで認証するための認証情報を含めます。

  2. API 統合を作成 して、SnowflakeとGitリポジトリ API の相互作用に関する詳細を指定します。

  3. Snowflake Gitリポジトリステージを作成 して、リポジトリからファイルを同期できるようにします。

認証用の認証情報を含むシークレットを作成する

Gitリポジトリに認証が必要な場合は、Snowflakeがリポジトリでの認証に使用できる認証情報を含む シークレットを作成 する必要があります。

そのシークレットは、さまざまな方法で使用できます。SnowflakeとGitリポジトリ API の相互作用を指定する API 統合を作成する ユーザーは、このシークレットを ALLOWED_AUTHENTICATION_SECRETS パラメーターの値として指定する必要があります。さらに、 SnowflakeがGitを使用するように設定 するユーザーがシークレットを指定します。

シークレットを作成するには、次の権限が付与されたロールを使用する必要があります。

  • シークレットを保存するスキーマでの CREATE SECRET

    詳細については、 CREATE SECRETアクセス制御の要件 をご参照ください。

  • 統合が含まれるデータベースとスキーマでの USAGE

ベストプラクティスとして、シークレットの PASSWORD 値には個人用アクセストークンを使用します。GitHub で個人用アクセストークンを作成する方法については、 GitHub ドキュメントの 個人用アクセストークンの管理 をご参照ください。

SQL:

CREATE SECRET コマンドを使用して、Gitリポジトリの認証情報を含むシークレットを作成できます。

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

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

リポジトリ API とやり取りするための API 統合を作成する

SnowflakeがGitリポジトリ API とやり取りする方法の詳細を指定するには、 API 統合を作成する必要があります。

Gitを使用するためにSnowflakeアカウントを設定する ユーザーは、使用する API 統合を指定します。

API 統合を作成するには、次の権限が付与されたロールを使用する必要があります。

  • アカウントに対する CREATE INTEGRATION

    詳細については、 CREATE API INTEGRATION アクセス制御の要件 をご参照ください。

  • シークレットを含むデータベースとスキーマでの USAGE

  • 統合が参照するシークレットでの USAGE

Gitリポジトリ API の API 統合を作成する際には、次を実行する必要があります。

  • API_PROVIDER パラメーターの値として git_https_api を指定します。

  • 認証が必要な場合は、 ALLOWED_AUTHENTICATION_SECRETS パラメーターの値として リポジトリの認証情報を含むシークレット を指定します。次のいずれかを指定できます。

    • リポジトリで認証するときにSnowflakeが使用できる1つ以上のSnowflakeシークレット(コンマ区切りのリスト内)

    • シークレットを使用できることを指定する文字列 'all' (大文字と小文字を区別しない)

    • シークレットが使用できないことを指定する文字列 'none' (大文字と小文字を区別しない)

SQL:

CREATE API INTEGRATION コマンドを使用して、SnowflakeとGitリポジトリ API とのやり取りの詳細を指定する API 統合を作成できます。

次の例のコードは、 git_api_integration という API 統合を作成します。

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

Gitリポジトリステージを作成し、リポジトリをクローンする

SnowflakeをGitリポジトリで動作するように設定するには、リポジトリから取得されたファイルを格納するGitリポジトリステージを作成します。

注釈

このセクションのステップを開始する前に、 まず シークレット (リモートリポジトリに認証が必要な場合)および API 統合 を作成することを検討してください。これら両方が必要になる場合があります。

Gitリポジトリのステージでは、次のように指定します。

  • リポジトリのオリジン

    Gitでは、 origin はリモートリポジトリの URL の略記です。Gitリポジトリを使用するようにSnowflakeを設定するときは、この URL を使用してください。URL には HTTPS を使用する必要があります。オリジンの URL は次の方法で取得できます。

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

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

      $ git config --get remote.origin.url
      https://github.com/my-account/snowflake-extensions.git
      
      Copy

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

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

  • Snowflakeとリポジトリ API のやり取りの詳細を指定する API 統合

Gitリポジトリステージを作成するには、次の権限が付与されたロールを使用する必要があります。

  • リポジトリを含むスキーマの CREATE GIT REPOSITORY

    詳細については、 CREATE GIT REPOSITORY アクセス制御の要件 をご参照ください。

  • Gitで認証するための認証情報を含むシークレットの USAGE

  • Gitリポジトリステージが参照する API 統合の USAGE

Snowsight または SQL のいずれかを使用してGit リポジトリステージを作成できます。

CREATE GIT REPOSITORY コマンドを使用してGitリポジトリステージを作成できます。

注釈

ローカルリポジトリを作成する前に、 シークレット (リモートリポジトリに認証が必要な場合)および API 統合 を作成する必要があります。

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

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