如何限制对 airflow.models 的访问?

How to restrict access to airflow.models?

我有一个 airflow 实例,其中包含许多具有 DAG 的租户。他们想在他们的 dagruns 上提取元数据,例如 DagRun.end_date。但是我想限制每个租户,让他们只能访问与自己的 dagruns 相关的数据,而无法访问其他人的 dagruns 的数据。这怎么能做到?

这就是我想象中的 DAG 的样子

# custom macro function
def get_last_dag_run(dag):
    last_dag_run = dag.get_last_dagrun()
    return last_dag_run.end_date

我发现这些资源解释了如何提取数据,但没有解释如何限制数据。

注意:我是 Airflow 的贡献者。

当前的 Airflow 架构无法做到这一点。

我们正在慢慢努力使 Airflow 具有多租户能力,但目前我们已经完成了一半,我相信这将是几个主要版本才能实现。

目前隔离租户的唯一方法是为每个租户提供单独的 Airflow 实例,这并不像您最初想象的那么糟糕。如果你 运行 它们在同一个自动缩放 Kubernetes 集群上的不同命名空间中并添加 KEDA 自动缩放,并使用相同的数据库服务器(但给每个租户一个单独的模式),这可能会相当有效(特别是如果你使用 Terraform例如 setup/teardown 这样的 Airflow 实例)。