airflow - 气流审核日志
问题描述
我想知道 Airflow 在审计日志的意义上提供了什么。我的 Airflow 环境正在运行 Airflow 版本 1.10,并使用该文件的[ldap]
部分airflow.cfg
来使用我的公司 Active Dicrectory (AD) 进行身份验证。我看到当有人通过 Web UI 登录到 Airflow 时,它会将用户名写入网络服务器的日志(如下所示)。我想知道是否可以修改 Airflow 以在用户打开/关闭 DAG、创建新的 Airflow 变量或池、清除任务、将任务标记为成功以及用户可以执行的任何其他操作时进行记录.
我需要能够对用户的活动具有某种可追踪性,因为为了在我的工作中使用 Airflow,我必须让它通过架构师的安全审查,并且他需要能够跟踪用户的活动。
这种能力是 Airflow 开箱即用的吗?我看到,如果我使用 Google Cloud 的名为Cloud Composer的 Airflow 服务,那么我将通过他们的服务获取审计日志,但不幸的是,我与 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.9Owner
上,日志上的列对我来说始终是空白的,除非它说Airflow。Owner
但是在升级到 Airflow 版本 1.10 并连接到我的 LDAP 之后,我每次执行修改命令时都会看到我的 LDAP 用户名 (kbridenstine) 记录在下面!
锦上添花的是,当服务器上有人运行 Airflow 命令时,Airflow 也会记录(因为您也可以通过他们的 CLI 命令修改 Airflow)。您可以通过我在运行 Airflow 的 ec2-instance 服务器上用于 Airflow的root和ec2-users看到这一点。
解决方案
推荐阅读
- r - 错误:ModuleNotFoundError:没有名为“keras”的模块
- c# - 我可以同时在我的列表中使用 First() 和 Concat()
- abap - 如何在以前的模态对话框中提高 PBO?
- codeigniter-3 - 表单验证总是返回错误值,甚至没有验证
- javascript - 加载页面时选中复选框
- swift - Swift:在进度视图完成时更改标签文本 1.0
- ios - 为什么`CBCentral.maximumUpdateValueLength`与相同的设备对(iPhone 6s <-> iPad air)不同,有/没有相同的iCloud帐户登录?
- java - Onedrive api上传文件
- angular - Angular6:我的导航中的下拉菜单没有关闭
- flutter - 如何在不使用任何插件的情况下添加 2 个色调图标?