CREATE FEATURE POLICY
CREATE FEATURE POLICY
새 기능 정책(feature policy)을 만드는 명령이에요. 기능 정책은 모든 데이터베이스·특정 데이터베이스·모든 개인 데이터베이스(personal database)·모든 네이티브 앱·특정 앱에 적용할 수 있어요.
출처: 문서
본문
새 기능 정책을 만들어요. 기능 정책은 모든 데이터베이스 또는 특정 데이터베이스, 모든 개인 데이터베이스, 모든 네이티브 앱 또는 특정 앱에 적용할 수 있어요. 개요는 기능 정책(Feature policies)을 참고해요.
함께 보기: ALTER FEATURE POLICY, DESCRIBE FEATURE POLICY, DROP FEATURE POLICY, SHOW FEATURE POLICIES
구문 (Syntax)
CREATE [ OR REPLACE ] FEATURE POLICY [ IF NOT EXISTS ] <name>
[ BLOCKED_OBJECT_TYPES_FOR_CREATION = ( <type> [ , ... ] ) ]
[ COMMENT = '<string-literal>' ]
[ AS $$
<yaml-body>
$$ ]
매개변수 (Parameters)
name
기능 정책의 식별자를 지정해요.
또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
BLOCKED_OBJECT_TYPES_FOR_CREATION = ( type [ , ... ] )
만들 수 없는 객체의 목록을 지정해요. 다음 객체를 차단할 수 있어요.
- AGENTS
- APPLICATION_SERVICE
- ARTIFACT_REPOSITORY
- COMPUTE_POOLS
- DATABASES
- GIT_REPOSITORY
- MCP_SERVERS
- SCHEMA
- SECRET
- TASKS
- WAREHOUSES
- WORKSPACE
참고: 계정 수준(account-level) 객체 유형은 기능 정책이 개인 데이터베이스에 바인딩될 때는 효과가 없어요. 계정 수준 유형은 네이티브 앱 컨텍스트에서만 적용돼요.
APPLICATION_SERVICE와 ARTIFACT_REPOSITORY는 Snowflake App Runtime과 함께 사용돼요. 이 유형을 차단하는 정책을 모든 개인 데이터베이스에 연결하면 사용자가 개인 데이터베이스에 App Runtime 앱을 만드는 것을 막을 수 있어요. 자세한 내용은 개인 데이터베이스에서 앱 생성 제한(Restrict app creation in personal databases)을 참고해요.
COMMENT = 'string_literal'
기능 정책에 대한 설명(comment)을 지정하는 문자열(리터럴)이에요.
- 기본값: 값 없음
AS $$ ... $$
조건부 생성 규칙을 정의하는 선택적인 YAML 본문이에요. 본문에는 blocked_creation_rules와 선택적인 conditions 목록을 포함할 수 있어요. 구문·지원 객체 유형·예시는 기능 정책 규칙(Feature policy rules)을 참고해요.
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE FEATURE POLICY | SCHEMA | 기능 정책을 만들 수 있는 권한을 부여해요. 만들 정책이 들어 있는 스키마에 이 권한이 설정되어 있어야 해요. |
스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
정책이 객체(예: 계정이나 앱)에 바인딩되어 있다면 그 정책은 교체할 수 없어요. 기능 정책을 수정하거나 이름을 바꾸려면 ALTER FEATURE POLICY를 사용해요.
이 명령은 기능 정책의 복사본을 만드는 CLONE 절 사용을 지원하지 않아요.
BLOCKED_OBJECT_TYPES_FOR_CREATION, AS 본문, 또는 둘 다 지정할 수 있어요. 하나의 정책에서 함께 사용할 수 있어요.
예시 (Examples)
다음 예시는 앱이 데이터베이스를 만들지 못하도록 금지하는 새 기능 정책을 만들어요.
CREATE FEATURE POLICY block_create_db_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASES);
다음 예시는 금지할 객체를 지정하지 않는 새 기능 정책을 만들어요.
CREATE FEATURE POLICY block_nothing_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
참고: 이 구문은 일반적으로 계정 수준에서 적용된 제한을 해제하기 위해 앱에 적용돼요.
다음 예시는 임시 테이블 생성을 차단하는 기능 정책을 만들어요.
CREATE FEATURE POLICY block_temp_tables
AS $$
blocked_creation_rules:
- object_type: TABLE
block_when: "$IS_TEMPORARY"
$$;
block_when 표현식은 보이는 것처럼 $ 변수 약식으로 요청 속성을 읽을 수 있고, 동등한 SYS_CONTEXT('SNOWFLAKE$REQUEST', 'GET_OBJECT_PROPERTY', 'IS_TEMPORARY') = 'TRUE' 형태로도 읽을 수 있어요. 사용 가능한 속성과 두 형태의 차이는 사용 가능한 컨텍스트(Available context)를 참고해요.
더 알아보기 (Learn more)
- ALTER FEATURE POLICY — 기능 정책 수정
- DROP FEATURE POLICY — 기능 정책 삭제
- SHOW FEATURE POLICIES — 기능 정책 조회