Skip to content

feat: external secrets resolution (provider-neutral; AWS reference) for Connections/Variables #811

Description

@alissonrosa-lang

Summary

Support an external secrets backend (starting with AWS Secrets Manager) so Connections and Variables can be resolved directly from the backend, instead of only living in the control-plane vault.

Today

Leoflow stores Variables/Connections in the control plane (encrypted at rest by secretKey, ADR 0019/0021), created via the Airflow-compatible UI (Admin → Variables/Connections) or the API (POST /api/v2/connections). There is no configurable external secrets backend — I checked the reference/helm/docs and found none. The concept only appears as a planning note (project/planning/airflow-connector-compatibility.md, "not yet ADR 0036 ... before any code lands").

Gap vs Airflow

Airflow 3.x ships secrets backends (e.g. SecretsManagerBackend, Vault), so a Connection/Variable can be sourced directly from the external store — single source of truth, no duplication, no bootstrap step.

Use case (real)

A platform that provisions all secrets in AWS Secrets Manager via Terraform (values never in git; ESO delivers the chart secrets). Connections like a Databricks serverless warehouse (used by dbt_group) already live in SM. Today that connection has to be re-created in leoflow's vault (manually in the UI, or a bootstrap that reads SM and POSTs to the API). An external SM backend would let leoflow resolve it from SM directly — no duplication, fully declarative/IaC.

Proposal

  • An Airflow-compatible secrets backend chain for Connection/Variable resolution, configurable via leoflow.yaml/Helm (e.g. LEOFLOW_SECRETS_BACKEND + backend_kwargs), starting with AWS Secrets Manager (keyless auth via IRSA/Pod Identity, matching ADR 0035/0056).
  • Resolution order: cache → external backend(s) → control-plane vault (parity with Airflow's default chain).
  • Feeds ADR 0036.

Benefit

SM as single source of truth; no secret duplication in the vault; IaC-friendly (secret lives only in SM + Terraform state); parity with the Airflow secrets-backend model.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions