CREATE PACKAGES POLICY

CREATE PACKAGES POLICY

새 패키지 정책(packages policy)을 만들거나 기존 패키지 정책을 교체하는 명령이에요. 패키지 정책은 계정에서 특정 프로그래밍 언어 패키지(예: Python)의 사용 가능 여부를 제어해요.

출처: 문서

본문

새 패키지 정책을 만들거나 기존 패키지 정책을 교체해요.

패키지 정책을 만든 뒤에는 ALTER ACCOUNT 문으로 패키지 정책을 Snowflake 계정에 적용해요.

구문 (Syntax)

CREATE [ OR REPLACE ] PACKAGES POLICY [ IF NOT EXISTS ] <name>
  LANGUAGE PYTHON
  [ ALLOWLIST = ( [ '<packageSpec>' ] [ , '<packageSpec>' ... ] ) ]
  [ BLOCKLIST = ( [ '<packageSpec>' ] [ , '<packageSpec>' ... ] ) ]
  [ ADDITIONAL_CREATION_BLOCKLIST = ( [ '<packageSpec>' ] [ , '<packageSpec>' ... ] ) ]
  [ COMMENT = '<string_literal>' ]

필수 매개변수 (Required parameters)

name 패키지 정책의 식별자(즉 이름)를 지정하며, 패키지 정책이 만들어지는 스키마 안에서 고유해야 해요.

또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.

LANGUAGE PYTHON 이 패키지 정책이 적용될 언어를 지정해요.

선택 매개변수 (Optional parameters)

ALLOWLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] ) 허용되는 패키지 사양의 목록을 지정해요.

  • 기본값: ('*') (즉, 모든 패키지 허용)

BLOCKLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] ) 차단되는 패키지 사양의 목록을 지정해요. 이 매개변수를 해제하려면 빈 목록을 지정해요.

  • 기본값: () (즉, 패키지 차단 안 함)

ADDITIONAL_CREATION_BLOCKLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] ) 생성 시점에 차단되는 패키지 사양의 목록을 지정해요. 이 매개변수를 해제하려면 빈 목록을 지정해요. ADDITIONAL_CREATION_BLOCKLIST가 설정되면 생성 시점에 기본 BLOCKLIST에 추가돼요. 임시 UDF와 익명 저장 프로시저의 경우 ADDITIONAL_CREATION_BLOCKLIST는 생성과 실행 시점 모두에서 기본 BLOCKLIST에 추가돼요.

  • 기본값: () (즉, 패키지 차단 안 함)

COMMENT = 'string_literal' 패키지 정책에 대한 설명(comment)을 추가하거나 기존 설명을 덮어써요.

접근 제어 요구 사항 (Access control requirements)

이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.

권한 (Privilege) 객체 (Object) 비고
CREATE PACKAGES POLICY Schema

스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.

지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.

사용 메모 (Usage notes)

OR REPLACEIF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.

메타데이터에 관해서는 다음 사항에 주의해요.

⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.

예시 (Examples)

현재 계정용 패키지 정책을 만들어요.

CREATE PACKAGES POLICY yourdb.yourschema.packages_policy_prod_1
  LANGUAGE PYTHON
  ALLOWLIST = ('numpy', 'pandas==1.2.3', ...)
  BLOCKLIST = ('numpy==1.2.3', 'bad_package', ...)
  COMMENT = 'Packages policy for the prod_1 environment';

더 알아보기 (Learn more)