Google Cloud Private Service Connect 및 Snowflake

이 항목에서는 공용 인터넷을 통과하지 않고 Google Cloud Virtual Private Cloud(VPC) 네트워크 서브넷을 Google Cloud 에서 호스팅되는 Snowflake 계정에 연결하도록 Google Cloud Private Service Connect를 구성하는 개념과 방법을 설명합니다.

참고: Google Cloud Private Service Connect는 Snowflake에서 제공하는 서비스가 아닙니다. Snowflake가 Snowflake 계정과 함께 사용할 수 있도록 지원하는 Google 서비스입니다.

개요

Google Cloud Private Service Connect 는 비공개 IP 주소를 통해 Snowflake에 액세스할 수 있도록 하여 비공개 연결을 제공합니다. Snowflake는 네트워크(즉, 고객 네트워크)에 리소스로 표시되지만 트래픽은 Google 네트워킹 백본을 통해 VPC 에서 VPC 로 단방향으로 흐릅니다. 이 설정은 안전한 비공개 통신을 제공하는 동시에 네트워크 구성을 상당히 간소화합니다.

다음 다이어그램은 Google Cloud VPC 고객과 Snowflake 서비스에 대한 Google Cloud Private Service Connect 아키텍처를 요약한 것입니다.

아키텍처 개요

Google Compute Engine(즉, 가상 머신)은 포워딩 규칙(1)으로 라우팅되는 비공개 가상 주소 IP 에 연결합니다. 전달 규칙은 비공개 연결(2)을 통해 서비스 첨부 파일에 연결합니다. 연결은 Snowflake(4)로 리디렉션되는 부하 분산 장치(3)를 통해 라우팅됩니다.

제한 사항

계정에 대한 비공개 서비스 연결(Private Service Connect) 승인하기

이 섹션에서는 Private Service Connect를 통해 네트워크 트래픽을 허용하도록 Snowflake를 승인하는 방법에 대해 설명합니다.

  1. 승인하려는 프로젝트에 대한 액세스 권한이 있는 Google Cloud 계정에 로그인합니다. Google Cloud CLI 환경을 사용하여 다음을 실행할 수 있습니다.

    gcloud auth login
    
    Copy

    현재 계정을 확인하려면 다음을 실행하십시오.

    gcloud auth list
    
    Copy
  2. Google Cloud CLI 를 사용해 다음 명령을 실행하여 액세스 토큰을 생성합니다.

    gcloud auth print-access-token
    
    Copy

    이 명령은 Google Cloud 계정에 대한 액세스 토큰을 생성합니다. 기본적으로 토큰은 1시간 후에 만료됩니다. 토큰이 만료된 후 비공개 서비스 연결에 대한 승인, 확인 또는 승인을 취소해야 하는 경우 이 단계를 반복하여 새 토큰을 생성해야 합니다.

    Google Cloud 프로젝트에 대한 서비스 계정이 있는 경우 대신 수명이 짧은 액세스 토큰 을 생성할 수 있지만, 토큰의 수명이 이러한 구성 단계를 완료할 수 있을 만큼 충분히 긴지 확인하십시오.

  3. Snowflake 계정 관리자(즉, ACCOUNTADMIN 시스템 역할이 있는 사용자)는 SYSTEM$AUTHORIZE_PRIVATELINK 함수를 호출하여 Snowflake 계정에 대한 비공개 서비스 연결을 승인(즉, 사용 설정)합니다. 비공개 서비스 연결에 대한 이 함수의 구문은 다음과 같습니다.

    SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '<gcp_project_id>' , '<access_token>' )
    
    Copy

    여기서

    • gcp_project_id 는 Google Cloud 프로젝트 ID 에서 엔드포인트를 생성하고 Snowflake에 안전하게 연결할 계획입니다.

    • access_token 은 이 구성 프로시저의 이전 단계에서 생성한 액세스 토큰입니다.

    예:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$AUTHORIZE_PRIVATELINK (
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy
  4. SYSTEM$GET_PRIVATELINK 함수를 호출하여 Snowflake 계정에 대해 비공개 서비스 연결이 성공적으로 승인되었는지 확인합니다. 승인할 때 사용한 것과 동일한 인자를 전달합니다. 예:

    SELECT SYSTEM$GET_PRIVATELINK(
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy

    계정이 비공개 서비스 연결에 대해 승인된 경우 Snowflake는 Account is authorized for PrivateLink 를 반환합니다.

Google Cloud VPC 환경 구성하기

이 섹션에서는 Google Cloud VPC 환경 구성을 위한 Snowflake 관련 세부 정보를 다룹니다.

중요

Snowflake는 Google Cloud 환경 구성에 대한 책임이 없습니다. 이 프로시저는 Google Cloud CLI 사용의 기본 사항을 보여 주지만, 최종적인 가이드는 아닙니다. 예:

  • Google Cloud CLI 대신 Google Cloud console 을 사용하여 Google Cloud 환경을 구성할 수 있으며, 이 경우에는 단계가 변경됩니다. 예를 들어, Google Cloud console 을 사용하는 경우 전달 규칙이 아닌 엔드포인트를 생성하는 것입니다.

  • 필수인 방화벽 업데이트 및 DNS 레코드를 구성하는 방법은 표시되지 않습니다.

  • 다른 리전에서 엔드포인트를 사용할 수 있도록 하는 방법은 표시되지 않습니다(Private Service Connect 엔드포인트는 리전 리소스임). 다른 리전에서 엔드포인트를 사용할 수 있도록 설정하는 방법에 대한 자세한 내용은 Google 설명서 를 참조하십시오.

추가 도움이 필요하면 내부 Google Cloud 관리자에게 문의하십시오.

  1. Snowflake 계정 관리자(즉, ACCOUNTADMIN 시스템 역할이 있는 사용자)로서 워크시트를 열고 SYSTEM$GET_PRIVATELINK_CONFIG 함수를 호출합니다. 후속 단계를 위해 출력을 저장해야 합니다.

    예:

    USE ROLE ACCOUNTADMIN;
    
    SELECT key, value FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  2. Google Cloud CLI 를 사용하여 gcloud 라이브러리 를 최신 버전으로 업데이트하십시오.

    gcloud components update
    
    Copy
  3. 다음 명령을 사용하여 에서 Google Cloud 으로 인증합니다.

    gcloud auth login
    
    Copy
  4. Google Cloud VPC 에서 전달 규칙이 있어야 하는 프로젝트 ID 를 설정합니다.

    gcloud config set project <project_id>
    
    Copy

    프로젝트 ID 목록을 구하려면 다음 명령을 실행하십시오.

    gcloud projects list --sort-by=projectId
    
    Copy
  5. Google Cloud VPC 에서 _ 가상 IP 주소를 `생성 합니다.

    gcloud compute addresses create <customer_vip_name> \
    --subnet=<subnet_name> \
    --addresses=<customer_vip_address>
    --region=<region>
    
    Copy

    여기서

    • customer_vip_name 는 가상 IP 규칙의 이름(예: psc-vip-1)을 지정합니다.

    • subnet_name 은 서브넷의 이름을 지정합니다.

    • customer_vip_address 는 모든 비공개 연결 URLs 이 확인할 IP 주소를 지정합니다. 네트워크에서 IP 주소를 지정하거나 CIDR 표기법을 사용하여 IP 주소 범위를 지정합니다.

    • region 은 Snowflake 계정이 위치한 클라우드 리전을 지정합니다.

    예:

    gcloud compute addresses create psc-vip-1 \
    --subnet=psc-subnet \
    --addresses=192.168.3.3 \
    --region=us-central1
    
    Copy

    출력:

    Created [https://www.googleapis.com/compute/v1/projects/docstest-123456/regions/us-central1/addresses/psc-vip-1].
    
  6. 서브넷을 Private Service Connect 엔드포인트로 라우팅한 다음 Snowflake 서비스 엔드포인트로 라우팅하도록 전달 규칙 을 만듭니다.

    gcloud compute forwarding-rules create <name> \
    --region=<region> \
    --network=<network_name> \
    --address=<customer_vip_name> \
    --target-service-attachment=<privatelink-gcp-service-attachment>
    
    Copy

    여기서

    • name 은 전달 규칙의 이름을 지정합니다.

    • region 은 Snowflake 계정이 위치한 클라우드 리전을 지정합니다.

    • network_name 은 이 전달 규칙의 네트워크 이름을 지정합니다.

    • customer_vip_name 은 이전 단계에서 생성한 가상 IP 주소의 <이름> 값(즉, psc-vip-1)을 지정합니다.

    • privatelink-gcp-service-attachment 는 이전 단계에서 SYSTEM$GET_PRIVATELINK_CONFIG 함수를 실행할 때 얻은 Snowflake 서비스 엔드포인트를 지정합니다.

    예:

    gcloud compute forwarding-rules create test-psc-rule \
    --region=us-central1 \
    --network=psc-vpc \
    --address=psc-vip-1 \
    --target-service-attachment=projects/us-central1-deployment1-c8cc/regions/us-central1/serviceAttachments/snowflake-us-central1-psc
    
    Copy

    출력:

    Created [https://www.googleapis.com/compute/projects/mdlearning-293607/regions/us-central1/forwardingRules/test-psc-rule].
    
  7. 다음 명령을 사용하여 전달 규칙이 성공적으로 생성되었는지 확인합니다.

    gcloud compute forwarding-rules list --regions=<region>
    
    Copy

    여기서

    • region 은 Snowflake 계정이 위치한 클라우드 리전입니다. 예를 들어 Snowflake 계정이 europe-west2 리전에 있는 경우, < 리전>europe-west2 로 바꿉니다.

    전체 Google Cloud 리전 목록 및 형식은 사용할 수 있는 리전 목록 보기 섹션을 참조하십시오.

  8. DNS 설정을 업데이트합니다.

    SYSTEM$GET_PRIVATELINK_CONFIG 함수가 반환한 URLs 주소가 사용자가 생성한 VIP 주소(<customer_vip_address>)로 확인되도록 Snowflake에 대한 모든 요청을 Private Service Connect 엔드포인트를 통해 라우팅해야 합니다.

    SYSTEM$GET_PRIVATELINK_CONFIG 의 출력에서 얻을 수 있는 값은 비공개 연결을 통해 액세스하는 Snowflake 기능에 따라 달라집니다. 사용 가능한 값에 대한 설명은 반환 값 섹션을 참조하십시오.

    regionless-snowsight-privatelink-urlsnowsight-privatelink-url 의 값은 비공개 연결을 사용하여 Snowsight 및 Snowflake Marketplace 에 대한 액세스를 허용합니다. 하지만 URL 리디렉션을 사용하려는 경우 추가 구성이 있습니다. 자세한 내용은 Snowsight & 비공개 연결 섹션을 참조하십시오.

    참고

    DNS 구성에 대한 전체 설명은 이 절차의 범위를 벗어납니다. 예를 들어, Cloud DNS 를 사용하여 비공개 DNS 존을 사용자 환경에 통합하도록 선택할 수 있습니다. 내부 Google Cloud 및 클라우드 인프라 관리자에게 문의하여 DNS 에서 URLs 을 올바르게 구성하고 해결하십시오.

Snowflake에 연결하기

Snowflake에 연결하기 전에, 선택적으로 SnowCD (Snowflake 연결 진단 도구)를 활용하여 Snowflake 및 Private Service Connect와의 네트워크 연결을 평가할 수 있습니다. 자세한 내용은 SnowCDSYSTEM$ALLOWLIST_PRIVATELINK 를 참조하십시오.

비공개 연결 계정으로 Snowflake에 연결하려면 URL을 사용하여 연결하기 섹션을 참조하십시오.

승인 취소하기

Snowflake 계정에서 비공개 서비스 연결을 비활성화해야 하는 경우 계정을 승인할 때 사용한 것과 동일한 인자 값을 사용하여 SYSTEM$REVOKE_PRIVATELINK 함수를 호출하십시오. 예:

SELECT SYSTEM$REVOKE_PRIVATELINK(
 'my-gcp-project-id',
 'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
);
Copy

Google Private Service Connect와 함께 SSO 사용하기

Snowflake는 Google Cloud Private Service Connect와 함께 SSO 를 사용할 수 있도록 지원합니다. 자세한 내용은 다음을 참조하십시오.

클라이언트 리디렉션을 Google Cloud Private Service Connect와 함께 사용

Snowflake는 클라이언트 리디렉션을 Google Cloud Private Service Connect와 함께 사용할 수 있도록 지원합니다.

자세한 내용은 클라이언트 연결 리디렉션하기 섹션을 참조하십시오.

비공개 연결로 복제 및 Tri-Secret Secure 사용하기

Snowflake는 대상 계정에서 Tri-Secret Secure 또는 이 기능을 활성화하는지에 관계없이 원본 계정에서 대상 계정으로의 데이터 복제를 지원합니다.