# Connections, Variables और Secrets — Apache Airflow: Data Pipelines का Orchestration

Source: https://www.geekswithgeeks.com/hi/airflow/data-connections

> Credentials को Connections या secrets backend में रखें, और DAG कोड से बाहर रखें।

## Credentials DAG files में नहीं होते

**Connection** बाहरी system तक पहुँचने का तरीक़ा (host, login, password, extras) `warehouse_db` जैसे नाम के अंतर्गत रखता है; operators और **hooks** वह नाम लेते हैं, इसलिए DAG कोड में कभी secrets नहीं होते। **Variable** छोटा configuration मान रखता है। दोनों UI, CLI, environment variables (`AIRFLOW_CONN_WAREHOUSE_DB`) से सेट हो सकते हैं, या, production के लिए सबसे अच्छा, AWS Secrets Manager, Google Secret Manager या HashiCorp Vault जैसे **secrets backend** से पढ़े जा सकते हैं। Connections देखने वालों को सीमित करें, क्योंकि passwords masked होने पर भी admins के लिए पहुँच योग्य हैं।

## Environment variable के रूप में connection

`AIRFLOW_CONN_` के बाद का नाम connection ID (`warehouse_db`) बन जाता है। मान एक URI है। यहाँ placeholders उपयोग करें, दस्तावेज़ या Git में असली passwords कभी नहीं।

```bash
export AIRFLOW_CONN_WAREHOUSE_DB="postgresql://loader:<password>@warehouse.internal:5432/analytics"

# in a DAG, only the ID appears:
# PostgresOperator(task_id="load", postgres_conn_id="warehouse_db", sql="sql/load_orders.sql")
```

**Quiz:** DAG के लिए database password कहाँ रहना चाहिए?

- [ ] सार्वजनिक repository में
- [ ] DAG फ़ाइल में hard-coded
- [ ] Task के नाम में
- [x] Connection या secrets backend में

*Answer:* Connection या secrets backend में. Connections और secrets backends credentials को source control से बाहर रखते हैं।
