Как настроить Airflow для ручного запуска DAG: Пошаговая инструкция для управления доступом?

Apache Airflow – мощная платформа для оркестрации рабочих процессов, широко используемая в data engineering. Одной из ключевых задач при работе с Airflow является управление доступом к DAG (Directed Acyclic Graph), особенно когда речь идет о ручном запуске. Эта статья предоставит пошаговую инструкцию по настройке прав доступа в Airflow, чтобы конкретные пользователи или группы пользователей могли запускать определенные DAG вручную. Мы рассмотрим встроенные роли, настройку пользователей, DAG-based access control и интеграцию с внешними системами аутентификации.

Основы управления доступом в Airflow

Обзор системы ролей и разрешений Airflow

Airflow использует ролевую модель управления доступом (RBAC). Разрешения назначаются ролям, а пользователи назначаются ролям. Это позволяет централизованно управлять доступом к ресурсам Airflow, включая DAG, переменные, подключения и т.д. Правильная настройка прав доступа – критически важна для безопасности и предотвращения несанкционированного доступа к данным и процессам.

Встроенные роли и их назначение: Admin, User, Op

Airflow предоставляет несколько встроенных ролей:

  • Admin: Имеет полный доступ ко всем функциям Airflow. Администратор может создавать, редактировать и удалять пользователей, роли, DAG и другие ресурсы.

  • User: Имеет доступ к UI Airflow и может выполнять определенные операции, в зависимости от назначенных разрешений.

  • Op: Предназначена для выполнения оперативных задач, таких как запуск и остановка DAG, просмотр логов.

Кроме этих ролей можно создавать пользовательские роли с необходимым набором разрешений.

Создание и настройка пользователей в Airflow

Создание нового пользователя через UI и CLI

Нового пользователя можно создать через веб-интерфейс Airflow (UI) или с помощью командной строки (CLI).

Через UI:

  1. Перейдите в раздел Security -> List Users.

  2. Нажмите кнопку Create.

  3. Заполните необходимые поля (имя пользователя, пароль, email).

  4. Сохраните пользователя.

Через CLI (используя airflow users create):

airflow users create --username <username> --firstname <firstname> --lastname <lastname> --email <email> --role <role>

Например:

airflow users create --username data_engineer --firstname John --lastname Doe --email john.doe@example.com --role Op

Назначение ролей пользователям: примеры и рекомендации

После создания пользователя необходимо назначить ему роль. Роль определяет, какие действия пользователь может выполнять в Airflow.

Через UI:

  1. Перейдите в раздел Security -> List Users.

  2. Выберите пользователя, которому нужно назначить роль.

  3. В разделе Roles добавьте нужные роли.

  4. Сохраните изменения.

Рекомендуется создавать пользовательские роли с минимально необходимыми разрешениями для конкретных задач. Например, роль для запуска DAG вручную должна включать только разрешение на запуск и просмотр логов для определенных DAG.

Предоставление прав на ручной запуск DAG

Настройка разрешений на уровне DAG: DAG-based access control

Airflow позволяет настроить права доступа на уровне DAG. Это означает, что можно указать, какие пользователи или группы пользователей могут запускать, просматривать или редактировать определенный DAG. DAG-based access control обеспечивает более гранулярный контроль доступа и повышает безопасность.

Реклама

Практические примеры назначения прав для конкретных пользователей/групп

Чтобы предоставить пользователю data_engineer права на ручной запуск DAG my_dag, необходимо выполнить следующие шаги:

  1. Создайте пользовательскую роль, например DagRunner.

  2. Назначьте роли DagRunner разрешение can_trigger для DAG my_dag.

  3. Назначьте пользователя data_engineer роли DagRunner.

Это можно сделать программно, используя API Airflow или напрямую редактируя базу данных (не рекомендуется).

Пример (упрощенный, требует адаптации под конкретную среду Airflow, включая настройку RBAC):

from airflow.models import DAG
from airflow.operators.bash import BashOperator
from airflow.utils.dates import days_ago

with DAG(
    dag_id='my_dag',
    schedule=None,
    start_date=days_ago(2),
    tags=['example'],
) as dag:
    
task1 = BashOperator(
        task_id='print_date',
        bash_command='date',
    )

В данном примере, после настройки RBAC и создания роли DagRunner, пользователь data_engineer, которому назначена эта роль, сможет вручную запустить my_dag через UI Airflow.

Продвинутые методы управления доступом и устранение неполадок

Интеграция с внешними системами аутентификации (LDAP, OAuth)

Для централизованного управления пользователями и упрощения аутентификации, Airflow можно интегрировать с внешними системами аутентификации, такими как LDAP и OAuth. Это позволяет использовать существующие учетные записи пользователей и политики безопасности.

Настройка интеграции с LDAP обычно включает указание параметров подключения к LDAP-серверу, таких как URL, DN, и параметры поиска пользователей и групп. Конфигурация OAuth требует регистрации приложения Airflow в OAuth-провайдере и настройки callback URL.

Решение распространенных проблем с правами доступа и логированием

Распространенные проблемы с правами доступа включают:

  • Пользователь не может запустить DAG: проверьте, назначена ли пользователю роль с разрешением can_trigger для данного DAG.

  • Пользователь не видит DAG в UI: убедитесь, что у пользователя есть разрешение на просмотр DAG (can_read).

  • Некорректная работа интеграции с LDAP/OAuth: проверьте правильность конфигурации подключения и сопоставление ролей.

Логи Airflow содержат подробную информацию о событиях, связанных с аутентификацией и авторизацией. Используйте логи для диагностики проблем с правами доступа и определения причин ошибок.

Заключение

Правильная настройка управления доступом в Airflow – важная задача для обеспечения безопасности и контроля над рабочими процессами. Используйте встроенные роли, создавайте пользовательские роли с гранулярными разрешениями, и интегрируйте Airflow с внешними системами аутентификации для упрощения управления пользователями. Регулярно проверяйте и обновляйте политики доступа, чтобы соответствовать требованиям безопасности и потребностям бизнеса. При возникновении проблем, используйте логи Airflow для диагностики и устранения неполадок.


Добавить комментарий