通过AD/LDAP组限制气流DAG可见性

Kyl*_*ine 7 airflow

是否可以限制Airflow中用户组对DAG的可见性和可访问性?

例如,我希望为整个公司提供一个大型Airflow环境,不同的团队将使用此Airflow环境来实现其团队的工作流程.假设我们的团队A和团队B都属于他们各自的AD/LDAP组,A组和B组.是否可以让A组只看到属于他们团队的DAG,反之亦然B组?

基于我的研究和理解,我认为这不可能在单个Airflow环境中实现.我认为为了让我这样做,我需要为每个团队创建一个单独的Airflow环境,以便每个团队都有自己的Airflow Dags文件夹,其中包含各自的DAG.

Tay*_*ton 11

我认为这里提出了两个不同的问题:

首先,LDAP身份验证.Airflow为在ldap3构建的LDAP身份验证提供支持.链接文档中的示例显示了如何将Airflow角色与LDAP组(例如,部件)相关联.data_profiler_filter

其次,按组限制DAG访问.截至撰写本文时,当前版本的Airflow(1.9)不支持按组限制DAG的可见性.最近基于角色的访问控制(RBAC)的工作改变了这一点.我在下面列出了解决此问题的3种不同选项.


选项1 - RBAC(可在Airflow 1.10中获得)

新的RBAC功能添加了对此类权限的支持,并且是最佳的细粒度控制.它使用基于Flask App Builder构建的权限系统.这是由一家公司创建的,具有与您提到的非常相似的用例,这在Jira问题中有更详细的讨论.

更多信息可以在:

现在可以在airflow/www_rbac中使用RBAC webserver UI .RBAC的其他功能也正在积极开发,以进一步提高多租户设置的安全性.

注意:AIRFLOW-2267中还有一项关于新的DAG级访问控制(DLAC)功能的工作正在进行中,该功能建立在RBAC工作的基础上,以引入更细粒度的控制.更多信息可以在设计文档PR#3197中找到.


选项2 - 与业主的多租户(最简单)

您可以考虑用于中等粒度控制的第二个选项是多租户设置,使用webserver.filter_by_ownerowner为每个DAG 设置一个显式(用户,而不是组)."有了这个,用户只会看到它所拥有的笨蛋,除非它是超级用户."

旁白:您可能有兴趣以使用或使用模拟的特定用户身份运行任务的相关功能.run_as_usercore.default_impersonation


选项3 - 运行多个单独的Airflow实例(最高隔离)

一些公司选择的粗粒度控制的第三种选择是运行多个单独的Airflow实例,每个团队一个.对于那些希望今天孤立地运行多个团队的DAG的人来说,这可能是最实用的.如果您碰巧使用Astronomer Enterprise,我们支持启动多个Airflow实例.