mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-06 17:53:37 -08:00
106 lines
9.3 KiB
Markdown
106 lines
9.3 KiB
Markdown
# Airflow Configuration
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## 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`**: [**दस्तावेज़ों के अनुसार**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) कुछ विकल्प हो सकते हैं जो यह निर्धारित करते हैं कि कौन 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) का उपयोग करता है (से [**यहाँ**](https://cloud.google.com/composer/docs/access-airflow-api)).
|
|
- `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'
|
|
```
|
|
{{#include ../../banners/hacktricks-training.md}}
|