Skip to content

Secrets from Airflow configuration are not masked in task logs #63921

@kosteev

Description

@kosteev

Apache Airflow version

3.1.8

If "Other Airflow 3 version" selected, which one?

No response

What happened?

Secrets from Airflow configuration are not masked in task logs if printed with stdlib or structlog.

This has to be culprit:

What you think should happen instead?

Secrets should be masked.

How to reproduce

  1. Run locally breeze
  2. Deploy DAG
import datetime from airflow import DAG from airflow.configuration import conf from airflow.providers.standard.operators.python import PythonOperator import structlog structlog_logger = structlog.get_logger() def _print(): for section, key in [ ("webserver", "secret_key"), ("api", "secret_key"), ("api_auth", "jwt_secret"), ]: print("print", section, key, conf.get(section, key, fallback=None)) structlog_logger.info("structlog " + section + " " + key + " " + conf.get(section, key, fallback="")) with DAG( dag_id="print_secrets", schedule=None, start_date=datetime.datetime(2010, 1, 1), catchup=False, ) as dag: operator = PythonOperator( dag=dag, task_id="task", python_callable=_print, ) 
  1. Observe secrets visible in the task logs (Airflow UI)
    Example:
Image

Operating System

Linux

Versions of Apache Airflow Providers

No response

Deployment

Docker-Compose

Deployment details

No response

Anything else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:corearea:loggingkind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yetpriority:highHigh priority bug that should be patched quickly but does not require immediate new release

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions