पाठ 11 / 25
Connections, Variables और Secrets
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 कभी नहीं।
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")त्वरित जाँच: DAG के लिए database password कहाँ रहना चाहिए?
- सार्वजनिक repository में
- DAG फ़ाइल में hard-coded
- Task के नाम में
- Connection या secrets backend में
Answer
Connection या secrets backend में — Connections और secrets backends credentials को source control से बाहर रखते हैं।