Ограничение видимости DAG воздушного потока по группам AD / LDAP - PullRequest
0 голосов
/ 27 июня 2018

Можно ли ограничить видимость и доступность групп доступности баз данных группами пользователей в Airflow?

Например, я хочу иметь одну большую среду Airflow для всей моей компании, разные команды будут использовать эту среду Airflow для рабочих процессов своей команды. Скажем, у нас есть команда A и команда B, которые принадлежат к их соответствующим группам AD / LDAP, группе A и группе B. Возможно ли, чтобы группа A видела только группы DAG, принадлежащие их команде, и наоборот, с группой B?

Исходя из моих исследований и понимания, я не думаю, что это будет возможно в одной среде Airflow. Я думаю, что для этого мне нужно создать отдельную среду Airflow для каждой команды, чтобы у каждой команды была своя папка Airflow Dags, содержащая соответствующие группы DAG.

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, что здесь есть две разные проблемы:

Во-первых, аутентификация LDAP. Airflow обеспечивает поддержку аутентификации LDAP на базе ldap3 . Пример в связанном документе показывает, как связать роли Airflow с группами LDAP (например, часть data_profiler_filter).

Во-вторых, ограничение доступа DAG по группе. На момент написания этой статьи текущая версия Airflow (1.9) не поддерживает ограничение видимости групп доступности баз данных по группам. Недавняя работа над управлением доступом на основе ролей (RBAC) меняет это. Я перечислил 3 различных варианта решения этой проблемы ниже.


Вариант 1 - RBAC (большая часть управления доступна в Airflow ≥ 1.10)

Новые функции RBAC добавляют поддержку для таких разрешений и являются лучшими для детального контроля. Он использует систему разрешений, построенную на Flask App Builder. Он был создан компанией с очень похожим сценарием использования, о котором вы упомянули, что более подробно обсуждается в проблеме Jira.

Более подробную информацию можно найти в:

Пользовательский интерфейс веб-сервера RBAC теперь доступен на главном сервере в airflow / www_rbac . Другие функции, относящиеся к RBAC, также активно разрабатываются для дальнейшего повышения безопасности в многопользовательской среде.

Примечание. Также ведется работа над новой функцией контроля доступа на уровне DAG (DLAC) в AIRFLOW-2267 , которая основана на работе RBAC для введения еще более детального управления. Более подробную информацию можно найти в дизайн документа и PR # 3197 .


Вариант 2 - Многопользовательский режим с владельцами (самый простой, доступен в Airflow <1.10) </h2> Второй вариант, который можно рассмотреть для среднезернистого управления, - это многопользовательская настройка с использованием webserver.filter_by_owner и установка одного явного owner (пользователь, а не группа) для каждой группы доступности базы данных. «При этом пользователь будет видеть только те ярлыки, владельцем которых он является, если только он не является суперпользователем». В сторону: Связанная функция, которая может вас заинтересовать в запуске задач от имени пользователя с олицетворением с использованием run_as_user или core.default_impersonation. Вариант 3 - Запуск нескольких отдельных экземпляров воздушного потока (максимальная изоляция)

Третий вариант грубого контроля, который выбирают некоторые компании, - запуск нескольких отдельных экземпляров Airflow, по одному на команду. Это, пожалуй, наиболее практичный вариант для тех, кто сегодня хочет использовать группы DAG для нескольких команд в изоляции. Если вы используете Astronomer Enterprise , мы поддерживаем раскручивание нескольких экземпляров Airflow.

...