Airflow Configuration

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Configuration File

Apache Airflow सभी एयरफ्लो मशीनों में एक config file उत्पन्न करता है जिसे airflow.cfg कहा जाता है, जो एयरफ्लो उपयोगकर्ता के होम में होता है। यह config file कॉन्फ़िगरेशन जानकारी रखती है और दिलचस्प और संवेदनशील जानकारी हो सकती है।

इस फ़ाइल तक पहुँचने के दो तरीके हैं: किसी एयरफ्लो मशीन को समझौता करके, या वेब कंसोल तक पहुँचकर।

ध्यान दें कि config file के अंदर के मान वास्तव में उपयोग किए गए नहीं हो सकते, क्योंकि आप उन्हें env वेरिएबल सेट करके ओवरराइट कर सकते हैं जैसे AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'

यदि आपके पास वेब सर्वर में config file तक पहुँच है, तो आप उसी पृष्ठ पर वास्तविक चल रही कॉन्फ़िगरेशन की जांच कर सकते हैं जहाँ config प्रदर्शित होता है।
यदि आपके पास एयरफ्लो वातावरण के अंदर किसी मशीन तक पहुँच है, तो पर्यावरण की जांच करें।

config file पढ़ते समय जांचने के लिए कुछ दिलचस्प मान:

[api]

  • access_control_allow_headers: यह CORS के लिए अनुमत हेडर को इंगित करता है
  • access_control_allow_methods: यह CORS के लिए अनुमत विधियों को इंगित करता है
  • access_control_allow_origins: यह CORS के लिए अनुमत मूल को इंगित करता है
  • auth_backend: दस्तावेज़ों के अनुसार कुछ विकल्प हो सकते हैं जो यह निर्धारित करते हैं कि कौन API तक पहुँच सकता है:
  • airflow.api.auth.backend.deny_all: डिफ़ॉल्ट रूप से कोई भी API तक पहुँच नहीं सकता
  • airflow.api.auth.backend.default: सभी बिना प्रमाणीकरण के इसे एक्सेस कर सकते हैं
  • airflow.api.auth.backend.kerberos_auth: केर्बेरोस प्रमाणीकरण कॉन्फ़िगर करने के लिए
  • airflow.api.auth.backend.basic_auth: बेसिक प्रमाणीकरण के लिए
  • airflow.composer.api.backend.composer_auth: कंपोज़र्स प्रमाणीकरण (GCP) का उपयोग करता है (से यहाँ).
  • composer_auth_user_registration_role: यह भूमिका को इंगित करता है जो कंपोज़र उपयोगकर्ता को एयरफ्लो के अंदर मिलेगी (Op डिफ़ॉल्ट रूप से)।
  • आप अपना खुद का प्रमाणीकरण विधि भी बना सकते हैं पायथन के साथ।
  • google_key_path: GCP सेवा खाता कुंजी का पथ

[atlas]

  • password: एटलस पासवर्ड
  • username: एटलस उपयोगकर्ता नाम

[celery]

  • flower_basic_auth : क्रेडेंशियल (user1:password1,user2:password2)
  • result_backend: पोस्टग्रेस यूआरएल जिसमें क्रेडेंशियल हो सकते हैं।
  • ssl_cacert: cacert का पथ
  • ssl_cert: प्रमाणपत्र का पथ
  • ssl_key: कुंजी का पथ

[core]

  • dag_discovery_safe_mode: डिफ़ॉल्ट रूप से सक्षम। DAGs की खोज करते समय, किसी भी फ़ाइल को अनदेखा करें जिसमें DAG और airflow के स्ट्रिंग्स नहीं हैं।
  • fernet_key: एन्क्रिप्टेड वेरिएबल्स को स्टोर करने के लिए कुंजी (संपूर्ण)
  • hide_sensitive_var_conn_fields: डिफ़ॉल्ट रूप से सक्षम, कनेक्शनों की संवेदनशील जानकारी छिपाएँ।
  • security: किस सुरक्षा मॉड्यूल का उपयोग करना है (उदाहरण के लिए केर्बेरोस)

[dask]

  • tls_ca: ca का पथ
  • tls_cert: प्रमाणपत्र का भाग
  • tls_key: tls कुंजी का भाग

[kerberos]

  • ccache: ccache फ़ाइल का पथ
  • forwardable: डिफ़ॉल्ट रूप से सक्षम

[logging]

  • google_key_path: GCP JSON क्रेड्स का पथ।

[secrets]

  • backend: सक्रिय करने के लिए रहस्यों के बैकएंड का पूरा वर्ग नाम
  • backend_kwargs: backend_kwargs पैरामीटर को एक शब्दकोश में लोड किया जाता है और रहस्यों के बैकएंड वर्ग के init में पास किया जाता है।

[smtp]

  • smtp_password: SMTP पासवर्ड
  • smtp_user: SMTP उपयोगकर्ता

[webserver]

  • cookie_samesite: डिफ़ॉल्ट रूप से यह Lax है, इसलिए यह पहले से ही सबसे कमजोर संभव मान है
  • cookie_secure: सत्र कुकी पर सुरक्षित ध्वज सेट करें
  • expose_config: डिफ़ॉल्ट रूप से False है, यदि सत्य है, तो config को वेब कंसोल से पढ़ा जा सकता है
  • expose_stacktrace: डिफ़ॉल्ट रूप से यह सत्य है, यह पायथन ट्रेसबैक दिखाएगा (संभावित रूप से हमलावर के लिए उपयोगी)
  • secret_key: यह कुंजी है जिसका उपयोग फ्लास्क कुकीज़ पर हस्ताक्षर करने के लिए किया जाता है (यदि आपके पास यह है तो आप एयरफ्लो में किसी भी उपयोगकर्ता का अनुकरण कर सकते हैं)
  • web_server_ssl_cert: SSL प्रमाणपत्र का पथ
  • web_server_ssl_key: SSL कुंजी का पथ
  • x_frame_enabled: डिफ़ॉल्ट सत्य है, इसलिए डिफ़ॉल्ट रूप से क्लिकजैकिंग संभव नहीं है

Web Authentication

डिफ़ॉल्ट रूप से वेब प्रमाणीकरण फ़ाइल webserver_config.py में निर्दिष्ट है और इसे इस प्रकार कॉन्फ़िगर किया गया है

bash
AUTH_TYPE = AUTH_DB

जिसका मतलब है कि प्रमाणीकरण डेटाबेस के खिलाफ जांचा जाता है। हालाँकि, अन्य कॉन्फ़िगरेशन संभव हैं जैसे

bash
AUTH_TYPE = AUTH_OAUTH

तीसरे पक्ष की सेवाओं को प्रमाणीकरण छोड़ने के लिए।

हालांकि, गुमनाम उपयोगकर्ताओं को पहुंच की अनुमति देने का एक विकल्प भी है, निम्नलिखित पैरामीटर को चाहे गए भूमिका पर सेट करना:

bash
AUTH_ROLE_PUBLIC = 'Admin'

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें