使用功能策略限制应用程序可以创建的对象

本主题介绍如何使用功能策略来限制 Snowflake Native App 可以创建的对象。

关于功能策略

如果将应用程序配置为使用自动授予权限,则该应用程序可以请求使用以下权限:

  • EXECUTE TASK

  • EXECUTE MANAGED TASK

  • CREATE WAREHOUSE

  • CREATE COMPUTE POOL

  • BIND SERVICE ENDPOINT

  • CREATE DATABASE

  • CREATE EXTERNAL ACCESS INTEGRATION

安装应用程序后,使用者无法撤消这些权限。但是,功能策略允许使用者限制应用程序可以创建的对象。

例如,如果使用者不希望应用程序创建仓库或计算池,则使用者账户管理员可以创建一个功能策略,以禁止特定应用程序或所有应用程序创建仓库或计算池。

功能策略允许使用者限制应用程序创建或使用以下对象:

  • COMPUTE POOLS

  • DATABASES

  • TASKS

  • WAREHOUSES

备注

无法通过功能策略阻止外部访问集成。使用者可以改为使用应用程序规范来选择批准应用程序的端点。

限制

  • 数据库、架构或其中任何使用复制的对象均不支持功能策略。对于属于复制组的任何对象,都将跳过功能策略。

工作流程

使用功能策略限制应用程序可创建对象的一般工作流程是:

  1. 查看应用程序的列表,以确定应用程序请求的权限。

  2. 如果您想限制任何对象,请创建功能策略来阻止这些对象。

    有关更多信息,请参阅 创建新功能策略

  3. 将功能策略应用于账户或特定对象。

    有关更多信息,请参阅 分配账户级别的功能策略将功能策略应用到应用程序

功能策略优先顺序

使用者可以将功能策略应用于账户中的所有应用程序或指定的某个应用程序。当多个层级都应用了功能策略时,则越具体的功能策略会替换越通用的策略。以下内容概述了优先顺序:

账户:

应用于账户的功能策略是最通用的功能策略。它们会被应用于特定对象(例如某个应用程序)的功能策略所替换

对象:

应用于特定对象的功能策略会替换应用于该账户的功能策略。

使用者可以利用这种优先顺序来精细控制某个应用程序可在其账户中创建的对象。例如,使用者可以应用一个账户级的功能策略,禁止账户中的所有应用程序创建数据库。如果应用程序在安装期间尝试创建数据库,则安装将失败。

但是,使用者也可以创建不受限制的功能策略,并将该功能策略应用于特定的应用程序。这样该应用程序就可以创建数据库。

有关更多信息,请参阅 创建新功能策略

使用功能策略所需的权限

下表介绍了了创建和使用功能策略所需的权限:

权限

对象

备注

CREATE FEATURE POLICY

SCHEMA

创建功能策略所需的权限。必须在包含功能策略的架构上授予此权限。

APPLY FEATURE POLICY

ACCOUNT

APPLY 或 OWNERSHIP

FEATURE POLICY

使用功能策略

使用者可以使用 Snowsight 或 SQL 管理功能策略的生命周期。

创建新功能策略

使用者可以创建功能策略来禁止应用程序创建某些类型的对象。以下示例显示如何创建功能策略以禁止应用程序创建数据库:

CREATE DATABASE feature_policy_db;
CREATE SCHEMA sch;
CREATE FEATURE POLICY block_create_db_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASE);
Copy

备注

必须在架构中创建功能策略。

使用者还可以创建不限制创建对象的功能策略,如以下示例所示:

CREATE FEATURE POLICY block_nothing_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
Copy

分配账户级别的功能策略

使用者可以使用 ALTER ACCOUNT 命令应用账户级别的功能策略,如以下示例所示:

ALTER ACCOUNT
  SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
  FOR ALL APPLICATIONS;
Copy

此命令将 block_create_db_policy 策略应用于账户中安装的任何应用程序。应用此策略后,应用程序将无法再创建数据库。

将功能策略应用到应用程序

要在手动创建应用程序时应用功能策略,请使用 CREATE APPLICATION 命令的 WITH FEATURE POLICY 子句,如以下示例所示:

CREATE APPLICATION hello_snowflake_app
  WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
Copy

要将功能策略应用到应用程序,请使用 ALTER APPLICATION 命令,如以下示例所示:

ALTER APPLICATION hello_snowflake_app
  SET FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy

取消应用功能策略

要取消应用账户级别的功能策略,请使用 ALTER ACCOUNT 命令,如以下示例所示:

ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
Copy

要取消特定应用程序的功能策略,请使用 ALTER APPLICATION 命令,如以下示例所示:

ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
Copy

删除功能策略

要删除功能策略,请使用 DROP FEATURE POLICY 命令,如以下示例所示:

DROP FEATURE POLICY block_create_db_policy;
Copy

查看有关功能策略的信息

要查看您拥有访问权限的账户中的功能策略,请使用 SHOW FEATURE POLICIES 命令:

SHOW FEATURE POLICIES ON ACCOUNT;
Copy

要查看应用于应用程序的功能策略,请使用以下命令:

SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Copy

要查看有关特定功能策略的信息,请使用 DESCRIBE FEATURE POLICY,如以下示例所示:

DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy
语言: 中文