Airflow 2.0 API 响应 403 禁止

Ade*_*hmi 6 airflow airflow-scheduler

我正在尝试通过 Airflow 2.0 REST API 触发新的 dag 运行。如果我登录到远程计算机上的 Airflow Web 服务器并转到 swagger 文档页面来测试 API,则调用成功。如果我注销或者 API 调用是通过 Postman 或curl 发送的,那么我会收到 403 禁止消息。无论我是否提供 Web 服务器用户名密码,curl 或 postman 都会收到相同的 403 错误消息。

curl -X POST --user "admin:blabla" "http://10.0.0.3:7863/api/v1/dags/tutorial_taskflow_api_etl/dagRuns" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{\"conf\":{},\"dag_run_id\":\"string5\"}"
{
  "detail": null,
  "status": 403,
  "title": "Forbidden",
  "type": "https://airflow.apache.org/docs/2.0.0/stable-rest-api-ref.html#section/Errors/PermissionDenied"
}
Run Code Online (Sandbox Code Playgroud)

API 的安全性已更改为默认值,而不是 deny_all (auth_backend = airflow.api.auth.backend.default)。Airflow 的安装是使用 ubuntu 18 Bionic 使用 pip 完成的。如果手动或计划触发,DAG 运行良好。数据库后端是postgres。

还尝试将 cookie 详细信息从 Chrome 复制到邮递员中以解决此问题,但它不起作用。

这是上述两个调用的 Web 服务器日志。

airflowWebserver_container | 10.0.0.4 - - [05/Jan/2021:06:35:33 +0000] "POST /api/v1/dags/tutorial_taskflow_api_etl/dagRuns HTTP/1.1" 403 170 "http://10.0.0.3:7863/api/v1/ui/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
airflowWebserver_container | 10.0.0.4 - - [05/Jan/2021:06:35:07 +0000] "POST /api/v1/dags/tutorial_taskflow_api_etl/dagRuns HTTP/1.1" 409 251 "http://10.0.0.3:7863/api/v1/ui/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

Sha*_*are 9

我正在使用 Airflow v2.0 的 basic_auth。环境AIRFLOW__API__AUTH_BACKEND变量应设置为airflow.api.auth.backend.basic_auth. 您必须重新启动网络服务器容器。然后您应该能够使用带--user选项的 cURL 命令访问所有稳定的 API。