Skip to main content

airflow filesystem secret backend using fernet

Project description

airflow-fernet-secrets

License: Apache-2.0 github action PyPI version python version

how to install

pip install airflow-fernet-secrets
# or
# pip install airflow-fernet-secrets[asyncio]

how to use

config

AIRFLOW__SECRETS__BACKEND=airflow.providers.fernet_secrets.secrets.secret_manager.FernetLocalSecretsBackend
# or
# AIRFLOW__SECRETS__BACKEND=airflow_fernet_secrets.secrets.server.ServerFernetLocalSecretsBackend
#
AIRFLOW__PROVIDERS_FERNET_SECRETS__SECRET_KEY=# some fernet key
# ex: 2eu7W6ULuYxnUB4Uz31IYddkdgboa5kLP24bYtegll0=
# or
# AIRFLOW__PROVIDERS_FERNET_SECRETS__SECRET_KEY_CMD=# some fernet key command
# ex: cat /dev/run/secret_key
# or
# AIRFLOW__PROVIDERS_FERNET_SECRETS__SECRET_KEY_SECRET=# some fernet key file
# ex: /dev/run/secret_key
AIRFLOW__PROVIDERS_FERNET_SECRETS__BACKEND_FILE=# some sqlite file path
# ex: /tmp/backend
# or
# AIRFLOW__PROVIDERS_FERNET_SECRETS__BACKEND_FILE_CMD=# some sqlite file path command
# ex: cat /tmp/where_is_backend
# or
# AIRFLOW__PROVIDERS_FERNET_SECRETS__BACKEND_FILE_SECRET=# some sqlite file path file
# ex: /tmp/where_is_backend

example dag

from __future__ import annotations

from typing import TYPE_CHECKING

from pendulum import datetime

from airflow.decorators import dag, task
from airflow.providers.fernet_secrets.operators.sync import DumpSecretsOperator

if TYPE_CHECKING:
    from airflow_fernet_secrets.typings import SecretsParameter


@dag(start_date=datetime(2024, 1, 1), catchup=False, schedule=None)
def dump_connection():
    @task.load_fernet()
    def load_connection() -> SecretsParameter:
        return {"conn_ids": "some_conn_id"}

    dump = DumpSecretsOperator(task_id="dump", fernet_secrets_conn_ids="some_conn_id")
    load = load_connection()
    _ = dump >> load


dump_connection()

TODO

  • exceptions
  • mysql
  • mssql(pymssql)
  • more tests

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page