Airflow Configuration
Last updated
Last updated
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apache Airflow génère un fichier de configuration sur toutes les machines airflow appelé airflow.cfg
dans le répertoire personnel de l'utilisateur airflow. Ce fichier de configuration contient des informations de configuration et peut contenir des informations intéressantes et sensibles.
Il existe deux façons d'accéder à ce fichier : en compromettant une machine airflow ou en accédant à la console web.
Notez que les valeurs à l'intérieur du fichier de configuration peuvent ne pas être celles utilisées, car vous pouvez les écraser en définissant des variables d'environnement telles que AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
.
Si vous avez accès au fichier de configuration sur le serveur web, vous pouvez vérifier la vraie configuration en cours d'exécution sur la même page où la configuration est affichée. Si vous avez accès à une machine à l'intérieur de l'environnement airflow, vérifiez l'environnement.
Voici quelques valeurs intéressantes à vérifier lors de la lecture du fichier de configuration :
access_control_allow_headers
: Cela indique les en-têtes autorisés pour CORS
access_control_allow_methods
: Cela indique les méthodes autorisées pour CORS
access_control_allow_origins
: Cela indique les origines autorisées pour CORS
auth_backend
: Selon la documentation, quelques options peuvent être mises en place pour configurer qui peut accéder à l'API :
airflow.api.auth.backend.deny_all
: Par défaut, personne ne peut accéder à l'API
airflow.api.auth.backend.default
: Tout le monde peut y accéder sans authentification
airflow.api.auth.backend.kerberos_auth
: Pour configurer l'authentification kerberos
airflow.api.auth.backend.basic_auth
: Pour l'authentification de base
airflow.composer.api.backend.composer_auth
: Utilise l'authentification des compositeurs (GCP) (depuis ici).
composer_auth_user_registration_role
: Cela indique le rôle que l'utilisateur compositeur obtiendra à l'intérieur d'airflow (Op par défaut).
Vous pouvez également créer votre propre méthode d'authentification avec python.
google_key_path
: Chemin vers la clé du compte de service GCP
password
: Mot de passe Atlas
username
: Nom d'utilisateur Atlas
flower_basic_auth
: Identifiants (user1:password1,user2:password2)
result_backend
: URL Postgres qui peut contenir des identifiants.
ssl_cacert
: Chemin vers le cacert
ssl_cert
: Chemin vers le cert
ssl_key
: Chemin vers la clé
dag_discovery_safe_mode
: Activé par défaut. Lors de la découverte des DAGs, ignorez tous les fichiers qui ne contiennent pas les chaînes DAG
et airflow
.
fernet_key
: Clé pour stocker des variables chiffrées (symétrique)
hide_sensitive_var_conn_fields
: Activé par défaut, cache les informations sensibles des connexions.
security
: Quel module de sécurité utiliser (par exemple kerberos)
tls_ca
: Chemin vers ca
tls_cert
: Chemin vers le cert
tls_key
: Chemin vers la clé tls
ccache
: Chemin vers le fichier ccache
forwardable
: Activé par défaut
google_key_path
: Chemin vers les identifiants JSON GCP.
backend
: Nom complet de la classe du backend des secrets à activer
backend_kwargs
: Le paramètre backend_kwargs est chargé dans un dictionnaire et passé à init de la classe du backend des secrets.
smtp_password
: Mot de passe SMTP
smtp_user
: Utilisateur SMTP
cookie_samesite
: Par défaut, c'est Lax, donc c'est déjà la valeur la plus faible possible
cookie_secure
: Définir le drapeau sécurisé sur le cookie de session
expose_config
: Par défaut, c'est Faux, si vrai, la configuration peut être lue depuis la console web
expose_stacktrace
: Par défaut, c'est Vrai, cela affichera les tracebacks python (potentiellement utiles pour un attaquant)
secret_key
: C'est la clé utilisée par flask pour signer les cookies (si vous avez cela, vous pouvez usurper l'identité de n'importe quel utilisateur dans Airflow)
web_server_ssl_cert
: Chemin vers le certificat SSL
web_server_ssl_key
: Chemin vers la clé SSL
x_frame_enabled
: Par défaut, c'est Vrai, donc par défaut le clickjacking n'est pas possible
Par défaut, l'authentification web est spécifiée dans le fichier webserver_config.py
et est configurée comme
Ce qui signifie que l'authentification est vérifiée par rapport à la base de données. Cependant, d'autres configurations sont possibles comme
Pour laisser l'authentification aux services tiers.
Cependant, il existe également une option pour permettre l'accès aux utilisateurs anonymes, en définissant le paramètre suivant au rôle souhaité :
Apprenez et pratiquez le hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)