【问题标题】:Airflow Audit Logs气流审核日志
【发布时间】:2019-02-21 18:18:44
【问题描述】:

我想知道 Airflow 在审计日志的意义上提供了什么。我的 Airflow 环境正在运行 Airflow 版本 1.10,并使用 airflow.cfg 文件的 [ldap] 部分来使用我的公司 Active Dicrectory (AD) 进行身份验证。我看到当有人通过 Web UI 登录到 Airflow 时,它会将用户名写入网络服务器的日志(如下所示)。我想知道是否可以修改 Airflow 以在用户打开/关闭 DAG、创建新的 Airflow 变量或池、清除任务、将任务标记为成功以及用户可以执行的任何其他操作时进行记录.

我需要能够对用户的活动进行某种跟踪,因为为了在我的工作中使用 Airflow,我必须让它通过架构师的安全审查,并且他需要能够跟踪用户的活动。

Airflow 是否提供了开箱即用的功能?我发现如果我使用名为 Cloud Composer 的 Google Cloud 的 Airflow 服务,那么我会通过他们的服务获得 Audit Logs 但不幸的是,我与 Amazon Web Services (AWS) 生态系统相关联,我自己维护 Airflow(不是通过服务提供)。

我在 airflow webserver 日志中看到,当我遍历 Airflow Web UI 时,它正在发送休息调用

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 请求时,它也会记录发送请求的客户端。这将满足我的审计日志需求,因为我总是知道用户在 UI 上的 Airflow 中做了什么。

更新:

在这篇文章中

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

显然,Airflow 1.10 引入了全新的网站安全架构,他们将在未来弃用原来的 Flask UI。

我发现这篇文章很有趣,但她谈到动作日志记录是被动的而不是抢先的,我想知道这是否与审计日志记录有关?

在此期间,对安全性进行了多项改进, 包括添加动作记录功能和创建硬编码 幼稚的 RBAC 实现。但是,动作记录是被动的 而不是抢占式的,并且本地 RBAC 实现仍然 允许所有角色对 DAG 进行读写访问,因此他们没有 解决我们的安全问题。

工作解决方案:

尽管我说我使用的是 Airflow 版本 1.10,但实际上我使用的是 Airflow 版本 1.9 :) 在 Airflow 版本 1.9 上,日志上的 Owner 列对我来说始终是空白的,除非它说 Airflow。但是在升级到 Airflow 1.10 版并连接到我的 LDAP 后,我每次执行修改命令时都会看到我的 LDAP 用户名 (kbridenstine) 记录在 Owner 下!

锦上添花的是,当服务器上有人运行 Airflow 命令时,Airflow 也会记录(因为您也可以通过他们的 CLI 命令修改 Airflow)。您可以使用 rootec2-users 我在运行 Airflow 的 ec2-instance 服务器上用于 Airflow。

【问题讨论】:

标签: airflow


【解决方案1】:

我认为AIRFLOW_WEB_SERVER_URL:PORT/admin/log/ 下的日志应该为您提供足够的信息,即是否有人使用 UI 或 cli 清除 dag,如下面的屏幕截图所示。

其中一些元数据是从 MetaDB 中检索的。

【讨论】:

  • 我的日志中没有主机名,就像您在最右边的列中那样。至于右边第二列,kaxil 和anonymous 这只是Dag 所有者名称,默认情况下通常是Airflow;所以那个领域没有帮助。我想知道您的日志是否显示主机名,因为您使用 Airflow 身份验证和通过 Airflow 创建的用户名/密码,而我使用的是 LDAP?而且看起来你是在本地运行,所以我想知道这是否会影响事情。
  • 我没有将“kaxil”列为 DAG 所有者。是的,我在本地使用它而不是使用 LDAP
  • 你的答案是对的!我将解释为什么在我的帖子更新中验证需要这么长时间:) 谢谢!我奖励了你 50 点赏金!
  • @kaxil 不幸的是,我在此视图中看不到 OP 还询问谁编辑了气流变量以及关键是什么。是否可以在此审核日志列表中显示?
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2018-07-09
  • 2016-03-23
  • 2011-03-18
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多