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
Roles and privileges for dbt project deployment¶
Deploying a dbt project from Snowsight initially uses the role selected in the deploy dialog (that is, the role you select from Connect » Deploy dbt project). During compilation, the dbt Project uses the role specified in the target profile in profiles.yml file, unless the object has the DEFAULT_TARGET attribute, which takes precedence.
Similarly, deploying a dbt project from SQL or CLI initially uses the role in the worksheet or connection.toml, respectively, then uses the role specified in the command. The actual compilation during deployment uses the role within the target profile in profiles.yml, unless the object has the DEFAULT_TARGET attribute, which takes precedence.
dbt 프로젝트 실행을 위한 역할 및 권한¶
dbt 프로젝트를 실행할 때, 실행을 수행하는 역할과 dbt run 또는 build 명령을 지정할 때 출력을 구체화하는 역할은 실행 방법에 따라 다릅니다.
SQL 또는 CLI에서 실행¶
EXECUTE DBT PROJECT에 지정된 dbt 명령은 프로젝트 profiles.yml 파일의 outputs 블록에 지정된 role``의 권한으로 실행됩니다. 작업은 EXECUTE DBT PROJECT를 호출하는 Snowflake 사용자에게 부여된 권한으로만 추가로 제한됩니다. 지정된 사용자와 역할 모두 ``warehouse``를 사용하고, 프로젝트의 :file:`profiles.yml` 파일에 지정된 ``database 및 ``schema``에 대한 작업을 수행하고, dbt 모델이 지정하는 다른 Snowflake 오브젝트에 대한 작업을 수행하는 데 필요한 권한이 있어야 합니다.
작업 공간 내에서 실행¶
작업 공간 내에서 프로젝트에 대한 dbt Run 또는 Build 명령을 선택하면 프로젝트의 profiles.yml 파일에 정의된 role``과 Snowflake 사용자의 모든 보조 역할을 모두 사용하여 대상 출력을 구체화합니다. 지정된 사용자와 역할 모두 ``warehouse``를 사용하고, 프로젝트의 :file:`profiles.yml` 파일에 지정된 ``database 및 ``schema``에 대한 작업을 수행하고, dbt 모델이 지정하는 다른 Snowflake 오브젝트에 대한 작업을 수행하는 데 필요한 권한이 있어야 합니다.
작업 공간 내에서 예약된 실행¶
작업 공간 내에서 dbt 프로젝트 오브젝트 실행을 예약하면 사용자 관리 작업이 생성됩니다. 작업 공간 내에서 작업을 생성하려면 CREATE TASK 참조의 label-create_task_sql_access_control`에 설명된 권한을 가진 역할이 사용자에게 있어야 합니다. Snowflake는 작업 소유자의 권한으로 작업을 실행하지만 작업 실행은 사용자와 연결되지 않습니다. 자세한 내용은 :ref:`label-system_service 섹션을 참조하십시오.