Snowflake 上 dbt 项目的访问控制¶
以下命令演示了通常授予 dbt 项目对象的权限。
授予创建 dbt 项目对象的权限,包括从工作区内部部署的权限:
授予修改或删除 dbt 项目对象的权限,包括将工作区连接到 dbt 项目对象:
授予执行 dbt 项目对象以及列出或获取文件的权限:
要在 Snowsight 中查看 dbt 项目对象,您必须使用对该 dbt 项目具有 MONITOR 权限的角色。如果没有此权限,您将无法访问项目详细信息、运行历史记录和监控信息:
有关更多信息,请参阅 dbt 项目对象权限。
dbt 项目部署的角色和权限¶
从 Snowsight 部署 dbt 项目时,最初使用部署对话框中选择的角色(即,您从 Connect » Deploy dbt project 中选择的角色)。在编译期间,dbt 项目使用 profiles.yml 文件内目标配置文件中指定的角色,除非对象具有 DEFAULT_TARGET 属性,该属性优先。
同样,从 SQL 或 CLI 部署 dbt 项目时,最初使用工作表或 connection.toml 中的角色,然后分别使用命令中指定的角色。部署期间的实际编译使用 profiles.yml 中的目标配置文件中的角色,除非对象具有 DEFAULT_TARGET 属性,该属性优先。
执行 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 对象执行操作。
在工作区中执行¶
Choosing the dbt Run or Build command for a project from within a workspace materializes target output using the role defined in the project's profiles.yml file. Both the user and the role specified must have the required privileges to use the warehouse, perform operations on the database and schema that are specified in the project's profiles.yml file, and perform operations on any other Snowflake objects that the dbt model specifies.
在工作区中按计划执行¶
在工作区中计划 dbt 项目对象的执行会创建用户管理的任务。要在工作区中创建任务,用户必须具有 CREATE TASK 引用的 访问控制要求 中所述的权限的角色。虽然 Snowflake 可以任务所有者的权限运行任务,但任务运行与用户无关。有关更多信息,请参阅 Tasks run by a system service。