Журналы аудита воздушного потока - PullRequest
0 голосов
/ 17 сентября 2018

Мне интересно, что предлагает Airflow в смысле журналов аудита.Моя среда Airflow работает под управлением Airflow версии 1.10 и использует раздел [ldap] файла airflow.cfg, чтобы использовать Active Dicrectory (AD) моей компании для аутентификации.Я вижу, что когда кто-то входит в Airflow через веб-интерфейс, он записывает имя пользователя в журнал веб-сервера (показано ниже).Мне интересно, хотя, можно ли изменить Airflow, чтобы также регистрировать, когда пользователь включает / выключает группу обеспечения доступности баз данных, создает новую переменную или пул Airflow, очищает задачу, помечает задачу как успешную и любую другую операцию, которую может выполнить пользователь.

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

Эта способность предлагается Airflow из коробки?Я вижу, что если бы я использовал службу воздушного потока Google Cloud под названием Cloud Composer , я бы получил журналов аудита через их службу, но, к сожалению, я привязан к веб-службам Amazon (AWS).) и я поддерживаю Airflow самостоятельно (не предоставляется через службу).

В журналах airflow webserver я вижу, что когда я пересекаю веб-интерфейс Airflow, он отправляет остальные вызовы

161.179.215.170 - - [17/Sep/2018:16:39:26 -0400] "GET /admin/ HTTP/1.1" 200 71942 "http://1.2.3.4:8080/admin/airflow/graph?dag_id=ARL_OnDemand" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

и когда я вхожу в систему, я вижу имя пользователя (которое регистрируется в функции login здесь https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/auth/backends/ldap_auth.py)

[2018-09-17 16:27:15,493] {ldap_auth.py:287} INFO - User foobaruser successfully authenticated
161.179.215.170 - - [17/Sep/2018:16:27:16 -0400] "POST /admin/airflow/login HTTP/1.1" 302 221 "http://1.2.3.4:8080/admin/airflow/login?next=%2Fadmin%2F" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Так что мне интересно, есть ли способ обновитьВеб-сервер регистрирует так, что каждый раз, когда он регистрирует запрос GET или POST, он также регистрирует клиента, который отправил запрос.Это удовлетворило бы мои потребности журнала аудита, потому что я всегда знал бы, что пользователь сделал в Airflow на пользовательском интерфейсе.

Обновление:

В этой статье

https://wecode.wepay.com/posts/improving-airflow-ui-security

Очевидно, Airflow 1.10 представил совершенно новую архитектуру безопасности веб-сайтов, и они будутосуждающий оригинальный интерфейс Flask в будущем.

Эта часть, которая показалась мне интересной, относится к этому сообщению, хотя та часть, в которой она говорит о том, что регистрация действий является пассивной, а не упреждающей, интересно, относится ли она к ведению журнала аудита?

За это время было сделано несколько улучшений в области безопасности, включая добавление функции регистрации действий и создание жестко заданной простой реализации RBAC.Однако ведение журнала действий было пассивным, а не вытесняющим, а собственная реализация RBAC по-прежнему позволяла читать и записывать доступ к группам DAG для всех ролей, поэтому они не учитывали наши проблемы безопасности.

РАБОЧЕЕ РЕШЕНИЕ:

Несмотря на то, что я говорил, что был на версии 1.10 Airflow, я на самом деле был на версии 1.9 Airflow :) На версии 1.9 Airflow колонка Owner в Журналах всегда была пустой для меня, если не было сказано Расход воздуха .Но после обновления до версии 1.10 Airflow и подключения к моему LDAP теперь я вижу свое имя пользователя LDAP (kbridenstine), записываемое в систему под Owner каждый раз, когда я делаю команду изменения!

enter image description here

Кроме того, Airflow также регистрируется, когда кто-либо на сервере запускает команду Airflow (потому что вы также можете изменять Airflow с помощью команд CLI).Вы можете увидеть это с root и ec2-users , которые я использовал для Airflow на моем сервере-экземпляре ec2, на котором запущен Airflow.

1 Ответ

0 голосов
/ 21 сентября 2018

Я думаю, что журналы под AIRFLOW_WEB_SERVER_URL:PORT/admin/log/ должны предоставить вам достаточно информации, например, если кто-то очистит dag, используя пользовательский интерфейс или cli, как показано на скриншоте ниже.

Некоторые из этих метаданных извлекаются из MetaDB.

enter image description here

...