Configuração do Snowflake para usar o Git¶
Quando você conecta sua conta Snowflake a um repositório Git remoto, o Snowflake cria um clone do repositório Git , copiando a versão mais recente de todos os arquivos no repositório (um clone raso ) e armazenando metadados sobre a localização do repositório remoto, credenciais (se necessário) e detalhes de configuração sobre como o Snowflake deve interagir com a API do repositório Git.
Dependendo dos seus requisitos, configurando componentes para autenticação, interação com a Git API e comunicação por um link privado entre o Snowflake e seu provedor de serviços de nuvem, você pode configurar o Snowflake para que um repositório Git remoto se torne parte integrante do seu fluxo de trabalho dentro do Snowflake.
Escolha de um modelo de configuração¶
Dependendo dos seus requisitos de rede e fluxo de trabalho, você pode configurar o Snowflake para acessar um repositório Git remoto de várias maneiras. A seguir, listamos exemplos de casos de uso, juntamente com as estratégias de acesso ao repositório que você pode usar para oferecer suporte a eles.
Trabalhe com arquivos em um repositório Git por meio de um fluxo de trabalho que inclui extrair, enviar e criar arquivos.
Ao usar o Snowflake Workspaces, você pode configurar uma integração de API para OAuth2 para simplificar a autenticação do usuário em repositórios Git.
Arquivos de referência em um repositório Git como parte de um pipeline de dados ou projeto ML.
Se um processo com script acessar o repositório, considere a autenticação usando um token.
Get started by cloning a public repository (including Snowflake Labs) to run SQL scripts or notebook files in Snowflake Workspaces.
Você pode usar espaços de trabalho para
.sqlArquivos, Notebooks Snowflake para aquivos.ipynbou Espaços de trabalho do Snowflake para aquivos.py.
A seguir, as opções são descritas em termos de se você deseja acesso por uma rede pública ou privada:
Acesso por uma rede pública |
Acesso por uma rede privada |
|---|---|
O acesso por uma rede pública permite que você se autentique no seu servidor de repositório Git remoto usando toda a faixa de IP de sua implantação do provedor de nuvem Snowflake (porque o Snowflake não fornece um intervalo de IP estático).
|
O acesso por uma rede privada ajuda a evitar permitir o acesso ao servidor Git para todo o Intervalo de IP de sua implantação do provedor de nuvem Snowflake. É possível configurar o Snowflake para estabelecer a conectividade de saída por meio de uma conexão de link privado de saída entre o Snowflake e sua infraestrutura na nuvem. O Snowflake encaminha o tráfego do Git por meio desta conexão para o servidor do repositório Git.
|
Configuração do Snowflake para acesso em uma rede pública¶
Você pode configurar o Snowflake para acessar seu repositório Git por meio de uma rede pública. Você pode fazer com que o Snowflake realize a autenticação usando qualquer uma das seguintes estratégias:
-
Configuração de uma integração de API com detalhes sobre o servidor do repositório Git.
Autenticar com um token, como um token de acesso pessoal .
Configure um segredo contendo o nome de usuário e token a ser usado e depois configure uma integração de API que permita ao Snowflake usar o segredo ao autenticar.
Autenticar por meio de um fluxo OAuth.
Configure an API integration to allow for an OAuth2 flow.
Configurar para nenhuma autenticação¶
Para configurar o Snowflake para usar um repositório Git sem autenticação, siga estas etapas:
Crie uma integração de API que ofereça suporte ao acesso sem autenticação e especifique os seguintes detalhes:
git_https_apicomo o valor do parâmetro API_PROVIDERPontos de extremidade HTTPS aos quais solicitações devem ser limitadas como valores do parâmetro API_ALLOWED_PREFIXES
Para obter mais informações, consulte 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;
Criar um clone do repositório Git conforme descrito em Criação de um clone do repositório Git do Snowflake
Configuração do para autenticação com um token¶
Para que o Snowflake seja autenticado no repositório Git usando um nome de usuário e token, como um token de acesso pessoal (PAT), siga estes passos:
Fornecimento de credenciais em um segredo de autenticação básica.
Para fornecer as credenciais que o Snowflake usa para autenticar no repositório, crie um segredo contendo o seguinte:
Um valor TYPE de
passwordUm nome de usuário e token, como um token de acesso pessoal (PAT)
Se seu repositório Git estiver hospedado no Bitbucket, especifique
x-token-authcomo o valor do nome de usuário.Nota
Para obter informações sobre como criar um token de acesso pessoal em GitHub, consulte Como gerenciar seus tokens de acesso pessoal na documentação do GitHub.
Para obter mais informações sobre o comando SQL para criar um segredo, consulte CREATE SECRET.
O código no exemplo a seguir cria um segredo chamado
my_git_secretcom um nome de usuário e o token de acesso pessoal do usuário para usar como credenciais:CREATE OR REPLACE SECRET db.schema.my_git_secret TYPE = password USERNAME = 'gladyskravitz' PASSWORD = 'ghp_token';
Crie uma integração de API que ofereça suporte à autenticação com um token.
Para criar uma integração de API para acesso a um repositório Git sem autenticação, especifique os seguintes detalhes:
git_https_apicomo o valor do parâmetro API_PROVIDERPontos de extremidade HTTPS aos quais solicitações devem ser limitadas como valores do parâmetro API_ALLOWED_PREFIXES
Para obter mais informações, consulte 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;
Criar um clone do repositório Git conforme descrito em Criação de um clone do repositório Git do Snowflake
Configuração do para autenticação com OAuth¶
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.
Se você usa o GitHub, pode criar uma integração de API que utiliza o app Snowflake GitHub para autenticação.
O app Snowflake GitHub é um aplicativo OAuth2 pré-configurado usado pelo Snowflake e projetado para simplificar a autenticação. Você não precisa configurar esse app; basta criar uma integração de API que especifica o app Snowflake GitHub.
Para todos os provedores de repositórios, incluindo o GitHub, você pode criar uma integração de API que especifica valores para os parâmetros do OAuth2, como ID e segredo do cliente, para usar na autenticação.
Antes de criar a integração de API, colete os parâmetros do OAuth2 referentes ao seu provedor de repositório, incluindo o ID e segredo do cliente. Você especificará esses valores na integração de API.
Para obter mais informações, consulte a documentação do provedor do repositório.
To set up Snowflake so that it authenticates with the remote Git repository using an OAuth2 flow, follow these steps:
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_apiUm valor de parâmetro API_ALLOWED_PREFIXES que especifica pontos de extremidade HTTPS aos quais as solicitações devem ser limitadas
Um valor API_USER_AUTHENTICATION que corresponde ao provedor do repositório Git que você usa
When authenticating with GitHub using the Snowflake GitHub App, specify
(TYPE = SNOWFLAKE_GITHUB_APP).Sempre que autenticar com um provedor de repositório sem usar o app Snowflake GitHub, por exemplo, com qualquer provedor de repositório diferente do GitHub, especifique valores para os seguintes parâmetros, conforme descrito em CREATE API INTEGRATION:
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;
CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://example.com/my_account') API_USER_AUTHENTICATION = ( TYPE = OAUTH2 OAUTH_AUTHORIZATION_ENDPOINT = '<your_oauth_authorization_endpoint>' OAUTH_TOKEN_ENDPOINT = '<your_oauth_token_endpoint>' OAUTH_CLIENT_ID = '<your_oauth_client_id>' OAUTH_CLIENT_SECRET = '<your_oauth_client_secret>' OAUTH_ACCESS_TOKEN_VALIDITY = 3600 OAUTH_REFRESH_TOKEN_VALIDITY = 2592000 OAUTH_ALLOWED_SCOPES = ( 'read_api', 'read_repository', 'write_repository' ) ) ENABLED = TRUE;
Crie um espaço de trabalho conectado a um repositório Git, conforme descrito em Criar um espaço de trabalho Git.
Configuração do Snowflake para acesso em uma rede privada¶
É possível configurar o Snowflake para estabelecer a conectividade de saída por meio de uma conexão de link privado de saída entre o Snowflake e sua infraestrutura na nuvem. O Snowflake encaminha o tráfego do Git por meio desta conexão para o servidor do repositório Git.
Com uma conexão de link privado, você evita permitir o acesso ao servidor Git para todo o intervalo de IP da sua implementação do provedor de nuvem Snowflake. Esta seção descreve as etapas em alto nível.
Configuração da conexão do Private Link.
Você aplicará alterações de configuração ao Snowflake e à sua infraestrutura de serviço de nuvem. Este tópico descreve as etapas no lado do Snowflake. Para obter detalhes sobre todas as etapas, incluindo a configuração de seu provedor de serviços de nuvem, consulte o artigo da base de conhecimento Configuração da integração do Git com o Snowflake pelo Private Link.
Configuração do acesso do Snowflake ao repositório Git remoto.
Nota
O Snowflake oferece suporte apenas a conexões dentro da mesma nuvem e região. Por exemplo, se sua implantação do Snowflake estiver na AWS na região us-west-2, seus outros componentes também deverão estar nessa região.
Configuração da conexão do Private Link¶
Antes de configurar o Snowflake para acessar o repositório Git remoto, você deve configurar um link privado entre o Snowflake e seu provedor de serviços de nuvem.
Para aplicar alterações de configuração ao Snowflake e à sua infraestrutura, siga estas etapas:
No seu provedor de serviços de nuvem, crie um serviço de link privado para receber solicitações do serviço de ponto de extremidade privado do Snowflake.
Para obter mais detalhes, consulte o artigo da base de conhecimento Configuração da integração do Git com o Snowflake pelo Private Link.
No Snowflake, forneça um ponto de extremidade privado que chegará à sua infraestrutura por meio de um IP privado.
Para provisionar o ponto de extremidade, use a função SYSTEM$PROVISION_PRIVATELINK_ENDPOINT com os dois argumentos a seguir:
ID do serviço de link privado de seu provedor de nuvem
Nome de domínio do seu servidor Git
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.vpce.us-west-2.vpce-svc-xxx', // VPC Endpoint Service Name 'git_address.com' // Git server domain );
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/9217bbdd-434e-4dbb-97c2-0825c627a277/resourceGroups/git-server_group/providers/Microsoft.Network/privateLinkServices/git-server-pl-service', // Private Service ID 'git_address.com' // Git server domain );
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'projects/my-google-project/regions/us-east4/serviceAttachments/gitservice', // Service attachement field 'git_address.com' // Git server domain );
Em seu provedor de serviços de nuvem, aceite a configuração do ponto de extremidade privado do Snowflake para terminar de configurar a conexão do link privado.
Para verificar o status do provisionamento, chame a função do sistema SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Configuração do acesso do Snowflake ao repositório Git remoto¶
Depois de configurar um link privado entre o Snowflake e seu provedor de serviços de nuvem, você pode configurar o acesso do Snowflake ao repositório Git remoto.
Crie uma integração de API que ofereça suporte à autenticação com um certificado.
Como o Snowflake acessará seu servidor Git usando o protocolo HTTPS, o nome de domínio precisa ter um certificado válido. A configuração usada difere dependendo se você usa um certificado autoassinado ou um certificado assinado por uma autoridade de certificação.
Uso de um certificado autoassinado:
Fornecimento de credenciais em um segredo da cadeia de caracteres genérica.
Esta deve ser uma chave pública de um domínio autoassinado para estabelecer uma conexão HTTPS. Para fornecer ao Snowflake as credenciais que ele usará para autenticação no servidor, crie um segredo que contenha os seguintes detalhes:
Um valor de parâmetro TYPE de
GENERIC_STRINGUma cadeia de caracteres de certificado público como o valor do parâmetro SECRET_STRING
Para o valor do parâmetro, especifique uma cadeia de caracteres secreta, como um corpo de certificação público.
CREATE OR REPLACE SECRET my_public_certificate TYPE = GENERIC_STRING SECRET_STRING = '-----BEGIN CERTIFICATE----- <certificate_body> -----END CERTIFICATE-----';
Crie uma integração de API para integrar com a API Git e especifique os seguintes detalhes:
Um parâmetro API_PROVIDER definido como
git_https_apiUm API_ALLOWED_PREFIXES definido como a URL base abaixo da qual o acesso é permitido
Um parâmetro USE_PRIVATELINK_ENDPOINT definido como
TRUEUm parâmetro TLS_TRUSTED_CERTIFICATES definido como o nome do segredo que você criou, que contém o certificado
Para obter mais informações, consulte 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;
Usando um certificado assinado por uma autoridade de certificação:
Crie uma integração de API para integrar com a API Git e especifique os seguintes detalhes:
Um parâmetro API_PROVIDER definido como
git_https_apiUm API_ALLOWED_PREFIXES definido como a URL base abaixo da qual o acesso é permitido
Um parâmetro USE_PRIVATELINK_ENDPOINT definido como
TRUEUm parâmetro TLS_TRUSTED_CERTIFICATES definido como o nome do segredo que você criou, que contém o certificado
Para obter mais informações, consulte 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;
Fornecimento de credenciais em um segredo de autenticação básica.
Após conectar-se com sucesso ao servidor Git por meio do link privado, você ainda deve se autenticar no repositório criando outro segredo que fornece credenciais para o repositório.
Para fornecer as credenciais que o Snowflake usa para autenticar no repositório, crie um segredo contendo o seguinte:
Um valor TYPE de
passwordUm nome de usuário e token, como um token de acesso pessoal (PAT)
Nota
Para obter informações sobre como criar um token de acesso pessoal em GitHub, consulte Como gerenciar seus tokens de acesso pessoal na documentação do GitHub.
Para obter mais informações sobre o comando SQL para criar um segredo, consulte CREATE SECRET.
Criar um clone do repositório Git conforme descrito em Criação de um clone do repositório Git do Snowflake
Criação de um clone do repositório Git do Snowflake¶
Para configurar o Snowflake para trabalhar com um repositório Git remoto, crie um clone do repositório Git no Snowflake para conter os arquivos obtidos do repositório remoto.
Nota
Antes de iniciar as etapas desta seção, considere primeiro a configuração dos componentes de que você pode precisar, incluindo um segredo (se o repositório remoto exigir autenticação), uma integração de API e conexão privada entre o Snowflake e seu provedor de serviços de nuvem.
Nota
Para obter informações sobre como criar um espaço de trabalho Git em Snowsight, consulte Criar um espaço de trabalho Git.
Um clone do repositório Git no Snowflake especifica os seguintes detalhes:
A origem do repositório remoto
No Git,
originé o URL do repositório remoto. Use esse URL ao configurar o Snowflake para usar um repositório Git remoto. O URL deve usar HTTPS. Por exemplo, você pode recuperar a URL de origem das seguintes maneiras:Na interface do usuário do GitHub, você pode obter o URL de origem da página inicial do repositório. Selecione o botão Code e, em seguida, copie o HTTPS URL na caixa exibida abaixo do botão.
Na linha de comando, use o comando
git configde dentro do seu repositório local, como no exemplo a seguir:$ git config --get remote.origin.url
O comando produz saídas como as seguintes:
https://github.com/my-account/snowflake-extensions.gitPara obter informações de referência sobre
git config, veja a documentação do git.
Credenciais, se necessário , para o Snowflake usar ao autenticar com o repositório
Para o parâmetro GIT_CREDENTIALS, especifique um segredo do Snowflake que você criou.
Uma integração da API especificando detalhes para interação do Snowflake com a API do repositório
Você pode criar um clone do repositório Git usando Snowsight ou SQL.
Nota
Antes de criar um clone do repositório Git, você precisará criar um segredo (se o repositório remoto exigir autenticação) e uma Integração de API.
O código no exemplo a seguir cria um clone de repositório Git chamado snowflake_extensions. O clone especifica a integração da my_git_api_integration API e o segredo my_git_secret com credenciais para autenticação.
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';
Nota
Para obter informações sobre como criar um espaço de trabalho Git em Snowsight, consulte Criar um espaço de trabalho Git.
Faça login na Snowsight.
No menu de navegação, selecione Catalog » Database Explorer.
No explorador de objetos, selecione o banco de dados e o esquema que você deseja que contenha o clone do repositório Git que você está criando.
Selecione Create » Git Repository.
Na caixa de diálogo Create Git Repository, para Repository Name, insira um nome que identificará exclusivamente esse clone de repositório no esquema.
Para diretrizes de nomenclatura, consulte Requisitos para identificadores.
Para Origin, insira o URL de origem do repositório remoto.
No menu suspenso API Integration, selecione a integração de API para fazer referência ao criar o clone do repositório Git.
Se você não tiver uma integração da API para usar, selecione Create new API integration in Worksheets para usar o SQL para criar um. Para obter mais informações, consulte CREATE API INTEGRATION.
Opcional: para o Comment, insira um texto descrevendo esta integração para outros.
Opcional: se o repositório remoto exigir autenticação, defina a opção Authentication para a posição _on_.
Se você ativar o botão, no menu suspenso Secret, selecione o segredo que deve ser referenciado pela integração do Git para autenticação com o repositório remoto.
Se você não tiver um segredo para usar, selecione Create new secret in Worksheets para usar SQL para criar um. Para obter mais informações, consulte CREATE SECRET.
Selecione Create.
Quando você cria a integração com sucesso, o clone do repositório Git aparece abaixo do esquema, em um diretório Git Repositories. Você também verá uma página que lista diretórios de repositórios, ramificações e tags.
