Я думаю, здесь ставятся две разные проблемы:
Во-первых, аутентификация LDAP. Airflow обеспечивает поддержку аутентификации LDAP на основе ldap3. Пример в связанном документе показывает, как связать роли Airflow с группами LDAP (например, с частью data_profiler_filter
).
Во-вторых, ограничение доступа к DAG по группе. На момент написания этой статьи текущая версия Airflow (1.9) не поддерживает ограничение видимости DAG по группе. Недавняя работа над управлением доступом на основе ролей (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)
Второй вариант, который вы можете рассмотреть для среднеуровневого управления, - это настройка нескольких арендаторов. с помощью webserver.filter_by_owner
и настройки одного явного owner
(пользователя, а не группы) для каждой группы DAG. «При этом пользователь будет видеть только те даги, владельцем которых он является, если только он не является суперпользователем».
В сторону: связанная функция, которую вы можете заинтересовать в выполнении задач от имени конкретного пользователя с выдача себя за другое лицо с использованием run_as_user
или core.default_impersonation
.
Вариант 3. Запуск нескольких отдельных экземпляров Airflow (максимальная изоляция)
Третий вариант крупномасштабного управления, который выбирают некоторые компании, - это запуск нескольких отдельных экземпляров Airflow, по одному на команду. Это, вероятно, наиболее практично для тех, кто сегодня хочет изолированно запускать группы DAG для нескольких команд. Если вы используете Astronomer Enterprise, мы поддерживаем запуск нескольких экземпляров Airflow.
person
Taylor Edmiston
schedule
27.06.2018