Configuration Airflow

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Fichier de Configuration

Apache Airflow gĂ©nĂšre un fichier de config sur toutes les machines airflow appelĂ© airflow.cfg dans le rĂ©pertoire personnel de l’utilisateur airflow. Ce fichier de config 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 config 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 config sur le serveur web, vous pouvez vĂ©rifier la vraie configuration en cours sur la mĂȘme page oĂč la config est affichĂ©e.
Si vous avez accĂšs Ă  une machine dans l’environnement airflow, vĂ©rifiez l’environnement.

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

[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 basique
  • 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 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 Postgres qui peut contenir des identifiants.
  • ssl_cacert : Chemin vers le cacert
  • ssl_cert : Chemin vers le cert
  • ssl_key : Chemin vers la clĂ©

[core]

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

[dask]

  • tls_ca : Chemin vers ca
  • tls_cert : Chemin vers le cert
  • 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 GCP.

[secrets]

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

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

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

Ce qui signifie que l’authentification est vĂ©rifiĂ©e par rapport Ă  la base de donnĂ©es. Cependant, d’autres configurations sont possibles comme

AUTH_TYPE = AUTH_OAUTH

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Ă© :

AUTH_ROLE_PUBLIC = 'Admin'

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks