Airflow Configuration

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Fichier de Configuration

Apache Airflow génère un fichier de configuration dans 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 y a 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 pourraient ne pas être celles utilisées, car vous pouvez les remplacer 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 configuration réelle 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.

Quelques valeurs intéressantes à vérifier lors de la lecture du fichier de configuration :

[api]

  • 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 de composer (GCP) (depuis ici).

  • composer_auth_user_registration_role : Cela indique le rôle que l'utilisateur composer obtiendra dans 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é de compte de service GCP

[atlas]

  • password : Mot de passe Atlas

  • username : Nom d'utilisateur Atlas

[celery]

  • flower_basic_auth : Identifiants (user1:password1,user2:password2)

  • result_backend : URL de Postgres qui peut contenir des identifiants.

  • ssl_cacert : Chemin vers le cacert

  • ssl_cert : Chemin vers le certificat

  • ssl_key : Chemin vers la clé

[core]

  • dag_discovery_safe_mode : Activé par défaut. Lors de la découverte des DAGs, ignorer 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)

[dask]

  • tls_ca : Chemin vers le ca

  • tls_cert : Chemin vers le certificat

  • tls_key : Chemin vers la clé tls

[kerberos]

  • ccache : Chemin vers le fichier ccache

  • forwardable : Activé par défaut

[logging]

  • google_key_path : Chemin vers les identifiants JSON de GCP.

[secrets]

  • backend : Nom complet de la classe du backend de secrets à activer

  • backend_kwargs : Le paramètre backend_kwargs est chargé dans un dictionnaire et passé à init de la classe backend de secrets.

[smtp]

  • smtp_password : Mot de passe SMTP

  • smtp_user : Utilisateur SMTP

[webserver]

  • 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 montrera 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

Authentification Web

Par défaut, l'authentification web est spécifiée dans le fichier webserver_config.py et est configurée comme

AUTH_TYPE = AUTH_DB

Cela signifie que l'authentification est vérifiée par rapport à la base de données. Cependant, d'autres configurations sont possibles telles que

AUTH_TYPE = AUTH_OAUTH

Pour déléguer l'authentification à des services tiers.

Cependant, il existe également une option pour permettre l'accès aux utilisateurs anonymes, en définissant le paramètre suivant pour le rôle souhaité :

AUTH_ROLE_PUBLIC = 'Admin'
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Dernière mise à jour