Snowflake 上 dbt 项目的访问控制¶
以下命令演示了通常授予 dbt 项目对象的权限。
授予创建 dbt 项目对象的权限,包括从工作区内部部署的权限:
GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role
授予修改或删除 dbt 项目对象的权限,包括将工作区连接到 dbt 项目对象:
GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role
授予执行 dbt 项目对象以及列出或获取文件的权限:
GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role
执行 dbt 项目的角色和权限¶
执行 dbt 项目时,执行的角色以及在指定 dbt run
或 build
命令时实现输出的角色取决于执行方法。
使用 SQL 或 CLI 执行¶
在 EXECUTE DBT PROJECT 中指定的 dbt 命令使用项目 profiles.yml
文件 outputs
块中所指定 role
的权限运行。操作还会进一步受限,仅限于调用 EXECUTE DBT PROJECT 的 Snowflake 用户获授的那些权限。用户和指定的角色都必须具有所需的权限才能使用 warehouse
、对项目 profiles.yml
文件中指定的 schema
和 database
执行操作,以及对 dbt 模型指定的任何其他 Snowflake 对象执行操作。
在工作区中执行¶
在工作区中为项目选择 dbt Run 或 Build 命令可使用项目 profiles.yml
文件中定义的 role
以及您 Snowflake 用户的所有辅助角色来实现目标输出。用户和指定的角色都必须具有所需的权限才能使用 warehouse
、对项目 profiles.yml
文件中指定的 database
和 schema
执行操作,以及对 dbt 模型指定的任何其他 Snowflake 对象执行操作。
在工作区中按计划执行¶
在工作区中计划 dbt 项目对象的执行会创建用户管理的任务。要在工作区中创建任务,用户必须具有 CREATE TASK 引用的 访问控制要求 中所述的权限的角色。虽然 Snowflake 可以任务所有者的权限运行任务,但任务运行与用户无关。有关更多信息,请参阅 由系统服务运行的任务。