Google Cloud 용 외부 볼륨에 대한 비공개 연결

이 항목에서는 GCS(Google Cloud Storage)에서 외부 볼륨에 대한 아웃바운드 비공개 연결을 구성하는 방법을 설명합니다. 아웃바운드 공용 연결과 아웃바운드 비공개 연결의 주요 차이점은 외부 볼륨에 대한 USE_PRIVATELINK_ENDPOINT 속성을 설정하는 방법입니다.

외부 볼륨이 비공개 연결을 사용하도록 구성된 경우 Google Cloud Storage에 대한 연결은 Google Cloud 내부 네트워크를 통해 이루어집니다. 아웃바운드 비공개 연결을 사용하도록 외부 볼륨을 구성하면 저장소 계정에 대한 공개 액세스를 차단하여 데이터 언로딩 작업에 보안을 강화할 수 있습니다.

외부 볼륨을 사용하여 Iceberg 테이블용 외부 클라우드 저장소에 연결하는 방법에 대한 자세한 내용은 외부 볼륨 구성 섹션을 참조하십시오.

참고

Google Cloud Private Service Connect를 사용하여 Snowflake가 관리하는 Iceberg 테이블 및 오브젝트 저장소에 대한 카탈로그 통합을 사용하는 Iceberg 테이블에 액세스할 수 있습니다. 현재 비공개 연결을 사용하여 다른 카탈로그 통합을 사용하는 Iceberg 테이블에 액세스할 수 없습니다.

아웃바운드 비공개 연결 비용

처리된 총 데이터와 함께 각 비공개 연결 엔드포인트에 대한 비용을 지불합니다. 이러한 품목의 가격은 Snowflake서비스 사용 테이블 을 참조하십시오.

ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마에서 청구 뷰를 쿼리할 때 다음 서비스 유형을 필터링하여 이러한 항목의 비용을 탐색할 수 있습니다.

  • OUTBOUND_PRIVATELINK_ENDPOINT

  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

예를 들어 USAGE_IN_CURRENCY_DAILY 뷰를 쿼리하고 이러한 서비스 유형을 필터링할 수 있습니다.

고려 사항

동일한 클라우드 저장소 서비스에 대해 아웃바운드 공용 연결과 아웃바운드 비공개 연결을 구성할 수 있습니다. 이렇게 하려면 아웃바운드 공용 연결을 위한 전용 외부 볼륨을 만들고 USE_PRIVATELINK_ENDPOINT = FALSE 를 지정하십시오.

제한 사항

Google Cloud Storage 볼륨에 대한 아웃바운드 비공개 연결은 다중 리전 버킷을 지원하지 않습니다.

외부 볼륨에 대한 비공개 연결 지정

외부 볼륨의 USE_PRIVATELINK_ENDPOINT 속성은 비공개 연결을 통해 액세스할지 아니면 공용 네트워크를 통과하여 액세스할지를 결정합니다. 비공개 연결을 사용하려면 다음 예와 같이 외부 볼륨을 생성하거나 수정할 때 ``USE_PRIVATELINK_ENDPOINT = TRUE``를 설정하세요.

다음 구문을 사용하여 외부 볼륨을 생성합니다.

CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
  STORAGE_LOCATIONS =
  (
    (
      NAME = 'my-gcs-loc'
      STORAGE_PROVIDER = 'gcs'
      STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/'
      USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
    )
  )
  ALLOW_WRITES=true;
Copy

다음 구문을 사용하여 기존 외부 볼륨을 변경합니다.

ALTER EXTERNAL VOLUME <ext_volume_name>
  UPDATE STORAGE_LOCATION = '<storage_location_name>'
  USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
Copy

DESCRIBE EXTERNAL VOLUME 명령에는 USE_PRIVATELINK_ENDPOINT 속성과 해당 값이 포함됩니다.

비공개 엔드포인트 프로비저닝

다음 단계에 따라 Google Cloud Storage 볼륨에 대한 비공개 엔드포인트를 프로비저닝합니다.

  1. Snowflake에서 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다. 리전 저장소 API 엔드포인트 및 호스트 이름을 인자로 제공합니다. 예:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
      'storage.us-east4.rep.googleapis.com',
      'storage.us-east4.rep.googleapis.com');
    
    Copy

    참고

    Snowflake는 Google Cloud 리전 저장소 API 엔드포인트만 지원합니다. Google Cloud 다중 리전 버킷은 지원되지 않습니다.

    SYSTEM$PROVISION_PRIVATELINK_ENDPOINT를 통해 Snowflake VNet에서 비공개 엔드포인트를 프로비저닝하여 Snowflake가 비공개 연결을 통해 외부 Google Cloud Storage에 연결할 수 있도록 하세요. USE_PRIVATELINK_ENDPOINT 속성이 활성화된 외부 볼륨에서 참조하는 버킷만 엔드포인트를 사용하여 액세스할 수 있습니다.

  2. Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출합니다.

    SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO의 출력에 `”status”: “APPROVED”`가 포함되면 Snowflake에서 저장소 계정으로의 연결은 비공개 연결을 사용할 수 있습니다.

    "APPROVED" 상태를 대기하는 동안 다음 단계를 계속 진행할 수 있습니다.

외부 볼륨 액세스 구성하기

다음 단계에 따라 외부 저장소 볼륨에 대한 비공개 연결을 구성합니다.

  1. 외부 볼륨을 생성하고 USE_PRIVATELINK_ENDPOINT 속성을 TRUE로 설정합니다. 예:

    CREATE EXTERNAL VOLUME external_volume
      STORAGE_LOCATIONS =
      (
        (
          NAME = 'my-gcs-loc'
          STORAGE_PROVIDER = 'gcs'
          STORAGE_BASE_URL =  'gcs://<bucket>/<prefix>/'
          USE_PRIVATELINK_ENDPOINT = true
        )
      )
      ALLOW_WRITES=true;
    
    Copy
  2. CREATE ICEBERG TABLE 명령을 사용하여 외부 볼륨을 참조하는 Iceberg 테이블을 만듭니다. 예:

    CREATE ICEBERG TABLE rand_table (data STRING)
      BASE_LOCATION='table'
      EXTERNAL_VOLUME=external_volume
      CATALOG='snowflake';
    
    Copy
  3. 비공개 엔드포인트가 “APPROVED” 상태가 되면, Snowflake에서 외부 볼륨으로 데이터를 언로딩하는 것을 테스트합니다.

비공개 연결 비활성화하기

외부 볼륨에 대한 비공개 연결이 더 이상 필요하지 않은 경우 볼륨에 대한 USE_PRIVATELINK_ENDPOINT 속성을 FALSE로 설정한 다음, SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출하여 엔드포인트의 프로비저닝을 해제합니다. 예:

ALTER EXTERNAL VOLUME <ext_volume_name>
  UPDATE STORAGE_LOCATION = '<storage_location_name>'
  USE_PRIVATELINK_ENDPOINT = false;

SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');
Copy