CREATE NETWORK POLICY
CREATE NETWORK POLICY
네트워크 정책(network policy)을 만들거나 기존 네트워크 정책을 교체하는 명령이에요. 네트워크 정책은 계정·사용자·보안 인티그레이션에 연결되어 Snowflake에 접근할 수 있는 IP 주소와 네트워크를 제어해요.
출처: 문서
본문
네트워크 정책을 만들거나 기존 네트워크 정책을 교체해요.
이 명령은 다음 변형(variant)을 지원해요.
- CREATE OR ALTER NETWORK POLICY: 네트워크 정책이 없으면 만들고, 있으면 기존 네트워크 정책을 수정해요.
참고: 보안 관리자(즉 SECURITYADMIN 역할을 가진 사용자) 이상 또는 전역 CREATE NETWORK POLICY 권한이 있는 역할만 네트워크 정책을 만들 수 있어요.
함께 보기: ALTER NETWORK POLICY, DROP NETWORK POLICY, SHOW NETWORK POLICIES, DESCRIBE NETWORK POLICY
ALTER ACCOUNT
구문 (Syntax)
CREATE [ OR REPLACE ] NETWORK POLICY [ IF NOT EXISTS ] <name>
[ ALLOWED_NETWORK_RULE_LIST = ( '<network_rule>' [ , '<network_rule>' , ... ] ) ]
[ BLOCKED_NETWORK_RULE_LIST = ( '<network_rule>' [ , '<network_rule>' , ... ] ) ]
[ ALLOWED_IP_LIST = ( [ '<ip_address>' ] [ , '<ip_address>' , ... ] ) ]
[ BLOCKED_IP_LIST = ( [ '<ip_address>' ] [ , '<ip_address>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
변형 구문 (Variant syntax)
CREATE OR ALTER NETWORK POLICY
존재하지 않으면 새 네트워크 정책을 만들고, 존재하면 기존 네트워크 정책을 문에 정의된 네트워크 정책으로 변환해요. CREATE OR ALTER NETWORK POLICY 문은 CREATE NETWORK POLICY 문의 구문 규칙을 따르고, ALTER NETWORK POLICY 문과 동일한 제약을 가져요.
네트워크 정책을 수정할 때 다음 변경이 지원돼요.
- ALLOWED_NETWORK_RULE_LIST, BLOCKED_NETWORK_RULE_LIST, ALLOWED_IP_LIST 또는 BLOCKED_IP_LIST 업데이트
- COMMENT 추가·업데이트·제거
자세한 내용은 CREATE OR ALTER <object>를 참고해요.
CREATE OR ALTER NETWORK POLICY <name>
[ ALLOWED_NETWORK_RULE_LIST = ( '<network_rule>' [ , '<network_rule>' , ... ] ) ]
[ BLOCKED_NETWORK_RULE_LIST = ( '<network_rule>' [ , '<network_rule>' , ... ] ) ]
[ ALLOWED_IP_LIST = ( [ '<ip_address>' ] [ , '<ip_address>' , ... ] ) ]
[ BLOCKED_IP_LIST = ( [ '<ip_address>' ] [ , '<ip_address>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
필수 매개변수 (Required parameters)
name
네트워크 정책의 식별자로, 계정 안에서 고유해야 해요.
식별자 값은 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
선택 매개변수 (Optional parameters)
ALLOWED_NETWORK_RULE_LIST = ( 'network_rule' [ , 'network_rule' , ... ] )
Snowflake에 접근이 허용되는 네트워크 식별자를 포함하는 네트워크 규칙 목록을 지정해요. 목록의 네트워크 규칙 수에는 제한이 없어요.
BLOCKED_NETWORK_RULE_LIST = ( 'network_rule' [ , 'network_rule' , ... ] )
Snowflake에 접근이 거부되는 네트워크 식별자를 포함하는 네트워크 규칙 목록을 지정해요. 목록의 네트워크 규칙 수에는 제한이 없어요.
ALLOWED_IP_LIST = ( [ ip_address ] [ , ip_address , ... ] )
Snowflake 계정에 접근이 허용되는 IPv4 주소 목록을 지정해요. 이를 허용 목록(allowed list)이라고 해요.
Snowflake는 이 속성보다 네트워크 정책과 함께 네트워크 규칙을 사용할 것을 권장해요. IPv4 또는 IPv6 주소를 포함하는 네트워크 규칙을 지정하려면 ALLOWED_NETWORK_RULE_LIST 속성을 사용해요.
아직 네트워크 규칙을 사용하지 않는다면 Snowflake 계정에 접근을 허용할 IPv4 주소나 CIDR 블록 범위를 최소 하나 지정해요. 또한 네트워크 규칙을 사용하지 않고 이 속성을 빈 목록으로 지정하면 Snowflake 계정에 접근할 수 있는 IPv4 주소가 없어요.
참고:
ALLOWED_IP_LIST매개변수는 IPv4 주소만 지원해요. IPv6 주소를 허용하거나 차단하려면TYPE = IPV6인 네트워크 규칙을 사용해ALLOWED_NETWORK_RULE_LIST또는BLOCKED_NETWORK_RULE_LIST에 추가해요. IPv4와 IPv6 네트워크 규칙은 독립적으로 평가되므로, 네트워크에 이중 스택(dual-stack, IPv4 및 IPv6) 트래픽이 있다면 주소 체계별로 별도의 네트워크 규칙을 만들고 둘 다 네트워크 정책에 추가해요. 계정의 IPv6 인그레스 활성화는 IPv6 주소(IPv6 addresses)를 참고해요.
BLOCKED_IP_LIST = ( [ ip_address ] [ , ip_address , ... ] )
Snowflake 계정에 접근이 거부되는 IPv4 주소 목록을 지정해요. 이를 차단 목록(blocked list)이라고 해요. 이 매개변수를 해제하려면 다른 CIDR 블록 범위, 일련의 IPv4 주소, 또는 단일 IPv4 주소를 지정해요.
Snowflake는 이 매개변수보다 네트워크 정책과 함께 네트워크 규칙을 사용할 것을 권장해요. IPv4 또는 IPv6 주소를 포함하는 네트워크 규칙을 지정하려면 BLOCKED_NETWORK_RULE_LIST 속성을 사용해요.
공용 접근을 차단하려면 네트워크 규칙을 사용해 BLOCKED_NETWORK_RULE_LIST 속성에 네트워크 규칙을 추가해요. 그러면 AWS PrivateLink 같은 프라이빗 연결을 사용하는 IP 주소만 Snowflake 계정에 접근할 수 있어요.
- 기본값: 값 없음.
ALLOWED_IP_LIST속성의 IP 주소 중 차단되는 주소는 없어요.
COMMENT = 'string_literal'
네트워크 정책에 대한 설명(comment)을 지정해요.
- 기본값: 값 없음
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE NETWORK POLICY | Account | 기본적으로 SECURITYADMIN 역할 또는 그보다 높은 역할만 이 권한을 가져요. 필요에 따라 추가 역할에 부여될 수 있어요. |
| OWNERSHIP | Network Policy | 기존 네트워크 정책에 대해 CREATE OR ALTER NETWORK POLICY 문을 실행하는 데 필요해요. |
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
네트워크 정책과 함께 네트워크 규칙을 사용해 Snowflake 계정에 대한 접근을 관리해요.
현재 계정·보안 인티그레이션·사용자에 할당되어 있는 네트워크 정책은 CREATE OR REPLACE NETWORK POLICY 명령으로 교체할 수 없어요.
각 ip_address는 CIDR(Classless Inter-Domain Routing) 표기법으로 주소 범위를 덮을 수 있어요. ip_address[/optional_prefix_length]. 예를 들어 192.168.1.0/24처럼요.
네트워크 정책이 ALLOWED_IP_LIST와 BLOCKED_IP_LIST 두 값 모두를 포함하면 Snowflake가 차단 목록을 먼저 적용해요.
ALLOWED_IP_LIST 목록의 최대 문자 수는 100,000이에요. 이 문자 한도를 초과하면 Snowflake가 오류 메시지를 반환해요.
네트워크 정책을 만든 뒤에는 Snowflake가 정책을 강제하기 전에 계정과 연결해야 해요. SECURITYADMIN 역할(또는 그 이상)을 가진 사용자가 실행해야 하는 ALTER ACCOUNT 명령으로 정책을 계정과 연결할 수 있어요.
예를 들어:
USE ROLE SECURITYADMIN;
ALTER ACCOUNT SET NETWORK_POLICY = <policy_name>;
자세한 내용은 매개변수 관리(Parameter management)를 참고해요. NETWORK_POLICY는 현재 SECURITYADMIN 역할을 가진 사용자가 설정할 수 있는 유일한 계정 매개변수라는 점에 주의해요.
네트워크 정책을 계정과 연결하기 전에 현재 IP 주소가 ALLOWED_IP_LIST에 포함되어 있어야 해요. 그렇지 않으면 ALTER ACCOUNT 명령이 오류를 반환해요. 또한 현재 IP 주소는 BLOCKED_IP_LIST에 포함될 수 없어요.
메타데이터에 관해서는 다음 사항에 주의해요.
⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.
OR REPLACE와 IF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.
CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.
CREATE OR ALTER NETWORK POLICY
ALTER NETWORK POLICY 명령의 모든 제약이 적용돼요.
네트워크 정책 이름 바꾸기(rename)는 지원되지 않아요.
태그 설정·해제는 지원되지 않아요.
현재 계정·보안 인티그레이션·사용자에 할당되어 있는 네트워크 정책은 CREATE OR ALTER NETWORK POLICY 문으로 교체할 수 없어요.
예시 (Example)
VPCE ID를 허용하는 네트워크 규칙 하나와 공용 네트워크 트래픽을 차단하는 규칙 하나, 두 네트워크 규칙에 기반한 allow_vpceid_block_public_policy라는 네트워크 정책을 만들어요. 허용 목록과 차단 목록의 상호작용은 허용 목록과 차단 목록 사이의 상호작용(Interaction between allowed lists and blocked lists)을 참고해요.
CREATE NETWORK POLICY allow_vpceid_block_public_policy
ALLOWED_NETWORK_RULE_LIST = ('allow_vpceid_access')
BLOCKED_NETWORK_RULE_LIST = ('block_public_access');
DESC NETWORK POLICY rule_based_policy;
+---------------------------+---------------------+
| name | value |
|---------------------------+---------------------|
| ALLOWED_NETWORK_RULE_LIST | ALLOW_VPCEID_ACCESS |
+---------------------------+---------------------+
| BLOCKED_NETWORK_RULE_LIST | BLOCK_PUBLIC_ACCESS |
+---------------------------+---------------------+
CREATE OR ALTER NETWORK POLICY
새 네트워크 정책을 만들거나 기존 정책의 허용·차단 네트워크 규칙 목록을 업데이트해요.
CREATE OR ALTER NETWORK POLICY allow_vpceid_block_public_policy
ALLOWED_NETWORK_RULE_LIST = ('allow_vpceid_access')
BLOCKED_NETWORK_RULE_LIST = ('block_public_access')
COMMENT = 'Allow VPCE ID, block all public access';
더 알아보기 (Learn more)
- ALTER NETWORK POLICY — 네트워크 정책 수정
- DROP NETWORK POLICY — 네트워크 정책 삭제
- SHOW NETWORK POLICIES — 네트워크 정책 조회
- CREATE NETWORK RULE — 네트워크 규칙 생성