Data Connectivity Proxy security

Data Connectivity Proxy security (데이터 연결 프록시 보안)

이 페이지는 DCP가 에이전트를 어떻게 인증하고, 인증서를 어떻게 관리하며, 데이터 경로 트래픽을 어떻게 암호화하는지, 그리고 접근을 어떻게 취소하는지 설명해요.

출처: Snowflake Documentation

본문

인증 및 인증서 관리

DCP는 2단계 인증 모델을 사용해요.

1단계: Bootstrap

에이전트는 자격 증명 파일에서 bootstrap JWT(SYSTEM$GENERATE_DATA_CONNECTIVITY_PROXY_BOOTSTRAP_TOKEN으로 발급)를 읽어요. 이 JWT를 컨트롤 플레인에 제시하고 DCP 클라이언트 신원에 스코프된 mTLS 인증서 쌍을 받아요.

2단계: 지속 운영

이후 모든 통신(데이터 터널, 컨트롤 플레인 하트비트, 라우팅 테이블 업데이트)은 상호 TLS(mTLS)를 사용해요. 에이전트와 릴레이 모두 매 연결마다 서로의 인증서를 인증해요. bootstrap JWT는 다음 인증서 교체 주기까지 다시 사용되지 않아요.

인증서 계층 구조

에이전트는 운영 체제 신뢰 저장소가 아니라 bootstrap 중에 전달된 Snowflake 관리 CA 번들로 모든 피어 인증서를 검증해요. 이 번들은 4계층 PKI 계층 구조를 구현해요.

Deployment root CA
  └── Control-plane intermediate CA
        └── Per-account intermediate CA
              └── Leaf certificate (per agent)

배포 루트 공개 키는 첫 bootstrap에서 고정(pin)돼요. 이후 다른 루트를 제시하는 업데이트는 거부돼요. OS나 JVM 신뢰 저장소에 Snowflake 인증서를 설치하거나 신뢰할 필요가 없어요.

Snowflake는 주기적으로 에이전트에 리프 인증서를 교체하도록 지시해요. 에이전트는 자격 증명 파일을 다시 읽고, 컨트롤 플레인으로 재인증해 새 인증서를 받아요. 교체는 활성 연결에 투명해요.

접근 취소

에이전트의 연결 능력을 즉시 취소하려면:

ALTER DATA CONNECTIVITY PROXY my_dcp_client SET ENABLED = FALSE;

또는 객체 전체를 드롭:

DROP DATA CONNECTIVITY PROXY my_dcp_client;

컨트롤 플레인은 매 연결 시도마다 등록된 키 쌍에 대해 mTLS 인증서를 검증해요. DCP 객체가 비활성화되거나 드롭된 후에는 암호학적으로 유효하더라도 에이전트의 인증서는 사용할 수 없어요.

bootstrap JWT가 bootstrap 완료 전에 손상됐다면 토큰을 재생성해요:

SELECT SYSTEM$GENERATE_DATA_CONNECTIVITY_PROXY_BOOTSTRAP_TOKEN('my_dcp_client', 7);

무중단으로 bootstrap 토큰 교체에 설명된 대로 새 토큰을 자격 증명 파일에 작성해요.

네트워크 정책 적용

DCP 객체의 네트워크 정책은 선택 사항이에요. DCP 컨트롤 플레인에 연결할 수 있는 소스 IP를 제한하는 DCP 전용 정책을 원할 때만 사용해요:

ALTER DATA CONNECTIVITY PROXY my_dcp_client
  SET NETWORK_POLICY = my_network_policy;

네트워크 정책 생성에 대한 자세한 내용은 네트워크 정책으로 네트워크 트래픽 제어를 참고해요.

데이터 경로 보안

에이전트와 Snowflake 릴레이 사이의 모든 트래픽은 AES-256-GCM으로 암호화돼요. 각 TCP 연결은 독립적인 P-256 ECDH 키 교환을 사용해요. 연결 간 공유 키 자료가 없으므로, 한 연결의 키 자료가 손상돼도 다른 연결에는 영향을 주지 않아요.

에이전트는 TCP 레벨의 통과 역할만 해요. 터널을 통과하는 데이터를 검사, 파싱, 버퍼링, 저장하지 않아요. 소스 자격 증명은 Snowflake에 남아 있으며 에이전트로 전송되지 않아요.

기업 프록시 지원

에이전트 자체의 아웃바운드 트래픽을 엔터프라이즈 관리형 전달 프록시(HTTPS_PROXY / CONNECT 기반 전달)로 라우팅하는 것은 지원되지 않아요. 에이전트 호스트는 포트 443에서 필요한 Snowflake 호스트 이름에 직접 아웃바운드 접근이 가능해야 해요.

모든 연결 경로는 중간 개입 없이 종단 간 TLS가 필요해요.

에이전트와 Snowflake 사이의 TLS 연결은 종단 간 그대로 유지·수정되지 않아야 해요. DCP 트래픽에 TLS 검사, 복호화, 인증서 대체, TLS 종료를 사용하지 마세요. 이러한 제어는 방화벽이 포트 443에서 아웃바운드 트래픽을 허용하더라도 에이전트가 클라이언트 인증서로 인증하고 안정적인 릴레이 연결을 설정하는 것을 막을 수 있어요.

DCP 네트워킹 요구 사항에 나열된 모든 DCP 호스트 이름으로의 에이전트 호스트 트래픽에 대해 TLS 검사를 우회하도록 방화벽, 프록시 및 기타 네트워크 보안 장치를 구성해요.

더 알아보기 (Learn more)