Snowflake 전송을 위한 비공개 연결 구성

이 가이드에서는 비공개 연결을 구성하여 Snowflake에서 BigQuery로 비공개 데이터 전송을 만드는 방법을 보여줍니다. 비공개 데이터 전송을 사용하면 비공개 네트워크 내에서 한 소스에서 다른 소스로 데이터를 전송하고 공개 인터넷을 통해 데이터를 전송할 때 보안 위험을 줄일 수 있습니다.

다음 섹션에서는 Snowflake 전송을 만들기 전에 비공개 연결을 구성하는 데 필요한 단계를 보여줍니다.

비공개 전송은 Amazon Web Services (AWS), Microsoft Azure, 에서 호스팅되는 Snowflake 인스턴스에서 지원됩니다. Google Cloud

AWS, Azure 또는 Google Cloud에서 호스팅되는 Snowflake 계정에서 BigQuery로의 비공개 데이터 전송

Snowflake 계정을 클라우드 제공업체에 연결하는 비공개 링크를 만듭니다. 자세한 내용은 다음 옵션 중 하나를 선택하세요.

AWS

AWS PrivateLink 를 구성하여 Snowflake 계정을 AWS 계정에 연결합니다. AWS 계정에는 Snowflake 전송에 필요한 Amazon S3 스테이징 버킷이 포함되어야 합니다 전송.

Azure

Azure Private Link를 구성하여 Azure Virtual Network (VNet)를 Azure의 Snowflake VNet에 연결합니다. Azure 계정에는 Snowflake 전송에 필요한 Blob 스테이징 버킷이 포함되어야 합니다.

Google Cloud

Private Service Connect를 구성하여 Virtual Private Cloud (VPC) 네트워크 서브넷을 에 호스팅된 Snowflake 계정에 연결합니다 Google Cloud. Google Cloud Snowflake 전송에 필요한 Cloud Storage 스테이징 버킷이 있어야 합니다.Google Cloud

Cross-Cloud Interconnect 또는 HA VPN 설정

AWS 또는 Azure에서 Cross-Cloud Interconnect 또는 HA VPN을 설정합니다. 이 단계는 Google Cloud호스팅 Snowflake 계정에는 필요하지 않습니다.

AWS

고가용성 VPN을 사용하면 암호화된 VPN 터널을 통해 데이터를 전송할 수 있습니다. 비공개 Snowflake 전송에 HA VPN을 사용하려면 HA VPN 연결 만들기를 참고하세요. Google Cloud

Cross-Cloud Interconnect 연결은 클라우드 제공업체 간에 전용 비공개 링크를 만들며 지연 시간이 짧은 요구사항이 있는 대규모 데이터 전송에 적합합니다. 비공개 Snowflake 전송에 Cross-Cloud Interconnect를 사용하려면 AWS에 연결을 참고하세요.

Azure

고가용성 VPN을 사용하면 암호화된 VPN 터널을 통해 데이터를 전송할 수 있습니다. 비공개 Snowflake 전송에 HA VPN을 사용하려면 HA VPN 연결을와 Google Cloud Azure 간에 만들기를 참고하세요.

Cross-Cloud Interconnect 연결은 클라우드 제공업체 간에 전용 비공개 링크를 만들며 지연 시간이 짧은 요구사항이 있는 대규모 데이터 전송에 적합합니다. 비공개 Snowflake 전송에 Cross-Cloud Interconnect를 사용하려면 Azure에 연결을 참고하세요.

프록시 VM 만들기

비공개 연결을 완료하려면 데이터가 공개 인터넷에 도달하지 않고 데이터 소스 간의 연결을 완료하는 데 프록시 VM이 필요합니다. 이 단계는 AWS, Azure 또는 Google Cloud에서 호스팅되는 Snowflake 인스턴스에 필요합니다.

Snowflake 비공개 전송을 위한 프록시 VM을 만들고 구성하려면 다음 단계를 따르세요.

  1. 소비자 VPC 네트워크 내에서 하나 이상의 Compute Engine VM 인스턴스를 만듭니다.
  2. HAProxy 또는 Nginx와 같은 TCP 프록시 소프트웨어를 다운로드하고 다음을 구성합니다.
    1. 포트를 지정합니다. 예를 들어 443입니다.
    2. 수신되는 모든 TCP 트래픽을 Snowflake 인스턴스의 비공개 호스트 이름과 포트로 전달합니다.
  3. 소비자 VPC 네트워크에서 구성된 DNS를 통해 Snowflake 비공개 호스트 이름을 확인하도록 VM을 구성합니다.
  4. 다음 단계를 수행하여 내부 패스 스루 부하 분산기를 설정합니다.
    1. 프록시 VM을 관리형 인스턴스 그룹 (MIG)으로 그룹화합니다.
    2. VM 인스턴스 그룹 백엔드로 내부 패스 스루 네트워크 부하 분산기를 설정합니다.

서비스 연결 만들기

Private Service Connect를 사용하여 네트워크 연결을 만들고 서비스를 게시합니다. 이 단계는 AWS, Azure 또는 Google Cloud에서 호스팅되는 Snowflake 인스턴스에 필요합니다.

서비스 연결은 BigQuery 데이터 세트와 동일한 리전에 있어야 합니다.

서비스에서 명시적 승인을 사용하는 경우 (connection-preferenceACCEPT_MANUAL로 설정됨) Snowflake 비공개 데이터 전송에 사용되는 서비스 계정에 다음 IAM 권한이 있어야 합니다.

  • compute.serviceAttachments.get
  • compute.serviceAttachments.update
  • compute.regionOperations.get

서비스 연결을 만든 후 서비스 연결 URI를 기록해 둡니다. Snowflake 전송 구성을 만들 때 이 URI가 필요합니다.

엔드포인트 만들기

AWS 또는 Azure 계정에서 엔드포인트를 만듭니다. 이 단계는 Google Cloud호스팅 Snowflake 계정에는 필요하지 않습니다.

AWS

AWS에서 Amazon S3에 연결되는 VPC 엔드포인트를 만듭니다. 자세한 내용은 인터페이스 VPC 엔드포인트를 사용하여 AWS 서비스 액세스를 참고하세요.

Azure

Azure의 스토리지 계정에서 비공개 엔드포인트를 구성합니다. 자세한 내용은 Azure Storage에 비공개 엔드포인트 사용을 참고하세요.

Storage Transfer Service에는 *.blob.core.microsoft.net 엔드포인트가 필요합니다. *.dfs.core.microsoft.net 엔드포인트는 지원되지 않습니다.

생성되면 엔드포인트의 IP 주소를 기록해 둡니다. 다음 섹션에서 부하 분산기를 만들 때 IP 주소를 지정해야 합니다.

네트워크 부하 분산기 만들기

하이브리드 연결로 리전 내부 프록시 네트워크 부하 분산기 (NLB)를 설정합니다. 부하 분산기를 만들어 이전 섹션에서 만든 Amazon S3 VPC 엔드포인트 또는 Azure Storage 비공개 엔드포인트로 트래픽을 라우팅할 수 있습니다. 자세한 내용은 하이브리드 연결로 리전 내부 프록시 네트워크 부하 분산기 설정을 참고하세요.

NLB 등록

네트워크 NLB를 만든 후 Storage Transfer Service의 서비스 디렉터리에 등록합니다. 자세한 내용은 서비스 디렉터리에 NLB 등록을 참고하세요.

서비스 디렉터리 링크를 기록해 둡니다. Snowflake 전송 구성을 만들 때 서비스의 자체 링크가 필요합니다.

스테이징 버킷 준비

Snowflake 데이터 전송을 완료하려면 스테이징 버킷을 만든 후 Snowflake에서 쓰기 액세스를 허용하도록 구성해야 합니다.

다음 옵션 중 하나를 선택합니다.

AWS

AWS 호스팅 Snowflake 계정의 경우 BigQuery에 로드되기 전에 Snowflake 데이터를 스테이징할 Amazon S3 버킷을 만듭니다.

  1. Amazon S3 버킷을 만듭니다.

  2. Snowflake 스토리지 통합 객체를 만들고 구성하여 Snowflake에서 Amazon S3 버킷에 데이터를 외부 단계로 쓸 수 있도록 합니다.

Amazon S3 버킷에 대한 읽기 액세스를 허용하려면 다음도 수행해야 합니다.

  1. 전용 Amazon IAM 사용자 를 만들고 AmazonS3ReadOnlyAccess 정책을 부여합니다.

  2. Amazon 액세스 키 쌍을 만듭니다 IAM 사용자의 경우.

Azure

Azure 호스팅 Snowflake 계정의 경우 BigQuery에 로드되기 전에 Snowflake 데이터를 스테이징할 Azure Blob Storage 컨테이너를 만듭니다.

  1. Azure 스토리지 계정과 그 안에 스토리지 컨테이너를 만듭니다.
  2. Snowflake 스토리지 통합 객체를 만들고 구성하여 Snowflake에서 Azure 스토리지 컨테이너에 데이터를 외부 단계로 쓸 수 있도록 합니다. 외부 단계를 만드는 단계는 필요하지 않으므로 건너뛸 수 있습니다.

Azure 컨테이너에 대한 읽기 액세스를 허용하려면 SAS 토큰을 생성합니다.

Google Cloud

-호스팅 Snowflake 계정의 경우 BigQuery에 로드되기 전에 Snowflake 데이터를 스테이징할 Cloud Storage 버킷을 만듭니다. Google Cloud

  1. Cloud Storage 버킷 생성
  2. Snowflake 스토리지 통합 객체를 만들고 구성하여 Snowflake에서 Cloud Storage 버킷에 데이터를 외부 단계로 쓸 수 있도록 합니다.
  3. 스테이징 버킷에 대한 액세스를 허용하려면 DTS 서비스 에이전트roles/storage.objectViewer 역할을 다음 명령어를 사용하여 부여합니다.

    gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer

비공개 Snowflake 전송 구성 만들기

Snowflake 전송을 만듭니다. 전송 구성을 설정할 때 다음 단계를 따르세요.

콘솔

  • 비공개 네트워크 사용에서 True를 선택합니다.
  • PSC 서비스 연결에 서비스 연결 URI를 입력합니다. 서비스 연결 URI를 찾는 방법은 게시된 서비스의 세부정보 보기를 참고하세요. 서비스 연결 URI는 projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT 형식입니다.
  • 비공개 네트워크 서비스NLB 서비스의 자체 링크를 입력합니다. projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME 형식을 사용합니다.
  • 전송에 사용할 스테이징 버킷의 URI:
  • 클라우드 제공업체에서 Snowflake 계정을 호스팅하는 클라우드 제공업체에 따라 AWS 또는 AZURE 또는 GCP를 선택합니다.

    AWS

    Azure

    • Azure 스토리지 계정 이름Azure 스토리지 계정의 컨테이너에 스테이징 버킷으로 사용할 Azure Blob Storage의 스토리지 계정 및 컨테이너 이름 을 입력합니다.
    • SAS 토큰에 컨테이너에 대해 생성된 SAS 토큰을 입력합니다.

    Google Cloud

bq

  • use_private_network 매개변수의 경우 TRUE로 설정합니다.
  • service_attachment 매개변수의 경우 서비스 연결 URI를 지정합니다. 서비스 연결 URI를 찾는 방법은 게시된 서비스의 세부정보 보기를 참고하세요. 서비스 연결 URI는 projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT 형식입니다.
  • private_network_service 매개변수의 경우 NLB 서비스의 자체 링크를 제공합니다. projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME 형식을 사용합니다.
  • cloud_provider: Snowflake 계정을 호스팅하는 클라우드 제공업체에 따라 AWS 또는 AZURE 또는 GCP를 입력합니다.
  • staging_s3_uri: 스테이징 버킷으로 사용할 S3 버킷의 URI 를 입력합니다. cloud_providerAWS인 경우에만 필요합니다.
  • aws_access_key_id: 액세스 키 쌍을 입력합니다. cloud_providerAWS인 경우에만 필요합니다.
  • aws_secret_access_key: 액세스 키 쌍을 입력합니다. cloud_providerAWS인 경우에만 필요합니다.
  • azure_storage_account: 스테이징 버킷으로 사용할 스토리지 계정 이름 을 입력합니다. cloud_providerAZURE인 경우에만 필요합니다.
  • staging_azure_container: 스테이징 버킷으로 사용할 Azure Blob Storage 내의 컨테이너 를 입력합니다. cloud_providerAZURE인 경우에만 필요합니다.
  • azure_sas_token: SAS 토큰을 입력합니다. cloud_providerAZURE인 경우에만 필요합니다.
  • staging_gcs_uri : 스테이징 버킷으로 사용할 Cloud Storage의 URI를 입력합니다. cloud_providerGCP인 경우에만 필요합니다.