es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for 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 permiso can_trigger forma parte de los roles user y viewer, por lo que deberías poder otorgar este permiso sin proporcionar al usuario acceso de Admin.

    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 o viewer). En la sección “Permisos”, encuentra el permiso can_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 de Admin.

Comments are closed.