¿Qué permisos de Airflow permiten activar una ejecución de DAG a través de la API?
Usando Airflow 2.0.2, estoy tratando de usar la API de Airflow para activar ejecuciones de DAG. Cuando ejecuto un simple GET como
curl -X GET --user "fooUser:passw0rd" "${ENDPOINT_URL}/api/v1/pools"
Obtengo los resultados esperados:
{
"pools": [
{
"name": "default_pool",
"occupied_slots": 0,
"open_slots": 128,
"queued_slots": 0,
"running_slots": 0,
"slots": 128
}
],
"total_entries": 1
}
Por lo tanto, el usuario fooUser
tiene acceso básico a la API. Pero al intentar ejecutar
curl -X POST -H "Content-Type: application/json" -d '{}' --user "fooUser:passw0rd" "${ENDPOINT_URL}/api/v1/dags/myDag/dagRuns"
Obtengo
{
"detail": null,
"status": 403,
"title": "Forbidden",
"type": "https://airflow.apache.org/docs/2.0.2/stable-rest-api-ref.html#section/Errors/PermissionDenied"
}
Si otorgo al usuario fooUser
el rol de Admin
y uso el mismo comando curl
, obtengo éxito al obtener
{
"conf": {},
"dag_id": "myDag",
"dag_run_id": "manual__2021-12-13T21:37:42.959274+00:00",
"end_date": null,
"execution_date": "2021-12-13T21:37:42.959274+00:00",
"external_trigger": true,
"start_date": "2021-12-13T21:37:42.964609+00:00",
"state": "running"
}
Sin embargo, no quiero que este usuario tenga permisos de Admin
. Solo quiero darle permisos suficientes para permitirle activar ejecuciones de DAG utilizando la API. Pero al revisar la lista de permisos otorgados a Admin
, no puedo determinar cuáles necesita mi usuario fooUser
para lograr esto.
¿Qué permiso(s) específico(s) necesita un usuario para poder activar ejecuciones de DAG utilizando la API de Airflow?
davy.ai
Para que un usuario pueda iniciar ejecuciones de DAG mediante la API de Airflow, necesita el permiso
can_trigger
. Este permiso permite a los usuarios iniciar manualmente ejecuciones de DAG a través de la interfaz de usuario o la API. El permisocan_trigger
forma parte de los rolesuser
yviewer
, por lo que deberías poder otorgar este permiso sin proporcionar al usuario acceso deAdmin
.Para otorgar el permiso
can_trigger
a un usuario, primero navega hasta la interfaz web de Airflow y haz clic en el botón “Admin” en la barra de navegación superior. Luego, haz clic en la pestaña “Roles” y selecciona el rol al que deseas otorgar el permiso (por ejemplo,user
oviewer
). En la sección “Permisos”, encuentra el permisocan_trigger
y marca la casilla junto a él. Por último, haz clic en el botón “Guardar” para guardar tus cambios.Una vez que hayas otorgado el permiso
can_trigger
al rol correspondiente, deberías poder iniciar ejecuciones de DAG utilizando la API de Airflow sin proporcionarle al usuario acceso deAdmin
.