Controle de acesso para projetos de dbt no Snowflake

Os comandos a seguir demonstram os privilégios comumente concedidos para objetos de projeto dbt.

  • Para conceder privilégios para criar um objeto de projeto dbt, incluindo a implantação de dentro de um espaço de trabalho:

    GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role;
    
  • Para conceder privilégios para alterar ou descartar (excluir) um objeto de projeto dbt, incluindo a conexão de um espaço de trabalho com um objeto de projeto dbt:

    GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    
  • Para conceder privilégios para executar um objeto de projeto dbt e para listar ou obter arquivos:

    GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    
  • To view a dbt project object in Snowsight, you must use a role that has the MONITOR privilege on that dbt project object. Without this privilege, you can’t access the project details, run history, or monitoring information:

    GRANT MONITOR ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    

Para obter mais informações, consulte Privilégios do objeto de projeto dbt.

Funções e privilégios para implantação de projeto dbt

Deploying a dbt project from Snowsight initially uses the role you select from Connect » Deploy dbt project. During compilation, the dbt project object uses the role specified in the target profile in the profiles.yml file, unless the object has the DEFAULT_TARGET attribute, which takes precedence.

De forma similar, a implantação de um projeto dbt do SQL ou da CLI primeiro usa a função na planilha ou em connection.toml, respectivamente, e depois usa a função especificada no comando. A compilação real durante a implantação usa a função no perfil de destino em profiles.yml, a menos que o objeto tenha o atributo DEFAULT_TARGET, que tem precedência.

Funções e privilégios para execução de projetos dbt

When you execute a dbt project object, the roles that perform execution and that materialize output when you specify the dbt run or build commands depend on the method of execution.

Execução por SQL ou CLI

O comando do dbt especificado em EXECUTE DBT PROJECT é executado com os privilégios da role especificada no bloco outputs do arquivo profiles.yml dos projetos. As operações são mais restritas apenas aos privilégios concedidos ao usuário Snowflake que chama EXECUTE DBT PROJECT. Tanto o usuário quanto a função especificados devem ter os privilégios necessários para usar o warehouse, realizar operações no database e no schema especificados no arquivo :file:`profiles.yml`do projeto e executar operações em qualquer outro objeto Snowflake especificado pelo modelo dbt.

Execução de dentro do Workspaces

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.

Execução agendada de dentro do Workspaces

Agendar a execução do objeto de projeto dbt de dentro do Workspaces cria tarefas gerenciadas pelo usuário. Para criar uma tarefa de dentro do Workspaces, um usuário deve ter uma função com os privilégios descritos em Requisitos de controle de acesso na referência CREATE TASK. O Snowflake executa tarefas com os privilégios do proprietário da tarefa, mas as execuções não estão associadas a um usuário. Para obter mais informações, consulte Tarefas executadas por um serviço do sistema.