Airflow Configuration

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Archivo de Configuración

Apache Airflow genera un archivo de configuración en todas las máquinas de airflow llamado airflow.cfg en el home del usuario de airflow. Este archivo de configuración contiene información importante y puede contener información sensible.

Hay dos maneras de acceder a este archivo: Comprometiendo alguna máquina de airflow, o accediendo a la consola web.

Ten en cuenta que los valores dentro del archivo de configuración pueden no ser los que se usan, ya que puedes sobrescribirlos estableciendo variables de entorno como AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

Si tienes acceso al archivo de configuración en el servidor web, puedes verificar la configuración real en ejecución en la misma página donde se muestra la configuración. Si tienes acceso a alguna máquina dentro del entorno de airflow, revisa el entorno.

Algunos valores interesantes para revisar al leer el archivo de configuración:

[api]

  • access_control_allow_headers: Esto indica los encabezados permitidos para CORS

  • access_control_allow_methods: Esto indica los métodos permitidos para CORS

  • access_control_allow_origins: Esto indica los orígenes permitidos para CORS

  • auth_backend: Según la documentación hay varias opciones disponibles para configurar quién puede acceder a la API:

  • airflow.api.auth.backend.deny_all: Por defecto nadie puede acceder a la API

  • airflow.api.auth.backend.default: Todos pueden acceder sin autenticación

  • airflow.api.auth.backend.kerberos_auth: Para configurar la autenticación kerberos

  • airflow.api.auth.backend.basic_auth: Para autenticación básica

  • airflow.composer.api.backend.composer_auth: Usa la autenticación de composer (GCP) (desde aquí).

  • composer_auth_user_registration_role: Esto indica el rol que el usuario de composer tendrá dentro de airflow (Op por defecto).

  • También puedes crear tu propio método de autenticación con python.

  • google_key_path: Ruta a la clave de cuenta de servicio de GCP

[atlas]

  • password: Contraseña de Atlas

  • username: Usuario de Atlas

[celery]

  • flower_basic_auth : Credenciales (usuario1:contraseña1,usuario2:contraseña2)

  • result_backend: URL de Postgres que puede contener credenciales.

  • ssl_cacert: Ruta al cacert

  • ssl_cert: Ruta al certificado

  • ssl_key: Ruta a la clave

[core]

  • dag_discovery_safe_mode: Habilitado por defecto. Al descubrir DAGs, ignora cualquier archivo que no contenga las cadenas DAG y airflow.

  • fernet_key: Clave para almacenar variables cifradas (simétrica)

  • hide_sensitive_var_conn_fields: Habilitado por defecto, oculta información sensible de las conexiones.

  • security: Qué módulo de seguridad usar (por ejemplo, kerberos)

[dask]

  • tls_ca: Ruta al ca

  • tls_cert: Ruta al certificado

  • tls_key: Ruta a la clave tls

[kerberos]

  • ccache: Ruta al archivo ccache

  • forwardable: Habilitado por defecto

[logging]

  • google_key_path: Ruta a las credenciales JSON de GCP.

[secrets]

  • backend: Nombre completo de la clase del backend de secretos para habilitar

  • backend_kwargs: El parámetro backend_kwargs se carga en un diccionario y se pasa al init de la clase del backend de secretos.

[smtp]

  • smtp_password: Contraseña SMTP

  • smtp_user: Usuario SMTP

[webserver]

  • cookie_samesite: Por defecto es Lax, por lo que ya es el valor más débil posible

  • cookie_secure: Establece la bandera segura en la cookie de sesión

  • expose_config: Por defecto es Falso, si es verdadero, la configuración se puede leer desde la consola web

  • expose_stacktrace: Por defecto es Verdadero, mostrará rastreos de python (potencialmente útiles para un atacante)

  • secret_key: Esta es la clave utilizada por flask para firmar las cookies (si tienes esto puedes suplantar a cualquier usuario en Airflow)

  • web_server_ssl_cert: Ruta al certificado SSL

  • web_server_ssl_key: Ruta a la Clave SSL

  • x_frame_enabled: Por defecto es Verdadero, por lo que por defecto el clickjacking no es posible

Autenticación Web

Por defecto, la autenticación web se especifica en el archivo webserver_config.py y está configurada como

AUTH_TYPE = AUTH_DB

Lo que significa que la autenticación se verifica contra la base de datos. Sin embargo, otras configuraciones son posibles como

AUTH_TYPE = AUTH_OAUTH

Para delegar la autenticación a servicios de terceros.

Sin embargo, también existe la opción de permitir el acceso a usuarios anónimos, estableciendo el siguiente parámetro al rol deseado:

AUTH_ROLE_PUBLIC = 'Admin'
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización