设置 Snowflake 以使用 Git¶
当您集成 Git 存储库并克隆存储库时,Snowflake 会创建一个 Git 存储库暂存区,该暂存区会指定存储库的位置、证书(如果需要)以及有关 Snowflake 应如何与 Git 存储库 API 交互的详细信息。
要将 Git 存储库与 Snowflake 一起使用,请按照以下步骤操作:
创建包含用于身份验证的凭据的密钥¶
如果您的 Git 存储库需要身份验证,则需要 创建密钥 并在其中包含 Snowflake 可以用来对存储库进行身份验证的凭据。
您将以多种方式使用该密钥。创建 API 集成 用于指定 Snowflake 与 Git 存储库 API 的交互的人员必须将此密钥指定为 ALLOWED_AUTHENTICATION_SECRETS 参数的值。此外,有人 通过设置 Snowflake 来使用 Git 指定了此密钥。
要创建密钥,必须使用已被授予以下权限的角色:
对存储密钥的架构的 CREATE SECRET 权限
有关更多信息,请参阅 CREATE SECRET 访问控制要求。
对包含集成的数据库和架构的 USAGE 权限
作为最佳实践,对密钥的 PASSWORD 值使用个人访问令牌。有关在 GitHub 中创建个人访问令牌的信息,请参阅 GitHub 文档中的 管理个人访问令牌 (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)。
- SQL:
您可以使用 CREATE SECRET 命令创建包含 Git 存储库凭据的密钥。
以下示例中的代码使用用户名和用户的个人访问令牌创建了名为
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 git_secret TYPE = password USERNAME = 'gladyskravitz' PASSWORD = 'ghp_token';
创建用于与存储库 API 进行交互的 API 集成¶
要指定有关 Snowflake 如何与 Git 存储库 API 交互的详细信息,您需要创建 API 集成。
设置 Snowflake 账户以使用 Git 的人员将指定要使用的 API 集成。
要创建 API 集成,必须使用已被授予以下权限的角色:
账户的 CREATE INTEGRATION 权限
有关更多信息,请参阅 CREATE API INTEGRATION 访问控制要求。
对包含集成的数据库和架构的 USAGE 权限
对集成所引用密钥的 USAGE 权限
为 Git 存储库 API 创建 API 集成时,您必须执行以下操作:
指定
git_https_api
为 API_PROVIDER 参数的值。如果需要身份验证,则指定 包含存储库凭据的密钥 作为 ALLOWED_AUTHENTICATION_SECRETS 参数的值。您可以指定以下选项之一:
Snowflake 在使用存储库进行身份验证时可以使用的一个或多个 Snowflake 密钥(以逗号分隔的列表中)
字符串
'all'
(不区分大小写),用于指定可能使用任何密钥字符串
'none'
(不区分大小写),用于指定不使用任何密钥
- SQL:
您可以使用该 CREATE API INTEGRATION 命令创建 API 集成,以指定 Snowflake 与 Git 存储库 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 = (git_secret) ENABLED = TRUE;
创建 Git 存储库暂存区并克隆存储库¶
要设置 Snowflake 以便与 Git 存储库配合使用,请创建 Git 存储库暂存区,以包含从存储库提取的文件。
备注
在开始本节中的步骤之前,请考虑 首先 创建 密钥。您可能需要这两项要素。
Git 存储库暂存区指定了以下内容:
存储库的来源
在 Git 中,
origin
是远程存储库 URL 的简写。在设置 Snowflake 以使用 Git 存储库时使用此 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
有关
git config
的参考信息,请参阅 Git 文档 (https://git-scm.com/docs/git-config)。
凭据(如果需要),以供 Snowflake 在对存储库进行身份验证时使用
API 集成,用于指定 Snowflake 与存储库 API 交互的详细信息
要创建 Git 存储库暂存区,必须使用已被授予以下权限的角色:
对包含存储库的架构具有 CREATE GIT REPOSITORY 权限
有关更多信息,请参阅 CREATE GIT REPOSITORY 访问控制要求。
对包含使用 Git 进行身份验证的凭据的密钥的 USAGE 权限
Git 存储库暂存区所引用 API 集成的 USAGE 权限
- SQL:
您可以使用该 CREATE GIT REPOSITORY 命令创建 Git 存储库暂存区。
备注
在创建本地存储库之前,您需要创建 密钥。
以下示例中的代码创建了一个名为
snowflake_extensions
的 Git 存储库暂存区。该暂存区指定git_api_integration
API 集成和带有身份验证凭据的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';