我想知道从审计日志的意义上说Airflow提供了什么。我的Airflow环境正在运行Airflow版本1.10,并使用[ldap]
文件的airflow.cfg
部分来使用我公司的Active Dicrectory(AD)进行身份验证。我看到有人通过Web UI登录到Airflow时,它会将用户名写入Web服务器的日志中(如下所示)。我想知道是否可以修改气流以在用户打开/关闭DAG,创建新的气流变量或池,清除任务,将任务标记为成功以及用户可以执行的任何其他操作时进行记录
我需要对用户的活动具有某种易处理性,因为要在我的工作中使用Airflow,我必须让它通过建筑师的安全审查,并且他需要具有跟踪用户活动的能力。
Airflow是否提供了此功能?我发现,如果我要使用称为Cloud Composer的Google Cloud的Airflow服务,那么我将通过他们的服务获得Audit Logs,但不幸的是,我与Amazon Web Services(AWS)生态系统联系在一起,并且我正在维护气流本身(不通过服务提供)。
我在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"
当我登录时,我看到它告诉我用户名(在https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/auth/backends/ldap_auth.py的login
函数中登录)
[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版上,除非我说 Airflow Owner列始终对我来说是空白的>。但是在升级到Airflow版本1.10并现在连接到LDAP之后,每次执行修改命令时,我的LDAP用户名(kbridenstine)都记录在Owner
下!
为锦上添花,当服务器上的某人运行Airflow命令时,Airflow也会记录日志(因为您也可以通过其CLI命令修改Airflow)。您可以在运行Airflow的ec2实例服务器上,通过 root 和 ec2-users 来查看Airflow。