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.

    Considere o uso de Espaços de trabalho do Snowflake. Se você estiver usando um repositório em github.com, poderá autenticar-se com OAuth.

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

  • Comece clonando um repositório público (incluindo o Snowflake Labs) para executar scripts ou arquivos de notebook.

    Você pode usar espaços de trabalho para .sql Arquivos, Notebooks Snowflake para aquivos .ipynb ou 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).

  1. Configure o Snowflake para acessar o repositório.

    Escolha um dos seguintes métodos de autenticação:

    • Sem autenticação.

      Configuração de uma integração de API com detalhes sobre o servidor do repositório Git. Você não fornece credenciais.

    • 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 uma integração de API para oferecer suporte à autenticação OAuth2. Nesse caso, você não precisa criar um segredo.

  2. Crie um clone do repositório Git para o qual você pode sincronizar arquivos do repositório remoto.

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.

  1. Configuração da conexão do Private Link.

    Antes de configurar o Snowflake para acessar o repositório Git remoto, você precisará configurar um link privado entre o Snowflake e seu provedor de serviços de nuvem.

  2. Configuração do acesso do Snowflake ao repositório Git remoto.

    Depois de configurar o 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.

  3. Crie um clone do repositório Git para o qual você pode sincronizar arquivos do repositório remoto.

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:

  • Sem autenticação.

    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.

    Configuração de uma integração de API para permitir qualquer um dos seguintes tipos de autenticação: OAuth2, um token de acesso pessoal ou nenhuma autenticação.

    Nota

    O uso de OAuth para trabalhar com um repositório Git é compatível somente com espaços de trabalho e somente quando o repositório está hospedado em github.com. Para obter mais informações, consulte Criar um espaço de trabalho Git.

Configurar para nenhuma autenticação

Diagrama mostrando os componentes necessários para configurar a conexão do Git que não exige autenticação

Para configurar o Snowflake para usar um repositório Git sem autenticação, siga estas etapas:

  1. Crie uma integração de API que ofereça suporte ao acesso sem autenticação e especifique os seguintes detalhes:

    • git_https_api como o valor do parâmetro API_PROVIDER

    • Pontos 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;
    
    Copy
  2. 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

Diagrama mostrando os componentes necessários para configurar a conexão do Git que não exige autenticação

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:

  1. 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 password

    • Um 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-auth como 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_secret com um nome de usuário e o token de acesso pessoal do usuário para usar como credenciais:

    CREATE OR REPLACE SECRET my_git_secret
      TYPE = password
      USERNAME = 'gladyskravitz'
      PASSWORD = 'ghp_token';
    
    Copy
  2. 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_api como o valor do parâmetro API_PROVIDER

    • Pontos 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;
    
    Copy
  3. 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

Nota

O uso de OAuth para trabalhar com um repositório Git é compatível somente com espaços de trabalho e somente quando o repositório está hospedado em github.com. Para obter mais informações, consulte Criar um espaço de trabalho Git.

Diagrama mostrando os componentes necessários para configurar a conexão do Git que não exige autenticação

Para configurar o Snowflake para que ele seja autenticado no repositório Git remoto usando um fluxo OAuth, siga estes passos:

  1. Crie uma integração de API que ofereça suporte à autenticação por meio de OAuth.

    Ao especificar a autenticação com um fluxo OAuth2, crie uma integração de API que especifique o seguinte:

    • git_https_api como o valor do parâmetro API_PROVIDER

    • Pontos de extremidade HTTPS aos quais solicitações devem ser limitadas como valores do parâmetro API_ALLOWED_PREFIXES

      Este deve ser um prefixo em https://github.com. A autenticação com OAuth é compatível somente com repositórios hospedados em github.com.

    • Um API_USER_AUTHENTICATION cujo valor é (TYPE = SNOWFLAKE_GITHUB_APP)

    Para obter mais informações, consulte CREATE API INTEGRATION.

    O código no exemplo a seguir cria uma integração de API chamada 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. 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.

  1. 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.

  2. 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 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.

  1. 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:

      Diagrama mostrando os componentes necessários para configurar a conexão do Git que não exige autenticação
      1. 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_STRING

        • Uma 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-----';
        
        Copy
      2. 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_api

        • Um API_ALLOWED_PREFIXES definido como a URL base abaixo da qual o acesso é permitido

        • Um parâmetro USE_PRIVATELINK_ENDPOINT definido como TRUE

        • Um 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;
        
        Copy
    • Usando um certificado assinado por uma autoridade de certificação:

      Diagrama mostrando os componentes necessários para configurar a conexão do Git que não exige autenticação
      1. 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_api

        • Um API_ALLOWED_PREFIXES definido como a URL base abaixo da qual o acesso é permitido

        • Um parâmetro USE_PRIVATELINK_ENDPOINT definido como TRUE

        • Um 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;
        
        Copy
  2. 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 password

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

  3. 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 config de dentro do seu repositório local, como no exemplo a seguir:

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

      O comando produz saídas como as seguintes:

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

      Para 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;

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