내부 스테이지를 위한 AWS VPC 인터페이스 엔드포인트

이 항목에서는 AWS VPC 인터페이스 엔드포인트를 통해 Snowflake 내부 스테이지로 연결하는 자세한 지침과 개념을 제공합니다.

이 항목의 내용:

개요

AWS VPC 인터페이스 엔드포인트AWS Amazon S3용 PrivateLink 를 함께 사용하여 Snowflake 내부 스테이지에 안전하게 연결할 수 있습니다. 이러한 설정을 통해 Snowflake 내부 스테이지로의 데이터 로딩 및 데이터 언로딩 작업에서 공용 인터넷을 통하지 않고 AWS 내부 네트워크를 사용할 수 있습니다.

AWS를 내부 스테이지 액세스를 위한 VPC 인터페이스 엔드포인트를 지원하기 전에는 AWS VPC 내에서 프록시 팜을 생성하여 Snowflake 내부 스테이지로의 보안 액세스를 수립해야 했습니다. Snowflake 내부 스테이지를 위한 VPC 인터페이스 엔드포인트가 지원됨에 따라, 사용자 및 클라이언트 애플리케이션은 이제 비공개 AWS 네트워크를 통해 Snowflake 내부 스테이지에 액세스할 수 있습니다. 다음 다이어그램은 이러한 새로운 지원을 요약하여 보여줍니다.

Connect to internal stage using AWS PrivateLink for S3

BEFORE 다이어그램에서 숫자와 관련하여 다음에 유의하십시오.

  • Snowflake 내부 스테이지에 연결하기 위해 사용자에게 제공되는 옵션 2개는 다음과 같습니다.

    • 옵션 A를 사용하면 숫자 1에서와 같이 내부 스테이지로의 직접 온프레미스 연결이 가능합니다.

    • 옵션 B를 사용하면 숫자 2 및 3과 같이 프록시 팜을 통해 내부 스테이지에 연결할 수 있습니다.

  • 프록시 팜을 사용하면 사용자는 숫자 4로 표시된 Snowflake로의 직접 연결도 가능합니다.

AFTER 다이어그램에서 숫자와 관련하여 다음에 유의하십시오.

  • 이 기능은 업데이트되어 프록시 팜을 통해 Snowflake 또는 Snowflake 내부 스테이지로 연결할 필요가 없습니다.

  • 숫자 5에서와 같이 온프레미스 사용자는 Snowflake에 직접 연결할 수 있습니다.

  • Snowflake 내부 스테이지에 연결하려면, 온프레미스 사용자는 숫자 6에 해당하는 인터페이스 엔드포인트에 연결한 후 Amazon S3용 AWS PrivateLink를 사용하여 숫자 7에서와 같이 Snowflake 내부 스테이지에 연결합니다.

내부 스테이지 배포당 Amazon S3 버킷의 수는 1개입니다. 내부 스테이지 Amazon S3 버킷의 접두사 를 사용하면 각 Snowflake 계정에서 데이터를 구성할 수 있습니다. Amazon S3 버킷 엔드포인트 URLs은 버킷으로의 연결에서 비공개 연결(즉, S3용 AWS PrivateLink) 사용 여부에 따라 다릅니다.

공용 Amazon S3 전역 엔드포인트 URL

<버킷_이름>.s3.region.amazonaws.com/prefix

비공개 Amazon S3 엔드포인트 URL

<vpceID>.s3.<리전>.vpce.amazonaws.com/prefix

이점

Snowflake 내부 스테이지에 액세스하기 위해 VPC 인터페이스 엔드포인트를 구현할 때의 이점은 다음과 같습니다.

  • 내부 스테이지 데이터가 공용 인터넷을 트래버스할 필요가 없습니다.

  • AWS VPC 외부에서 실행되는 Microsoft PowerBI 등의 클라이언트 및 SaaS 애플리케이션을 Snowflake에 안전하게 연결할 수 있습니다.

  • 내부 스테이지 데이터에 액세스할 수 있도록 관리자가 방화벽 설정을 수정할 필요가 없습니다.

  • 관리자는 사용자가 저장소 계정에 연결하는 방법과 관련하여 일관적으로 보안 및 모니터링을 구현할 수 있습니다.

제한 사항

AWS PrivateLink의 제한 사항은 AWS 설명서 를 참조하십시오.

시작하기

요청이 AWS PrivateLink를 통해 Snowflake 내부 스테이지에 액세스할 수 있도록 AWS와 Snowflake를 구성하기 전에 다음을 수행해야 합니다.

전제 조건

  • AWS PrivateLink를 통한 내부 스테이지 연결 지원을 활성화하려면 ENABLE_INTERNAL_STAGES_PRIVATELINK 매개 변수를 설정하십시오. 이 항목에서 논의된 두 가지 구현 전략에 대해 계정 관리자는 다음을 실행해야 합니다.

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    
    Copy
  • S3용 AWS PrivateLink.

    중요

    S3용 AWS PrivateLink는 사용자의 클라우드 환경에서 사용하도록 설정해야 하는 AWS 서비스입니다.

    이 서비스의 구성 및 구현과 관련한 지원이 필요한 경우 내부 AWS 관리자에게 문의하십시오.

  • 방화벽 허용 목록을 다음과 같이 업데이트합니다.

    • 아웃바운드 방화벽을 사용 중인 경우 Snowflake에 필요한 모든 URLs이 허용되는지 확인합니다. 자세한 내용은 SnowCD(Connectivity Diagnostic Tool) 섹션을 참조하십시오.

  • us-east-1 고객 전용: 다음 Snowflake 클라이언트 중 하나를 사용하여 Snowflake에 연결하는 경우 클라이언트 버전을 다음과 같이 업그레이드하십시오.

    • JDBC 드라이버: 3.13.3 이상

    • ODBC 드라이버: 2.23.2 이상

    • Snowflake용 Python Connector: 2.5.1 이상

    • SnowSQL: 1.2.17 이상

      • SnowSQL를 업그레이드한 후 이 기능을 사용하십시오. 자세한 내용은 SnowSQL 설치하기 섹션을 참조하십시오.

      • SnowSQL --noup 옵션 을 사용하는 경우 SnowSQL 자동 업그레이드가 비활성화되며 새 SnowSQL 버전을 다운로드할 수 없음에 유의하십시오. 업그레이드하려면 --noup 옵션을 비활성화하고 업그레이드가 완료된 후 다시 활성화하십시오.

구현 전략 선택하기

알맞은 구현 전략 선택은 조직이 단일 내부 스테이지나 여러 내부 스테이지에 액세스하려고 AWS PrivateLink를 사용하는지 여부에 따라 달라집니다.

인터페이스 엔드포인트를 사용하여 내부 스테이지에 액세스하기

조직이 단일 계정 의 내부 스테이지에 액세스하는 경우 다음 구현 전략을 권장합니다. VPC에서 여러 내부 스테이지에 액세스하는 경우 전용 인터페이스 엔드포인트를 사용하여 내부 스테이지에 액세스하기 섹션을 참조하십시오.

Snowflake 내부 스테이지에 액세스하도록 VPC 인터페이스 엔드포인트를 구성하려면, 조직에서 다음 3개의 역할을 지원해야 합니다.

  1. Snowflake 계정 관리자(즉, Snowflake ACCOUNTADMIN 시스템 역할 사용자).

  2. AWS 관리자.

  3. 네트워크 관리자.

조직에 따라, 2명 이상의 인력 또는 팀이 다음 구성 단계를 구현하는 구성 활동을 조율해야 할 수 있습니다.

절차

다음 단계를 완료하여 VPC 엔드포인트를 통한 Snowflake 내부 스테이지로의 보안 액세스를 구성 및 구현하십시오.

  1. Snowflake 계정 관리자로 Snowflake 계정에서 다음 문을 실행하고 privatelink_internal_stage 키에 의해 정의된 값을 기록합니다. Amazon S3 버킷 이름은 왼쪽에서 오른쪽으로 읽을 때 URL의 첫 번째 세그먼트에 정의되어 있음에 유의하십시오. 자세한 내용은 ENABLE_INTERNAL_STAGES_PRIVATELINKSYSTEM$GET_PRIVATELINK_CONFIG 섹션을 참조하십시오.

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    select key, value from table(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  2. AWS 관리자로 AWS 콘솔을 사용하여 S3용 AWS PrivateLink의 VPC 엔드포인트를 만듭니다. 다음 단계에서 사용하기 위해 VPCE DNS를 기록하되, VPCE DNS 영역 이름은 기록하지 마십시오.

    VPCE DNS 이름은 엔드포인트를 생성한 후 인터페이스 엔드포인트를 설명 하여 찾을 수 있습니다.

    이 예에서는 와일드카드(즉, *)가 VPCE DNS 이름의 선행 문자로 나열됩니다. 선행 와일드카드를 이전 단계의 Amazon S3 버킷 이름으로 바꿉니다. 예:

    기존 항목

    *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

    다음으로 바꾸기

    <버킷_이름>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  3. 네트워크 관리자로 DNS 설정을 업데이트하여 다음 URL을 확인합니다.

    선행 와일드카드 뒤의 VPCE DNS에 붙는 <버킷_이름>.s3.<리전>.amazonaws.com 의 이름이 Amazon S3 버킷 이름으로 바뀝니다.

    이 예에서는 <버킷_이름>.s3.<리전>.amazonaws.com<버킷_이름>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com 으로 확인합니다.

    • Snowflake 외부에 위치한 다른 Amazon S3 버킷의 액세스에 영향을 줄 수 있으므로 DNS 매핑에서 와일드카드 문자(즉, *)를 사용하지 마십시오.

    • 별도의 Snowflake 계정을 사용하여 테스트를 수행해야 하며, 테스트가 분리된 상태에서 다른 워크로드에 영향을 주지 않고 기능을 테스트하기 위해 테스트 VPC에서 프라이빗 호스팅 DNS 존을 구성하십시오.

    • 별도의 Snowflake 계정을 사용하는 것이 불가능한 경우, 테스트 사용자를 사용하여 DNS가 변경되는 테스트 VPC에서 Snowflake에 액세스하십시오.

    • 온프레미스 애플리케이션에서 테스트하려면, DNS 전달을 사용하여 DNS가 설정되는 VPC의 AWS 프라이빗 호스팅 존으로 요청을 전달하십시오. VPC 및 온프레미스 모두에 클라이언트 애플리케이션이 있는 경우 AWS Transit Gateway를 사용하십시오.

    • 클라이언트 시스템에서 다음 명령을 실행하여 반환된 IP 주소가 저장소 계정의 개인 IP 주소인지 확인하십시오.

      dig <bucket_name>.s3.<region>.amazonaws.com
      
      Copy
  4. us-east-1 에 위치한 Snowflake 계정의 경우 Snowflake 클라이언트에서 최신 버전을 사용하고 있는지 확인합니다.

전용 인터페이스 엔드포인트를 사용하여 내부 스테이지에 액세스하기

조직이 여러 계정 의 내부 스테이지에 액세스할 때는 다음 구현 전략을 권장합니다.

사용자는 S3_STAGE_VPCE_DNS_NAME 매개 변수를 사용하여 Snowflake 계정을 Amazon S3 인터페이스 엔드포인트의 DNS 이름과 연결할 수 있습니다. 따라서 AWS 배포에 여러 Snowflake 계정이 있는 조직에서는 각 내부 스테이지를 다른 인터페이스 엔드포인트와 연결할 수 있습니다. 각 내부 스테이지에 고유한 인터페이스 엔드포인트가 있는 경우 특정 내부 스테이지로의 네트워크 트래픽은 다른 내부 스테이지로의 네트워크 트래픽에서 분리됩니다.

계속하기 전에 전제 조건을 충족했는지 확인하십시오.

이점

AWS 배포 내의 내부 스테이지에 전용 Amazon S3 인터페이스 엔드포인트가 있는 전략은 다음과 같은 이점이 있습니다.

보안

개별 인터페이스 엔드포인트가 서로 다른 보안 구성을 가질 수 있으므로 각 계정의 보안 전략이 서로 다를 수 있습니다.

지불 거절 모델

회사는 계정 유형(예: 생산 대 개발)을 기준으로 네트워크 트래픽을 격리하고 엔드포인트를 통해 흐르는 데이터와 관련된 비용을 올바른 계정에 귀속시킬 수 있습니다.

DNS 관리

Amazon S3 인터페이스 엔드포인트의 DNS 이름은 특정 리전 내에서 특정 엔드포인트를 찾는 전역적으로 고유한 이름입니다. AWS가 DNS 이름을 공개 DNS 서비스에 자동으로 등록하는데, 이는 곧 이름을 공개적으로 확인할 수 있다는 뜻입니다. 이러한 이유로 관리자는 Amazon S3 인터페이스 엔드포인트를 통해 내부 스테이지로 트래픽을 라우팅하려고 추가 DNS 구성을 수행할 필요가 없습니다. 예를 들어 관리자는 Amazon Route 53 DNS 서비스를 구성할 때 PHZ(비공개 호스팅 영역)를 설정하거나 엔드포인트를 가리키도록 DNS 이름을 등록할 필요가 없습니다.

구성

네트워크 격리 전략은 다음으로 구성됩니다.

  1. AWS에서 관리자는 조직의 모든 Snowflake 계정에 대해 새로운 Amazon S3 인터페이스 엔드포인트를 생성합니다. 예를 들어 조직의 Snowflake 배포에 계정이 2개 있는 경우 관리자는 인터페이스 엔드포인트를 2개 생성합니다.

  2. Snowflake에서 관리자는 S3_STAGE_VPCE_DNS_NAME 매개 변수를 사용하여 각 Snowflake 계정을 전용 인터페이스 엔드포인트의 DNS 이름과 연결합니다. 계정의 내부 스테이지에 대한 모든 트래픽은 이 인터페이스 엔드포인트를 통과합니다.

AWS 구성

VPC에서 AWS 관리자로서 다음을 수행합니다.

  1. 각 Snowflake 계정에 대해 별도의 Amazon S3 인터페이스 엔드포인트를 생성합니다.

  2. 이러한 각 엔드포인트에 대해 AWS VPC Management Console을 사용하여 다음을 수행합니다.

    1. 엔드포인트를 열어 엔드포인트의 Details 를 확인합니다.

    2. DNS Names 필드를 찾아 리전 범위가 지정된 DNS 이름을 복사합니다. Snowflake S3_STAGE_VPCE_DNS_NAME 매개 변수는 이 값으로 설정됩니다.

      리전 범위가 지정된 DNS 이름의 형식은 *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com 과 같은 형태입니다. AWS는 가용성 영역 DNS 이름도 제공하지만 장애 조치 기능으로 고가용성을 제공하므로 리전 범위가 지정된 DNS 이름을 권장합니다.

Snowflake 구성

AWS 관리자가 Snowflake 계정의 내부 스테이지에 대한 인터페이스 엔드포인트를 생성한 후, Snowflake 관리자는 S3_STAGE_VPCE_DNS_NAME 매개 변수를 사용하여 해당 엔드포인트의 DNS 이름을 계정과 연결할 수 있습니다.

S3_STAGE_VPCE_DNS_NAME 매개 변수는 특정 내부 스테이지와 연결된 인터페이스 엔드포인트의 리전 범위가 지정된 DNS 이름으로 설정해야 합니다. 표준 형식은 별표(*)로 시작하고 vpce.amazonaws.com (예: *.vpce-sd98fs0d9f8g.s3.us-west-2.vpce.amazonaws.com)으로 끝납니다.

예를 들어, 계정 관리자는 다음을 실행하여 엔드포인트를 현재 계정과 연결할 수 있습니다.

alter account set S3_STAGE_VPCE_DNS_NAME='*.vpce-sd98fs0d9f8g.s3.us-west2.vpce.amazonaws.com';
Copy

최종 DNS 값

계정과 연결된 최종 DNS 이름의 형식은 <bucketname>.bucket.vpce-<vpceid>.s3.<region>.vpce.amazonaws.com 입니다.

여기서

  • <bucketname> 은 내부 스테이지의 Amazon S3 버킷 이름입니다.

  • <vpceid> 는 계정과 연결된 Amazon S3 인터페이스 엔드포인트의 고유 식별자입니다.

  • <region> 은 Snowflake 계정을 호스팅하는 클라우드 리전 입니다.

최종 DNS 이름은 내부 스테이지에 연결되는 각 드라이버의 로그에 나타납니다.