Airflow Configuration
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apache Airflow genera un archivo de configuración en todas las máquinas de airflow llamado airflow.cfg
en el directorio home del usuario de airflow. Este archivo de configuración contiene información de configuración y puede contener información interesante y sensible.
Hay dos formas 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 utilizados, ya que puedes sobrescribirlos configurando 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, verifica el entorno.
Algunos valores interesantes para revisar al leer el archivo de configuración:
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 algunas opciones que se pueden configurar para determinar 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 autenticación kerberos
airflow.api.auth.backend.basic_auth
: Para autenticación básica
airflow.composer.api.backend.composer_auth
: Utiliza autenticación de compositores (GCP) (desde aquí).
composer_auth_user_registration_role
: Esto indica el rol que el usuario de composer obtendrá 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
password
: Contraseña de Atlas
username
: Nombre de usuario de Atlas
flower_basic_auth
: Credenciales (user1:password1,user2:password2)
result_backend
: URL de Postgres que puede contener credenciales.
ssl_cacert
: Ruta al cacert
ssl_cert
: Ruta al cert
ssl_key
: Ruta a la clave
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 encriptadas (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)
tls_ca
: Ruta a ca
tls_cert
: Ruta al cert
tls_key
: Ruta a la clave tls
ccache
: Ruta al archivo ccache
forwardable
: Habilitado por defecto
google_key_path
: Ruta a las credenciales JSON de GCP.
backend
: Nombre completo de la clase del backend de secretos a habilitar
backend_kwargs
: El parámetro backend_kwargs se carga en un diccionario y se pasa a init de la clase del backend de secretos.
smtp_password
: Contraseña SMTP
smtp_user
: Usuario SMTP
cookie_samesite
: Por defecto es Lax, por lo que ya es el valor más débil posible
cookie_secure
: Establecer bandera segura en la cookie de sesión
expose_config
: Por defecto es Falso, si es verdadero, la configuración puede ser leída desde la consola web
expose_stacktrace
: Por defecto es Verdadero, mostrará tracebacks de python (potencialmente útil 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 True, por lo que por defecto el clickjacking no es posible
Por defecto, la autenticación web se especifica en el archivo webserver_config.py
y se configura como
Lo que significa que la autenticación se verifica contra la base de datos. Sin embargo, otras configuraciones son posibles como
Para dejar la autenticación a servicios de terceros.
Sin embargo, también hay una opción para permitir el acceso a usuarios anónimos, configurando el siguiente parámetro al rol deseado:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)