CREATE PACKAGES POLICY¶
创建新的 包策略 或替换现有的包策略。
创建包策略后,使用 ALTER ACCOUNT 语句,将包策略应用于您的 Snowflake 账户。
语法¶
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>' ]
必填参数¶
name指定包策略的标识符(即名称);对于在其中创建包策略的架构而言,此标识符必须是唯一的。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object")。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。
LANGUAGE PYTHON指定此包策略将应用于哪种语言。
可选参数¶
ALLOWLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] )指定允许的包规范列表。
默认值:
('*')(即允许所有包)。BLOCKLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] )指定被阻止的包规范列表。若要取消设置此参数,请指定一个空列表。
默认值:
()(即不阻止任何包)。ADDITIONAL_CREATION_BLOCKLIST = ( [ 'packageSpec' ] [ , 'packageSpec' ... ] )指定在创建时被阻止的包规范列表。若要取消设置此参数,请指定一个空列表。如果设置了
ADDITIONAL_CREATION_BLOCKLIST,则它会在创建时追加到基本 BLOCKLIST。对于临时 UDFs 和匿名存储过程,ADDITIONAL_CREATION_BLOCKLIST在创建和执行时都会追加到基本 BLOCKLIST。默认值:
()(即不阻止任何包)。COMMENT = 'string_literal'为包策略添加注释或覆盖现有注释。
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
CREATE PACKAGES POLICY |
架构 |
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
为当前账户创建包策略:
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';