Snowflake 上 dbt 项目的访问控制

以下命令演示了通常授予 dbt 项目对象的权限。

  • 授予创建 dbt 项目对象的权限,包括从工作区内部部署的权限:

    GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role
    
    Copy
  • 授予修改或删除 dbt 项目对象的权限,包括将工作区连接到 dbt 项目对象:

    GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role
    
    Copy
  • 授予执行 dbt 项目对象以及列出或获取文件的权限:

    GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role
    
    Copy

执行 dbt 项目的角色和权限

执行 dbt 项目时,执行的角色以及在指定 dbt runbuild 命令时实现输出的角色取决于执行方法。

使用 SQL 或 CLI 执行

在 EXECUTE DBT PROJECT 中指定的 dbt 命令使用项目 profiles.yml 文件 outputs 块中所指定 role 的权限运行。操作还会进一步受限,仅限于调用 EXECUTE DBT PROJECT 的 Snowflake 用户获授的那些权限。用户和指定的角色都必须具有所需的权限才能使用 warehouse、对项目 profiles.yml 文件中指定的 schemadatabase 执行操作,以及对 dbt 模型指定的任何其他 Snowflake 对象执行操作。

在工作区中执行

在工作区中为项目选择 dbt RunBuild 命令可使用项目 profiles.yml 文件中定义的 role 以及您 Snowflake 用户的所有辅助角色来实现目标输出。用户和指定的角色都必须具有所需的权限才能使用 warehouse、对项目 profiles.yml 文件中指定的 databaseschema 执行操作,以及对 dbt 模型指定的任何其他 Snowflake 对象执行操作。

在工作区中按计划执行

在工作区中计划 dbt 项目对象的执行会创建用户管理的任务。要在工作区中创建任务,用户必须具有 CREATE TASK 引用的 访问控制要求 中所述的权限的角色。虽然 Snowflake 可以任务所有者的权限运行任务,但任务运行与用户无关。有关更多信息,请参阅 由系统服务运行的任务

语言: 中文