AWS PrivateLink 및 Snowflake¶
이 항목에서는 Snowflake 계정을 1개 이상의 AWS VPCs에 직접 연결하기 위해 AWS PrivateLink를 구성하는 방법을 설명합니다.
AWS PrivateLink는 Snowflake에서 제공하는 서비스가 아님에 유의하십시오. 이는 Snowflake 계정과 함께 사용하도록 Snowflake가 지원하는 AWS 서비스입니다.
이 항목의 내용:
AWS PrivateLink란 무엇입니까?¶
AWS PrivateLink 는 공용 인터넷을 트래버스하지 않고 AWS VPC와 Snowflake VPC 사이에서 직접 보안 연결을 할 수 있도록 비공개 VPC 엔드포인트를 생성하는 AWS 서비스입니다. 연결은 동일한 AWS 리전의 AWS VPC를 위한 것입니다.
외부 함수 쓰기 의 경우 비공개 엔드포인트 와 함께 AWS PrivateLink를 사용할 수도 있습니다.
또한, 온프레미스 환경(예: 비호스팅형 데이터 센터)이 있는 경우에는 AWS PrivateLink와 함께 AWS Direct Connect 를 사용하여 단일 개인 네트워크의 모든 가상 및 실제 환경을 연결할 수 있습니다.
참고
AWS Direct Connect는 AWS PrivateLink와 별도로 구현해야 하는 별개의 AWS 서비스이며 이 항목의 설명 범위에 해당하지 않습니다. AWS Direct Connect 구현 방법과 관련해서는 Amazon에 문의하십시오.
AWS PrivateLink 활성화¶
참고
현재, 이 섹션의 셀프 서비스 활성화 프로세스에서는 관리형 클라우드 서비스 또는 타사 벤더의 AWS 계정 식별자 인증을 지원하지 않습니다.
이 사용 사례에 대해 AWS 계정 식별자를 인증하려면 벤더에서 AWS 계정 식별자를 검색하고 Snowflake 지원 에 문의하십시오.
Snowflake 계정의 AWS PrivateLink를 활성화하려면 다음 단계를 완료하십시오.
명령줄 환경에서 다음 AWS CLI STS 명령을 실행하고 출력을 저장합니다. 출력은 다음 단계에서
federated_token
인자의 값으로 사용됩니다.aws sts get-federation-token --name sam
get-federation-token
에는 AWS 또는 AWS 계정 루트 사용자의 ID 및 액세스 관리 사용자가 필요합니다. 자세한 내용은 AWS 설명서 를 참조하십시오."FederatedUserId"
값에서 12자리 숫자를 추출합니다(잘림). 예를 들어 토큰에 다음이 포함된 경우:{ ... "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }
185...
를 추출합니다. 이 12자리 숫자는 다음 단계에서aws_id
의 값이 됩니다.Snowflake 계정 관리자(즉, ACCOUNTADMIN 시스템 역할을 가진 사용자)로서, SYSTEM$AUTHORIZE_PRIVATELINK 함수를 호출하여 Snowflake 계정에 대해 AWS PrivateLink를 인증(즉, 활성화)합니다.
select SYSTEM$AUTHORIZE_PRIVATELINK ( '<aws_id>' , '<federated_token>' );
여기서
'aws_id'
AWS(Amazon Web Services) 계정을 문자열로 고유하게 식별하는 12자리 식별자입니다.
'federated_token'
페더레이션 사용자에 대한 액세스 자격 증명을 문자열로 포함하는 페더레이션 토큰 값입니다.
예:
use role accountadmin; select SYSTEM$AUTHORIZE_PRIVATELINK ( '185...', '{ "Credentials": { "AccessKeyId": "ASI...", "SecretAccessKey": "enw...", "SessionToken": "Fwo...", "Expiration": "2021-01-07T19:06:23+00:00" }, "FederatedUser": { "FederatedUserId": "185...:sam", "Arn": "arn:aws:sts::185...:federated-user/sam" }, "PackedPolicySize": 0 }' );
인증된 구성을 확인하려면 AWS의 Snowflake 계정에서 SYSTEM$GET_PRIVATELINK 함수를 호출하십시오. 이 함수는 Snowflake 계정을 인증하는 데 사용된 'aws_id'
및 'federated_token'
에 동일한 인자 값을 사용합니다.
Snowflake는 성공적인 인증에 대해 Account is authorized for PrivateLink.
를 반환합니다.
Snowflake 계정에서 AWS PrivateLink 를 비활성화 해야 하는 경우 'aws-id'
및 'federated_token'
에 동일한 인자 값을 사용하여 SYSTEM$REVOKE_PRIVATELINK 함수를 호출하십시오.
중요
federated_token
은 12시간 후에 만료됩니다.
시스템 함수를 호출하여 Snowflake 계정이 AWS PrivateLink를 사용하도록 인증, 확인 또는 비활성화하고 토큰이 유효하지 않은 경우 이 섹션의 절차 시작 부분에 표시된 AWS CLI STS 명령을 사용하여 토큰을 다시 생성하십시오.
AWS VPC 환경 구성하기¶
주의
이 섹션에서는 VPC 환경 구성과 관련하여 Snowflake에만 해당하는 자세한 내용을 설명합니다.
또한, Snowflake는 필수 AWS VPC 엔드포인트, 보안 그룹 규칙 및 DNS 기록을 실제로 구성하지 않음에 유의하십시오. 이러한 구성 작업과 관련한 문제가 발생하면 AWS 지원에 직접 문의해야 합니다.
VPC 엔드포인트(VPCE) 생성 및 구성하기¶
VPC 엔드포인트를 만들고 구성하려면 다음 단계를 완료하십시오. AWS VPC 환경에서 다음 작업을 수행합니다.
Snowflake 계정 관리자(즉, ACCOUNTADMIN 시스템 역할을 가진 사용자)로서, SYSTEM$GET_PRIVATELINK_CONFIG 함수를 호출하고
privatelink-vpce-id
값을 기록합니다.AWS 환경에서 이전 단계의
privatelink-vpce-id
값을 사용하여 VPC 엔드포인트를 만듭니다.AWS 환경에서 VPCE CIDR(클래스 없는 도메인 간 라우팅)의
443
및80
포트로 Snowflake 송신 연결을 연결하는 서비스의 보안 그룹에 권한을 부여합니다.
자세한 내용은 다음 AWS 설명서를 참조하십시오.
VPC 네트워크 구성하기¶
AWS PrivateLink 엔드포인트를 통해 Snowflake에 액세스하려면 DNS에 CNAME 레코드를 생성하여 SYSTEM$GET_PRIVATELINK_CONFIG 함수의 엔드포인트 값을 VPC 엔드포인트의 DNS 이름으로 확인해야 합니다.
이러한 엔드포인트 값을 사용하면 Snowflake, Snowsight, Snowflake Marketplace 에 액세스할 수 있으며 OCSP 를 사용하여 Snowflake 클라이언트가 HTTPS 및 연결 URL 을 통해 엔드포인트에 연결을 시도할 때 인증서가 취소되는지 여부를 결정할 수도 있습니다.
얻을 함수 값은 다음과 같습니다.
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
regionless-snowsight-privatelink-url
및 snowsight-privatelink-url
의 값은 비공개 연결을 사용하여 Snowsight 및 Snowflake Marketplace 에 대한 액세스를 허용합니다. 하지만 URL 리디렉션을 사용하려는 경우 추가 구성이 있습니다.
자세한 내용은 Snowsight 및 비공개 연결 을 참조하십시오.
DNS 구성과 관련한 추가적인 지원이 필요한 경우 내부 AWS 관리자에게 문의하십시오.
중요
이 항목의 Snowflake 클라이언트 구성하기 의 1단계에서 제공되는 설명과 같이, OCSP 캐시 서버 호스트 이름의 구조는 설치한 클라이언트 버전에 따라 다릅니다.
나열된 버전 이상을 사용 중인 경우에는 위에서 설명된 형식을 사용합니다. 이를 통해 동일한 리전에 여러 Snowflake 계정(예: 개발, 테스트 및 프로덕션)이 있는 경우 DNS 확인을 향상할 수 있습니다. PrivateLink를 통한 OCSP를 사용하여 클라이언트 드라이버를 업데이트할 때는 OCSP 호스트 이름을 허용하도록 방화벽 규칙을 업데이트합니다.
기존 클라이언트 버전을 사용하는 경우 OCSP 캐시 서버 호스트 이름의 형식은
ocsp.<리전_id>.privatelink.snowflakecomputing.com
(즉, 계정 식별자 를 사용하지 않음)입니다.DNS 레코드가 VPC 내에서 개인 IP 주소를 확인할 수 있어야 합니다. 공용 IP 주소로 확인되면 레코드가 올바르게 구성되지 않은 것입니다.
Amazon S3용 AWS VPC 인터페이스 엔드포인트 생성하기¶
이 단계는 Snowflake 클라이언트의 Amazon S3 트래픽이 AWS 백본에서 연결을 유지하기 위해 필요합니다. Snowflake 클라이언트(예: SnowSQL, JDBC 드라이버)는 다양한 런타임 작업을 수행하기 위해 Amazon S3에 액세스해야 합니다.
AWS VPC 네트워크에서 공용 인터넷에 액세스할 수 없는 경우 Snowflake 클라이언트에서 필요한 Amazon S3 호스트 이름으로 내부 스테이지 또는 더 많은 게이트웨이 엔드포인트에 대한 비공개 연결을 구성할 수 있습니다.
Amazon S3에 대한 액세스를 구성하는 옵션은 3가지가 제공됩니다. 첫 번째 두 옵션은 공용 인터넷을 사용하지 않지만, 세 번째 옵션에서는 그렇지 않습니다.
내부 스테이지 를 위한 AWS VPC 인터페이스 엔드포인트를 구성합니다. 이 옵션이 권장 옵션입니다.
Amazon S3 게이트웨이 엔드포인트를 구성합니다. 자세한 내용은 아래 참고를 참조하십시오.
인터페이스 엔드포인트 또는 게이트웨이 인터페이스를 구성하지 마십시오. 그러면 공용 인터넷을 사용하여 액세스하게 됩니다.
주의
Amazon S3 버킷과 Snowflake를 통한 AWS VPC 사이의 통신에서 공용 인터넷을 사용하는 것을 방지하기 위해 Amazon S3 버킷과 동일한 AWS 리전에 Amazon S3 게이트웨이 엔드포인트를 설정할 수 있습니다. 이렇게 설정하는 이유는 AWS PrivateLink는 VPCs 간의 통신만을 허용하며 Amazon S3 버킷은 VPC에 포함되지 않기 때문입니다.
Amazon S3 게이트웨이 엔드포인트가 특정 사용자, S3 리소스, 경로 및 서브넷을 제한하도록 구성할 수 있지만, Snowflake에서는 이러한 구성이 필요하지 않습니다. 자세한 내용은 Amazon S3용 엔드포인트 를 참조하십시오.
Snowflake용 Amazon S3 리소스만 사용하도록 제한하는 Amazon S3 게이트웨이 엔드포인트 정책을 구성하려면 다음 옵션 중 하나를 선택합니다.
Snowflake 계정에서 사용하는 특정 Amazon S3 호스트 이름 주소를 사용합니다. 사용자 계정에서 사용하는 전체 호스트 이름 목록은 SYSTEM$ALLOWLIST 를 참조하십시오.
Snowflake S3 호스트 이름과 일치하는 Amazon S3 호스트 이름 패턴을 사용합니다. 이러한 경우에는 VPC-VPC 연결 또는 온프레미스-VPC 연결 의 두 가지 Snowflake 연결 타입을 사용할 수 있습니다.
연결 타입에 따라 다음 사항을 참고하십시오.
- VPC-VPC 연결:
Amazon S3 게이트웨이 엔드포인트가 있는지 확인합니다. 선택 사항으로 Amazon S3 호스트 이름 테이블의 특정 호스트 이름 패턴과 일치하도록 S3 게이트웨이 엔드포인트 정책을 수정합니다.
- 온프레미스-VPC 연결:
Amazon S3 트래픽이 공용 게이트웨이에서 허용되지 않는 경우 방화벽 또는 프록시 구성에 S3 호스트 이름 패턴을 포함하도록 설정해야 합니다.
다음 테이블은 사용자 계정의 Snowflake 관리형 S3 버킷에 특정할 필요가 없는 경우 게이트웨이 엔드포인트를 생성하기 위한 Amazon S3 호스트 이름 패턴을 보여줍니다.
Amazon S3 호스트 이름
참고
모든 리전
sfc-*-stage.s3.amazonaws.com:443
US 동부를 제외한 모든 리전
sfc-*-stage.s3-<리전_id>.amazonaws.com:443
패턴에서 리전 ID 앞에 하이픈(
-
)이 사용됨에 유의하십시오.sfc-*-stage.s3.<리전_id>.amazonaws.com:443
패턴에서 리전 ID 앞에 마침표(
.
)가 사용됨에 유의하십시오.
게이트웨이 엔드포인트 생성에 대한 자세한 내용은 게이트웨이 VPC 엔드포인트 를 참조하십시오.
Snowflake에 연결하기¶
Snowflake에 연결하기 전에 선택 사항 으로 SnowCD(Snowflake 연결 진단 도구)를 사용하여 Snowflake와 AWS PrivateLink의 네트워크 연결을 평가할 수 있습니다.
자세한 내용은 SnowCD 및 SYSTEM$ALLOWLIST_PRIVATELINK 를 참조하십시오.
그렇지 않으면 비공개 연결 계정 URL 로 Snowflake에 연결합니다.
AWS PrivateLink를 통해 Snowsight에 연결하려면 Snowsight 설명서 의 지침을 따르십시오.
공용 액세스 차단하기 — 선택 사항¶
AWS PrivateLink를 사용하여 Snowflake에 대한 비공개 연결을 테스트한 후 Snowflake에 대한 공개 액세스를 선택적으로 차단할 수 있습니다. 즉, 사용자가 Snowflake 네트워크 정책에 지정된 특정 CIDR 블록 범위 내의 IP 주소에서 연결 요청이 시작되는 경우에만 Snowflake에 액세스할 수 있다는 뜻입니다.
네트워크 정책을 사용하여 공용 액세스를 차단하려면:
새 네트워크 정책을 생성하거나 기존 네트워크 정책을 수정합니다. 조직에서 사용할 CIDR 블록 범위를 추가합니다.
사용자 계정에서 네트워크 정책을 사용하도록 설정합니다.
자세한 내용은 네트워크 정책으로 네트워크 트래픽 제어하기 섹션을 참조하십시오.
Snowflake 클라이언트 구성하기¶
Snowflake 클라이언트의 OCSP 캐시 서버 지원 여부 확인하기¶
Snowflake OCSP 캐시 서버는 Snowflake 클라이언트와 서버 사이에서 연결 문제 발생 가능성을 줄여줍니다. 설치된 Snowflake 클라이언트가 OCSP 서버 캐시를 사용하려면 다음 클라이언트 버전을 사용해야 합니다.
SnowSQL 1.1.57 이상
Python Connector 1.8.2 이상
JDBC 드라이버 3.8.3 이상
ODBC 드라이버 2.19.3 이상
참고
Snowflake OCSP 캐시 서버는 80
포트에서 수신을 대기하며, 그렇기 때문에 VPC 엔드포인트(VPCE) 생성 및 구성하기 에서는 AWS PrivateLinkVPCE 보안 그룹이 443
포트(기타 모든 Snowflake 트래픽에서 사용)와 함께 이 포트를 허용하도록 구성하는 설명이 제공되었습니다.
Snowflake 클라이언트용 호스트 이름 지정하기¶
각 Snowflake 클라이언트가 Snowflake 계정에 연결하려면 호스트 이름이 필요합니다.
호스트 이름은 VPC 네트워크 구성하기 에서 CNAME 레코드에 지정한 호스트 이름과 동일합니다.
이 단계는 Snowflake Marketplace 에 대한 액세스에는 적용되지 않습니다.
예를 들어, 이름이 xy12345
인 계정에서:
계정이 US 서부에 위치한 경우 호스트 이름은
xy12345.us-west-2.privatelink.snowflakecomputing.com
입니다.계정이 EU(프랑크푸르트)에 위치한 경우 호스트 이름은
xy12345.eu-central-1.privatelink.snowflakecomputing.com
입니다.
중요
호스트 이름 지정 방법은 클라이언트에 따라 다음과 같이 다릅니다.
Spark 커넥터와 ODBC 및 JDBC 드라이버의 경우 전체 호스트 이름을 지정합니다.
기타 모든 클라이언트에서는 전체 호스트 이름을 지정하지 않습니다.
대신, 계정 식별자 를
privatelink
세그먼트(즉,<계정_식별자>.privatelink
)와 함께 지정하여, Snowflake가snowflakecomputing.com
에 연결하여 호스트 이름을 동적으로 구성하도록 합니다.
Snowflake 클라이언트용 계정 이름 또는 호스트 이름 지정과 관련한 자세한 내용은 각 클라이언트에 대한 설명서를 참조하십시오.
AWS PrivateLink에서 SSO 사용하기¶
Snowflake는 AWS PrivateLink에서 SSO를 사용하도록 지원합니다. 자세한 내용은 다음을 참조하십시오.
AWS PrivateLink에서 클라이언트 리디렉션 사용하기¶
Snowflake는 AWS PrivateLink에서 클라이언트 리디렉션 사용을 지원합니다.
자세한 내용은 클라이언트 연결 리디렉션하기 섹션을 참조하십시오.
비공개 연결로 복제 및 Tri-Secret Secure 사용하기¶
Snowflake는 대상 계정에서 Tri-Secret Secure 또는 이 기능을 활성화하는지에 관계없이 원본 계정에서 대상 계정으로 데이터 복제를 지원합니다.
자세한 내용은 데이터베이스 복제 및 암호화 섹션을 참조하십시오.
문제 해결¶
다음 Snowflake 커뮤니티 문서를 참고하십시오.