Airflow 按AD/LDAP组限制DAG可见性
是否可以限制气流中用户组对DAG的可见性和可访问性 例如,我希望为整个公司提供一个大型气流环境,不同的团队将在其团队的工作流中使用此气流环境。假设A组和B组都属于各自的AD/LDAP组,A组和B组。是否可以让A组只看到属于他们组的DAG,反之亦然Airflow 按AD/LDAP组限制DAG可见性,airflow,Airflow,是否可以限制气流中用户组对DAG的可见性和可访问性 例如,我希望为整个公司提供一个大型气流环境,不同的团队将在其团队的工作流中使用此气流环境。假设A组和B组都属于各自的AD/LDAP组,A组和B组。是否可以让A组只看到属于他们组的DAG,反之亦然 根据我的研究和理解,我认为这在单一气流环境中是不可能的。我认为为了做到这一点,我需要为每个团队创建一个单独的气流环境,以便每个团队都有自己的气流DAG文件夹,其中包含各自的DAG。我认为这里提出了两个不同的问题: 首先,LDAP身份验证。气流提供了内置
根据我的研究和理解,我认为这在单一气流环境中是不可能的。我认为为了做到这一点,我需要为每个团队创建一个单独的气流环境,以便每个团队都有自己的气流DAG文件夹,其中包含各自的DAG。我认为这里提出了两个不同的问题: 首先,LDAP身份验证。气流提供了内置的。链接文档中的示例显示了如何将气流角色与LDAP组关联(例如,
data\u profiler\u filter
部分)
第二,按组限制DAG访问。在撰写本文时,当前版本的Airflow(1.9)不支持按组限制DAG的可见性。最近关于基于角色的访问控制(RBAC)的工作改变了这一点。我在下面列出了解决这个问题的3个不同选项
选项1-RBAC(大多数控制,在气流中可用≥ 1.10) 新的RBAC特性添加了对类似权限的支持,是细粒度控制的最佳选择。它使用基于Flask App Builder的权限系统。这是由一家公司创建的,其用例与您提到的非常相似,Jira问题将对此进行更详细的讨论 有关更多信息,请访问:
选项2-与业主的多租户(最简单,可用风量<1.10)
您可以考虑中等粒度控件的第二个选项是使用<代码> WebServer。FieldyByButhObjs<代码>,并为每个DAG设置一个显式<代码>所有者/COD>(用户,而不是组)。这样,用户将只看到其拥有的DAG,除非它是超级用户
旁白:您可能有兴趣使用run\u as\u user
或core作为特定用户运行任务的相关功能。默认\u模拟
选项3-运行多个单独的气流实例(最高隔离度)
一些公司选择的粗粒度控制的第三个选项是运行多个单独的气流实例,每个团队一个。对于那些现在希望单独运行多个团队的DAG的人来说,这可能是最实际的。如果您碰巧使用,我们支持旋转多个气流实例。因为您可以拥有一组所有者,另一个选项是
dag=dag(
dag_id='dag-with-group-scope',
owner=Variable.get('group-datascience',parse_json=True),
#再来点配置
)
这只是化妆,而且非常容易被破解。因为任何人都可以查询任务中的所有变量(可以吗?)。但是它可以帮助组织,也就是说,没有找到描述如何按组限制DAG可见性的相关文章。在1.10.2中,他们添加了DAG级别的访问控制。据我所知,您仍然需要手动将DAG映射到角色。您还必须手动为用户分配角色;LDAP组无法支持角色。我认为RBAC只在2.0之后才可用?@Charmy一旦2.0发布,我相信RBAC UI将成为默认,旧UI将被弃用。但是,从1.10开始,RBAC已经可用,许多人已经在使用它了。您可以在上找到有关如何启用和使用它的更多信息。您还可以在.Option 2,filter_by_owner中找到有关RBAC功能发布的更多信息。不起作用。的确,不拥有DAG的用户无法在DAG屏幕上看到它,但一旦所有者(或其他进程)触发DAG,任何用户都可以从“浏览>DAG运行”访问DAG主屏幕并删除/修改/触发它。@amza谢谢。我更新了答案以反映这一点。如果您使用的是<1.10,我认为您可能已经识别出一个bug。如果你正在使用≥ 1.10,看起来随着RBAC的引入,该选项已被弃用@泰勒·雷德米斯顿,我没看到你最新的答案提到这一点。我只是在读了阿姆扎的评论后才意识到这一点
// Variable: group-datascience
["dinigo","michael","david"]