|google-cloud|용 외부 스테이지에 대한 비공개 연결

이 항목에서는 |google-cloud|에서 외부 스테이지에 대한 아웃바운드 비공개 연결을 구성하는 방법을 설명합니다. 아웃바운드 공용 연결과 아웃바운드 비공개 연결의 주요 차이점은 저장소 통합을 구성하는 방식입니다. 예를 들어, 저장소 통합에 USE_PRIVATELINK_ENDPOINT 속성을 지정한 다음 외부 스테이지에서 이 저장소 통합을 참조할 수 있습니다. 외부 스테이지에서는 저장소 통합에서 프라이빗 엔드포인트 구성을 상속받습니다. 그 후 |google-cloud| 스테이지에 연결하면 Google Cloud 내부 네트워크를 통해 연결됩니다. 아웃바운드 비공개 연결을 사용하도록 저장소 통합 및 스테이지를 구성하면 저장소 계정에 대한 공개 액세스를 차단하여 데이터 언로딩 작업에 보안을 한층 더 강화할 수 있습니다.

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

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

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

  • OUTBOUND_PRIVATELINK_ENDPOINT

  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

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

고려 사항

동일한 저장소 계정에 대해 아웃바운드 공용 연결과 아웃바운드 비공개 연결을 구성할 수 있습니다. 이렇게 하려면 아웃바운드 공용 연결을 위한 전용 저장소 통합을 만들고 USE_PRIVATELINK_ENDPOINT = FALSE 를 지정합니다.

제한 사항

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

저장소 통합을 위한 비공개 연결 지정

저장소 통합을 생성, 교체 또는 수정할 때 비공개 연결을 지정하려면 다음 예에 표시된 대로 USE_PRIVATELINK_ENDPOINT 속성을 포함하세요. 비공개 연결을 사용하려면 통합을 위해 ``USE_PRIVATELINK_ENDPOINT = TRUE``를 설정하세요.

저장소 통합

다음 예제에서는 하나 이상의 위치가 있는 저장소 통합을 만들 때 USE_PRIVATELINK_ENDPOINT 속성을 지정하는 방법을 보여줍니다.

CREATE OR REPLACE STORAGE INTEGRATION my_int
  TYPE=EXTERNAL_STAGE
  STORAGE_PROVIDER='gcs'
  STORAGE_ALLOWED_LOCATIONS=('gcs://<bucket>/<prefix>/')
  USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy

다음 예에서는 저장소 통합을 수정하고 USE_PRIVATELINK_ENDPOINT 속성을 설정하는 방법을 보여줍니다.

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy
외부 스테이지

스테이지를 생성하거나 수정할 때는 USE_PRIVATELINK_ENDPOINT 구문에 대한 업데이트가 지원되지 않습니다. 다음 예는 새 스테이지 또는 수정된 스테이지의 URL을 사용하기 위해 저장소 통합을 어떻게 변경해야 하는지 보여줍니다.

CREATE OR REPLACE STAGE my_gcs_stage
  URL = 'gcs://<bucket>/<prefix>/'
  STORAGE_INTEGRATION=my_int
Copy

외부 스테이지 액세스 구성하기

이 단계는 아웃바운드 비공개 연결을 저장소 통합과 함께 사용하여 Google Cloud 에서 외부 스테이지로 데이터를 언로딩하는 고유한 단계입니다.

  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에서 비공개 엔드포인트를 프로비저닝하여 비공개 엔드포인트를 호스트 이름에 바인딩합니다. 따라서 저장소 통합을 통해 비공개 연결을 사용하여 저장소 통합을 외부 Google Cloud 스테이지에 연결할 수 있습니다.

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

    SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO의 출력에 `”status”: “APPROVED”`가 포함되면 Snowflake에서 저장소 계정으로의 연결에 비공개 연결을 사용할 수 있습니다(아웃바운드 비공개 연결을 위해 필요한 다른 Snowflake 오브젝트가 활성화된 후).

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

  3. 저장소 통합을 생성하고 USE_PRIVATELINK_ENDPOINT 속성 값으로 TRUE를 지정해야 합니다. 예:

    CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'gcs'
      STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/'')
      USE_PRIVATELINK_ENDPOINT = true
      ENABLED = true;
    
    Copy

    저장소 통합을 위한 역할 생성에 대한 내용은 Google Cloud Storage용 통합 구성하기 섹션을 참조하세요.

  4. 저장소 통합을 참조하는 외부 스테이지를 만듭니다. 예:

    CREATE OR REPLACE STAGE my_gcs_stage
      URL = 'gcs://mybucket1/path1/'
      STORAGE_INTEGRATION = outbound_private_link_int;
    
    Copy
  5. 비공개 엔드포인트가 “APPROVED” 상태가 되면, Snowflake에서 외부 스테이지로 데이터를 언로딩하는 것을 테스트합니다. 예:

    COPY INTO @my_gcs_stage
      FROM mytable
      FILE_FORMAT = (FORMAT_NAME = my_csv_format);
    
    Copy
  6. Google Cloud 스테이지에서 결과를 봅니다.

비공개 연결 비활성화하기

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

USE ROLE ACCOUNTADMIN;

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = false;

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