Apache Airflow数据库后端需要哪些postgres特权?

时间:2018-10-25 14:45:14

标签: postgresql airflow

有关“初始化后端”(link)的文档中未提及此内容。

如果我创建一个airflow_user角色和一个airflow模式。如果我在airflow_user模式上授予USAGE airflow,然后在所有表上授予SELECT UPDATE INSERT DELETE,就足够了吗?该用户在GRANT ALL模式中的所有表上都需要airflow吗?

最好让airflow_user成为airflow模式的所有者,据了解,由于它是所有者,因此将允许该模式内部的所有特权?

参考文献:
Postgres GRANTlink
Postgres特权(link
未回答的问题(link

1 个答案:

答案 0 :(得分:0)

创建架构是不够的。 架构不是为 AIRFLOW__CORE__SQL_ALCHEMY_CONN 配置的 DSN 值中的可配置选项。

哪个 psycopg2 驱动程序依赖于 doesn't allow to configure search_path 作为 DSN 中的额外参数的 libpq。

最佳做法是为 Airflow 创建数据库。

例如

复制到create-airflow-db.sql

create database airflow;
create user airflow;
alter user airflow with password 'airflow';
grant all on database airflow to airflow;

在容器中启动数据库服务器。让它在单独的终端中运行。

docker run -it --rm \
--publish '5432:5432' \
-v $PWD/create-airflow-db.sql:/create-airflow-db.sql \
--name postgres \
-e POSTGRES_PASSWORD=password postgres:alpine

在不同终端的 SQL 文件中运行查询。

docker exec -ti postgres psql -w -U postgres -d postgres -f create-airflow-db.sql

最后,在新终端中运行 Airflow 服务。

docker run --rm \
-it \
-e 'AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql://airflow:airflow@172.17.0.1:5432/airflow' \
--publish '8080:8080' puckel/docker-airflow

您可以连接到数据库服务器并列出表。

➜  airflow docker exec -ti postgres psql -w -U airflow -d airflow
psql (13.1)
Type "help" for help.

airflow=> \dt
                List of relations
 Schema |         Name          | Type  |  Owner
--------+-----------------------+-------+---------
 public | alembic_version       | table | airflow
 public | chart                 | table | airflow
 public | connection            | table | airflow
 public | dag                   | table | airflow
 public | dag_pickle            | table | airflow
 public | dag_run               | table | airflow
 public | dag_tag               | table | airflow
 public | import_error          | table | airflow
 public | job                   | table | airflow
 public | known_event           | table | airflow
 public | known_event_type      | table | airflow
 public | kube_resource_version | table | airflow
 public | kube_worker_uuid      | table | airflow
 public | log                   | table | airflow
 public | serialized_dag        | table | airflow
 public | sla_miss              | table | airflow
 public | slot_pool             | table | airflow
 public | task_fail             | table | airflow
 public | task_instance         | table | airflow
 public | task_reschedule       | table | airflow
 public | users                 | table | airflow
 public | variable              | table | airflow
 public | xcom                  | table | airflow
(23 rows)

在这里您可以看到支持 Airflow 模型的表是在公共架构或搜索路径中创建的。