Snowflke Network policy

문주은·2025년 4월 8일

네트워크 정책을 사용하여 Snowflake 서비스 및 내부 스테이지에 대한 인바운드 액세스를 제어했습니다.

1. Snowflake network 정책 만들기

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES = true;

CREATE NETWORK POLICY allow_public_access
	ALLOWED_IP_LIST = (
      -- azure power bi
      '20.51.0.204/30',
      '20.51.1.32/28',
      '20.51.5.4/30',
      '20.51.5.192/26',
      '40.80.184.70/31',
      '40.80.188.48/28',
      '40.80.188.64/27',
      '40.80.188.128/25',
      '40.80.189.0/24',
      '135.232.168.0/27',
      '172.183.7.208/28'
	);
    
ALTER ACCOUNT SET NETWORK_POLICY = allow_public_access;

1-1. change network policy

ALTER NETWORK POLICY allow_public_access
  SET ALLOWED_IP_LIST = (
    -- azure power bi
    '20.51.0.204/30',
    '20.51.1.32/28',
    '20.51.5.4/30',
    '20.51.5.192/26',
    '40.80.184.70/31',
    '40.80.188.48/28',
    '40.80.188.64/27',
    '40.80.188.128/25',
    '40.80.189.0/24',
    '135.232.168.0/27',
    '172.183.7.208/28',
    '2603:1030:608::620/123',
    '2603:1030:608::640/122'
);

ALTER ACCOUNT SET NETWORK_POLICY = allow_public_access;

1-2. etc command of network

-- drop network
drop network policy allow_public_access;

-- explain network 
DESC NETWORK POLICY allow_public_access;

1-3. test network access

실제로 허용된 네트워크에서 접근하는지 테스트하기 위한 방법

-- log record of specific user from allowed network
SELECT event_timestamp, event_type, user_name, client_ip
FROM snowflake.account_usage.login_history
WHERE user_name = 'user@google.com'
ORDER BY event_timestamp DESC;

2. Operation

실제 운영환경에선 Public IP -> Snowflake 앞단에 SMA VPN이 있다.
사용자 → SMA VPN → Office Firewall → Snowflake

2-1. SMA VPN 이란?

SMA (Secure Mobile Access)는 원격 사용자(예: 재택근무자, 출장 중인 직원 등)가 기업 내부 리소스에 안전하게 접속할 수 있도록 해주는 SSL-VPN 기반 솔루션

사용자는 전용 Global VPN Client 를 통해 Office VPN에 접속을 통해 내부 시스템에 대한 접근이 가능해짐.

2-2. Network Flow

사용자

  • 외부에서 사내 리소스에 접근하려고 할 때 SMA VPN 클라이언트를 실행함.
  • 인증을 통해 VPN 접속

SMA VPN

  • 사용자 인증을 처리하고, 인증되면 사내 네트워크로의 통신 터널을 열어줌
  • 이때 사용자의 트래픽은 암호화되어 HQ로 전달

HQ Firewall

  • HQ 내부로 들어오는 트래픽을 검사
  • SMA VPN을 통해 들어온 트래픽이 올바른지, 접근하려는 리소스가 허용된 대상인지 확인
  • 접근하려는 리소스인 Snowflake와의 연결이 허용된 경우 트래픽을 외부(Snowflake)로 전달

Snowflake

  • 사내망 IP로 제한

2-3. SMA VPN을 통해 접근하는 경우 추가 설정

문제

  • 사내 네트워크에서 다이렉트로 접근하는 경우 Snowflake에서 network 정책을 만들더라도 접근 가능.

  • 하지만 특정 user가 SMA VPN을 통해 접근하는 경우 SMA VPN 사용자의 트래픽이 Snowflake 접근 불가

원인

  • SMA VPN 사용자의 outbound 트래픽이 Snowflake로 나갈 때, NAT(Network Address Translation)를 HQ Firewall의 public IP로 하지 않으면, Snowflake에서는 다음처럼 보임.
사내망 User ➝ NAT ➝ HQ Public IP ➝ Snowflake ✅

SMA VPN User ➝ NAT 안 됨 ➝ VPN 사용자의 사설 IP 혹은 다른 IP ➝ Snowflake ❌ (IP 미허용)

즉, 네트워크에서 사설 IP → 공인 IP로 바꿔주지 못함. 

구성도

[SMA VPN 사용자] 
     ↓
[VPN Tunnel - IP: 10.10.100.x]
     ↓
[Office Firewall - NAT]
     ↓ (SNAT to 203.0.113.11)
[Snowflake (허용된 IP: 203.0.113.11)]
  • 대략적인 구성도일 때 VPN Tunnel -> Office Firewall rule이 정해져 있지 않음.
  • NAT가 빠지면 10.10.100.x 또는 다른 IP로 나가게 되고, Snowflake는 차단함

해결 방법

  • Firewall에 NAT 정책 확인
    SMA VPN 대역 (예: 10.10.100.0/24)의 outbound 트래픽이 나갈 때 HQ의 Public IP로 SNAT (Source NAT) 되도록 설정.

  • Snowflake 허용 IP가 정확히 HQ Firewall의 공인 IP인지 확인
    Snowflake에서 허용한 IP가 예: 203.0.113.11이라면, SMA VPN 트래픽도 이 IP로 나가야 함.

  • 즉, SNAT 규칙을 적용

profile
Data Engineer

0개의 댓글