什么是Apache Airflow数据库后端所需的PostgreSQL权限?

4
在"初始化后端"的文档 (链接) 中没有提及这个问题。
如果我创建一个 airflow_user 角色和一个 airflow 模式。如果我授予 airflow_userairflow 模式的 USAGE 权限,然后在所有表上授予 SELECT UPDATE INSERT DELETE 权限是否足够?该用户是否需要对 airflow 模式中的所有表授予 GRANT ALL 权限?
airflow_user 设为 airflow 模式所有者是否更好?这将允许它在该模式内拥有所有权限。
参考资料:
Postgres GRANT (链接)
Postgres 权限 (链接)
未回答的 SO 问题 (链接)
1个回答

0

仅创建模式是不够的。

在配置的DSN值中,模式不是可配置选项AIRFLOW__CORE__SQL_ALCHEMY_CONN

libpq依赖于psycopg2驱动程序不允许在DSN中配置search_path作为额外参数。

最佳实践是为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模型的表都是在公共架构或搜索路径中创建的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接