Learning Platform
Глоссарий Troubleshooting
Урок 11.01 · 10 мин
Продвинутый
FernetSecrets BackendVaultConnections

Connections, Variables, Secrets — обзор модуля

Connections и Variables — основные механизмы хранения configuration в Airflow. Connections содержат credentials (DB passwords, API keys) — поэтому шифруются Fernet. Secrets Backends позволяют интегрироваться с Vault / AWS Secrets Manager / GCP Secret Manager для централизованного управления.

Уроки модуля

#УрокЧто внутри
01Обзор модуляТекущий урок
02Connections fundamentalsConnection URI format, типы, fields
03Fernet encryption deepAES-128-CBC + HMAC, key rotation
04Variables и lookup orderBackend → ENV → DB priority
05Secrets Backends — VaultVaultBackend setup, dynamic secrets
06Secrets Backends — AWS / GCP / AzureSecretsManagerBackend, GoogleSecretManagerBackend
07Caching strategyuse_cache, TTL, top-level Variable.get pitfall

Lookup order (важно!)

1. Secrets Backend (если настроен)
2. Environment variable (AIRFLOW_CONN_<NAME>, AIRFLOW_VAR_<NAME>)
3. Metadata DB (encrypted с Fernet)

Fernet encryption

  • AES-128-CBC + HMAC-SHA256, симметричный
  • Ключ в airflow.cfg fernet_key или env AIRFLOW__CORE__FERNET_KEY
  • Key rotation: несколько ключей через запятую — new_key,old_key. Новые шифруются первым, старые расшифровываются любым.
  • Если ключ потерян → connection passwords unrecoverable.

Secrets Backends

[secrets]
backend = airflow.providers.hashicorp.secrets.vault.VaultBackend
backend_kwargs = {
  "url": "https://vault.example.com",
  "connections_path": "airflow/connections",
  "variables_path": "airflow/variables",
  "auth_type": "kubernetes",
  "role_id": "airflow-role"
}

Killer pitfall

Top-level Variable.get('my_var') в DAG-файле выполняется на каждом DAG parse → постоянный hit на Vault → перегрузка backend.

Fix:

  1. Перенести Variable.get внутрь task callable
  2. Или включить [secrets] use_cache = True (default в 3.x)
  3. Или использовать ENV variables для DAG-config

Killer takeaway

В production никогда не храните real secrets в Variables/Connections через UI — используйте Secrets Backend. UI-driven configuration хорош для dev, но требования audit, key rotation, RBAC, dynamic secrets закрывает только Vault/SM.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 7