如何限制对 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
我发现这些资源解释了如何提取数据,但没有解释如何限制数据。
- How to get last two successful execution dates of Airflow job?
- how to get latest execution time of a dag run in airflow
- How to find the start date and end date of a particular task in dag in airflow?
注意:我是 Airflow 的贡献者。
当前的 Airflow 架构无法做到这一点。
我们正在慢慢努力使 Airflow 具有多租户能力,但目前我们已经完成了一半,我相信这将是几个主要版本才能实现。
目前隔离租户的唯一方法是为每个租户提供单独的 Airflow 实例,这并不像您最初想象的那么糟糕。如果你 运行 它们在同一个自动缩放 Kubernetes 集群上的不同命名空间中并添加 KEDA 自动缩放,并使用相同的数据库服务器(但给每个租户一个单独的模式),这可能会相当有效(特别是如果你使用 Terraform例如 setup/teardown 这样的 Airflow 实例)。
我有一个 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
我发现这些资源解释了如何提取数据,但没有解释如何限制数据。
- How to get last two successful execution dates of Airflow job?
- how to get latest execution time of a dag run in airflow
- How to find the start date and end date of a particular task in dag in airflow?
注意:我是 Airflow 的贡献者。
当前的 Airflow 架构无法做到这一点。
我们正在慢慢努力使 Airflow 具有多租户能力,但目前我们已经完成了一半,我相信这将是几个主要版本才能实现。
目前隔离租户的唯一方法是为每个租户提供单独的 Airflow 实例,这并不像您最初想象的那么糟糕。如果你 运行 它们在同一个自动缩放 Kubernetes 集群上的不同命名空间中并添加 KEDA 自动缩放,并使用相同的数据库服务器(但给每个租户一个单独的模式),这可能会相当有效(特别是如果你使用 Terraform例如 setup/teardown 这样的 Airflow 实例)。