CREATE NETWORK RULE
CREATE NETWORK RULE
네트워크 규칙(network rule)을 만들거나 기존 네트워크 규칙을 교체하는 명령이에요. 네트워크 규칙은 IP 주소·클라우드 프라이빗 링크 ID·호스트/포트·컴퓨트 풀 등 네트워크 식별자를 허용하거나 차단하는 데 사용해요.
출처: 문서
본문
네트워크 규칙을 만들거나 기존 네트워크 규칙을 교체해요.
이 명령은 다음 변형(variant)을 지원해요.
- CREATE OR ALTER NETWORK RULE: 네트워크 규칙이 없으면 만들고, 있으면 기존 네트워크 규칙을 수정해요.
함께 보기: ALTER NETWORK RULE, DROP NETWORK RULE, SHOW NETWORK RULES, DESCRIBE NETWORK RULE
구문 (Syntax)
CREATE [ OR REPLACE ] NETWORK RULE <name>
TYPE = { IPV4 | IPV6 | AWSVPCEID | AZURELINKID | GCPPSCID | HOST_PORT | PRIVATE_HOST_PORT | COMPUTE_POOL }
VALUE_LIST = ( '<value>' [, '<value>', ... ] )
MODE = { INGRESS | INTERNAL_STAGE | SNOWFLAKE_MANAGED_STORAGE_VOLUME | EGRESS }
[ COMMENT = '<string_literal>' ]
변형 구문 (Variant syntax)
CREATE OR ALTER NETWORK RULE
존재하지 않으면 새 네트워크 규칙을 만들고, 존재하면 기존 네트워크 규칙을 문에 정의된 네트워크 규칙으로 변환해요. CREATE OR ALTER NETWORK RULE 문은 CREATE NETWORK RULE 문의 구문 규칙을 따르고, ALTER NETWORK RULE 문과 동일한 제약을 가져요.
네트워크 규칙을 수정할 때 다음 변경이 지원돼요.
- VALUE_LIST 업데이트
- COMMENT 추가·업데이트·제거
자세한 내용은 CREATE OR ALTER <object>를 참고해요.
CREATE OR ALTER NETWORK RULE <name>
TYPE = { IPV4 | IPV6 | AWSVPCEID | AZURELINKID | GCPPSCID | HOST_PORT | PRIVATE_HOST_PORT | COMPUTE_POOL }
VALUE_LIST = ( '<value>' [, '<value>', ... ] )
MODE = { INGRESS | INTERNAL_STAGE | SNOWFLAKE_MANAGED_STORAGE_VOLUME | EGRESS }
[ COMMENT = '<string_literal>' ]
필수 매개변수 (Required parameters)
name
네트워크 규칙의 식별자예요.
식별자 값은 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
TYPE = { IPV4 | IPV6 | AWSVPCEID | AZURELINKID | GCPPSCID | HOST_PORT | PRIVATE_HOST_PORT | COMPUTE_POOL }
허용하거나 차단할 네트워크 식별자의 유형을 지정해요. 네트워크 규칙은 유형 하나만 가질 수 있어요.
IPV4: 요청 출처의 IPv4 주소에 기반해 네트워크 트래픽을 허용하거나 차단해요.IPV6(AWS 전용): 요청 출처의 IPv6 주소에 기반해 네트워크 트래픽을 허용하거나 차단해요. IPv6 네트워크 규칙은INGRESS모드만 지원해요. IPv6 주소는 전체·압축·IPv4 포함 형식으로 지정할 수 있고, 선택적으로 CIDR 표기법을 사용할 수 있어요. 계정의 IPv6 인그레스 활성화는 IPv6 주소(IPv6 addresses)를 참고해요.AWSVPCEID: AWS PrivateLink를 통한 네트워크 트래픽을 허용하거나 차단해요.AZURELINKID: Azure Private Link를 통한 네트워크 트래픽을 허용하거나 차단해요.GCPPSCID: Google Cloud Private Service Connect를 통한 네트워크 트래픽을 허용하거나 차단해요.HOST_PORT: 요청 대상의 도메인에 기반해 나가는(outgoing) 네트워크 트래픽을 허용해요.TYPE = HOST_PORT일 때MODE매개변수는EGRESS로 설정해야 해요.PRIVATE_HOST_PORT: 나가는 네트워크 트래픽이 외부 네트워크 위치에 대한 프라이빗 연결을 사용하도록 허용해요.TYPE = PRIVATE_HOST_PORT일 때MODE매개변수는 반드시EGRESS로 설정해야 해요.COMPUTE_POOL: Snowpark Container Services 컴퓨트 풀에서 발생하는 네트워크 트래픽을 허용하거나 차단해요.VALUE_LIST는 컴퓨트 풀의 이름을 지정하거나, 계정의 모든 SPCS 컴퓨트 풀과 일치시키려면'ALL'을 지정해요. 자세한 내용은 계정 접근 허용(Allow account access)을 참고해요.TYPE = COMPUTE_POOL일 때MODE매개변수는INGRESS로 설정해야 해요.
VALUE_LIST = ( 'value' [, 'value', ... ] )
허용되거나 차단될 네트워크 식별자를 지정해요.
목록의 유효한 값은 네트워크 규칙의 유형에 따라 결정돼요.
TYPE = IPV4일 때 각 값은 유효한 IPv4 주소 또는 주소 범위여야 해요.TYPE = AWSVPCEID일 때 각 값은 유효한 VPCE ID여야 해요. VPC ID는 지원되지 않아요.TYPE = AZURELINKID일 때 각 값은 Azure 프라이빗 엔드포인트의 유효한 LinkID여야 해요. 계정과 연결된 LinkID를 검색하려면 SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS 함수를 실행해요.TYPE = GCPPSCID일 때 각 값은 Google Cloud Private Service Connect(PSC) 엔드포인트의 유효한 pscConnectionID여야 해요. 각 포워딩 규칙의 pscConnectionID를 얻으려면gcloud compute forwarding-rules describe명령을 실행해요.TYPE = HOST_PORT일 때 각 값은 유효한 도메인으로 해석되어야 해요. 선택적으로 포트 또는 포트 범위를 포함할 수 있어요.- 대부분의 경우 유효한 포트 범위는 1~65535예요. 포트를 지정하지 않으면 기본값 443이 사용돼요. 외부 네트워크 위치가 동적 포트를 지원한다면 가능한 모든 포트를 지정해야 해요.
- 모든 포트에 대한 접근을 허용하려면 포트를 0으로 정의해요. 예:
example.com:0. - 값이 도메인으로 해석될 때 단일 별표를 와일드카드 문자로 사용할 수 있어요. 별표는 영숫자 문자와 하이픈(
-)만 일치해요. - 와일드카드는 서브도메인의 단일 수준에서만 지원돼요. 예:
*.google.com,snowflake-*.google.com,snowflake*abc.google.com. - 도메인으로
0.0.0.0을 지정하면 모든 아웃바운드 엔드포인트에 대한 요청을 허용할 수 있어요.0.0.0.0을 도메인으로 지정할 때는 포트 값으로 443과 80만 사용할 수 있어요.- 모든 엔드포인트의 포트 80 접근 허용:
value_list = ('0.0.0.0:80'); - 모든 엔드포인트의 포트 443 접근 허용:
value_list = ('0.0.0.0:443');value_list = ('0.0.0.0'); - 모든 엔드포인트의 포트 80과 443 접근 허용:
value_list = ('0.0.0.0:80', '0.0.0.0:443');
- 모든 엔드포인트의 포트 80 접근 허용:
TYPE = PRIVATE_HOST_PORT일 때 유효한 도메인 하나를 지정해요.- 대부분의 경우 유효한 포트 범위는 1~65535예요. 포트를 지정하지 않으면 기본값 443이 사용돼요. 외부 네트워크 위치가 동적 포트를 지원한다면 가능한 모든 포트를 지정해야 해요.
- 모든 포트에 대한 접근을 허용하려면 포트를 0으로 정의해요. 예:
example.com:0.
TYPE = COMPUTE_POOL일 때 각 값은 유효한 컴퓨트 풀 이름이거나, 계정의 모든 Snowpark Container Services 컴퓨트 풀과 일치시키려면'ALL'이어야 해요.
MODE = { INGRESS | INTERNAL_STAGE | SNOWFLAKE_MANAGED_STORAGE_VOLUME | EGRESS }
네트워크 규칙이 무엇을 제한하는지 지정해요.
INGRESS:INGRESS모드의 동작은 네트워크 규칙의TYPE속성 값에 따라 달라져요.TYPE=IPV4이면 기본적으로 네트워크 규칙은 Snowflake 서비스에 대한 접근만 제어해요. 계정 관리자가 ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES 매개변수를 활성화하면MODE=INGRESS와TYPE=IPV4는 AWS 내부 스테이지도 보호해요.TYPE=IPV6이면 네트워크 규칙은 Snowflake 서비스에 대한 접근만 제어해요. 내부 스테이지 네트워크 정책은 IPv6 네트워크 규칙을 고려하지 않아요.TYPE=AWSVPCEID,TYPE=AZURELINKID,TYPE=GCPPSCID이면 네트워크 규칙은 Snowflake 서비스에 대한 접근만 제어해요.
INTERNAL_STAGE: Snowflake 서비스에 대한 접근을 제한하지 않고 AWS 내부 스테이지에 대한 요청을 허용하거나 차단해요. 이 모드를 사용하려면 다음이 필요해요.- 계정 관리자가 ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES 매개변수를 활성화해야 해요.
- 네트워크 규칙의
TYPE속성이AWSVPCEID여야 해요.
SNOWFLAKE_MANAGED_STORAGE_VOLUME: Snowflake 서비스에 대한 접근을 제한하지 않고 AWS Snowflake 관리 스토리지 볼륨에 대한 요청을 허용하거나 차단해요. 이 모드를 사용하려면 다음이 필요해요.- 계정 관리자가 ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME 매개변수를 활성화해야 해요.
- 네트워크 규칙의
TYPE속성이AWSVPCEID여야 해요.
EGRESS: Snowflake가 외부 대상에 요청을 보내도록 허용해요.- 기본값:
INGRESS
선택 매개변수 (Optional parameters)
COMMENT = 'string_literal'
네트워크 규칙에 대한 설명(comment)을 지정해요.
- 기본값: 값 없음
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE NETWORK RULE | Schema | 기본적으로 ACCOUNTADMIN과 SECURITYADMIN 역할, 그리고 스키마 소유자만 이 권한을 가져요. 필요에 따라 추가 역할에 부여될 수 있어요. |
| OWNERSHIP | Network Rule | 기존 네트워크 규칙에 대해 CREATE OR ALTER NETWORK RULE 문을 실행하는 데 필요해요. |
스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
네트워크 규칙에 IP 주소를 지정할 때 Snowflake는 CIDR(Classless Inter-Domain Routing) 표기법으로 IP 주소 범위를 지원해요.
예를 들어 192.168.1.0/24는 192.168.1.0부터 192.168.1.255 범위의 모든 IPv4 주소를 나타내요.
CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.
메타데이터에 관해서는 다음 사항에 주의해요.
⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.
CREATE OR ALTER NETWORK RULE
ALTER NETWORK RULE 명령의 모든 제약이 적용돼요.
기존 네트워크 규칙의 TYPE과 MODE 속성은 변경할 수 없어요. 문에 지정된 TYPE 또는 MODE가 기존 네트워크 규칙과 다르면 문이 실패해요.
태그 설정·해제는 지원되지 않아요.
예시 (Examples)
AWS S3 엔드포인트에서 내부 스테이지로의 트래픽을 허용하거나 차단하는 데 사용하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE corporate_network
TYPE = AWSVPCEID
VALUE_LIST = ('vpce-123abc3420c1931')
MODE = INTERNAL_STAGE
COMMENT = 'corporate privatelink endpoint';
AWS S3 엔드포인트에서 Snowflake 관리 스토리지 볼륨으로의 트래픽을 허용하거나 차단하는 데 사용하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE managed_volume_network
TYPE = AWSVPCEID
VALUE_LIST = ('vpce-123abc3420c1931')
MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME
COMMENT = 'Snowflake-managed storage volume privatelink endpoint';
IP 주소 범위에서 Snowflake 서비스와 내부 스테이지로의 트래픽을 허용하거나 차단하는 데 사용하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE cloud_network
TYPE = IPV4
VALUE_LIST = ('47.88.25.32/27')
COMMENT = 'cloud egress ip range';
Google Cloud pscConnectionId에서 Snowflake 서비스로의 트래픽을 허용하거나 차단하는 데 사용하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE gcp_rule
TYPE = GCPPSCID
MODE = INGRESS
VALUE_LIST = (
'31618973889077266',
'{31618973889077288:8.8.8.0/24,172.16.0.0/12,8.8.8.8,172.31.0.0/16,192.168.0.0/16}'
);
GCPPSCID 31618973889077266 뒤의 모든 트래픽은 gcp_rule과 일치해요. GCPPSCID 31618973889077288의 경우 8.8.8.0/24, 172.16.0.0/12, 8.8.8.8, 172.31.0.0/16, 192.168.0.0/16 안의 IP 주소와 CIDR 블록만 gcp_rule과 일치해요.
Snowflake가 외부 대상에 요청을 보낼 때 도메인과 도메인/포트 조합을 허용하는 데 사용하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE external_access_rule
TYPE = HOST_PORT
MODE = EGRESS
VALUE_LIST = ('example.com', 'example.com:443');
외부 네트워크 접근을 위한 아웃바운드 프라이빗 연결을 활성화하는 네트워크 규칙을 만들어요.
CREATE OR REPLACE NETWORK RULE ext_network_access_db.network_rules.azure_sql_private_rule
MODE = EGRESS
TYPE = PRIVATE_HOST_PORT
VALUE_LIST = ('externalaccessdemo.database.windows.net');
IPv6 주소 범위에서 오는 트래픽을 허용하거나 차단하는 네트워크 규칙을 만들어요.
CREATE NETWORK RULE ipv6_network
TYPE = IPV6
MODE = INGRESS
VALUE_LIST = ('2001:db8::/32', '2001:0db8:85a3::8a2e:370:7334');
CREATE OR ALTER NETWORK RULE
새 네트워크 규칙을 만들거나 기존 규칙의 값 목록을 업데이트해요.
CREATE OR ALTER NETWORK RULE corporate_network
TYPE = AWSVPCEID
VALUE_LIST = ('vpce-123abc3420c1931', 'vpce-456def7891234')
MODE = INTERNAL_STAGE
COMMENT = 'corporate privatelink endpoints';
더 알아보기 (Learn more)
- ALTER NETWORK RULE — 네트워크 규칙 수정
- DROP NETWORK RULE — 네트워크 규칙 삭제
- SHOW NETWORK RULES — 네트워크 규칙 조회
- CREATE NETWORK POLICY — 네트워크 정책 생성