네트워크 정책을 사용하여 Snowflake 서비스 및 내부 스테이지에 대한 인바운드 액세스를 제어했습니다.
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;
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;
-- drop network
drop network policy allow_public_access;
-- explain network
DESC NETWORK POLICY allow_public_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;
실제 운영환경에선 Public IP -> Snowflake 앞단에 SMA VPN이 있다.
사용자 → SMA VPN → Office Firewall → Snowflake
SMA (Secure Mobile Access)는 원격 사용자(예: 재택근무자, 출장 중인 직원 등)가 기업 내부 리소스에 안전하게 접속할 수 있도록 해주는 SSL-VPN 기반 솔루션
사용자는 전용 Global VPN Client 를 통해 Office VPN에 접속을 통해 내부 시스템에 대한 접근이 가능해짐.
사용자
SMA VPN
HQ Firewall
접근하려는 리소스가 허용된 대상인지 확인Snowflake
문제
사내 네트워크에서 다이렉트로 접근하는 경우 Snowflake에서 network 정책을 만들더라도 접근 가능.
하지만 특정 user가 SMA VPN을 통해 접근하는 경우 SMA VPN 사용자의 트래픽이 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)]
해결 방법
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 규칙을 적용