Skip to content

Commit a6fedee

Browse files
authored
Strip off shared secrets masker's dependency from conf (#60037)
1 parent 35ba1b0 commit a6fedee

3 files changed

Lines changed: 16 additions & 3 deletions

File tree

airflow-core/src/airflow/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,17 +612,21 @@ def _configure_secrets_masker():
612612
if sensitive_variable_fields:
613613
sensitive_fields |= frozenset({field.strip() for field in sensitive_variable_fields.split(",")})
614614

615+
hide_sensitive_var_conn_fields = conf.getboolean("core", "hide_sensitive_var_conn_fields")
616+
615617
core_masker = secrets_masker_core()
616618
core_masker.min_length_to_mask = min_length_to_mask
617619
core_masker.sensitive_variables_fields = list(sensitive_fields)
618620
core_masker.secret_mask_adapter = secret_mask_adapter
621+
core_masker.hide_sensitive_var_conn_fields = hide_sensitive_var_conn_fields
619622

620623
from airflow.sdk._shared.secrets_masker import _secrets_masker as sdk_secrets_masker
621624

622625
sdk_masker = sdk_secrets_masker()
623626
sdk_masker.min_length_to_mask = min_length_to_mask
624627
sdk_masker.sensitive_variables_fields = list(sensitive_fields)
625628
sdk_masker.secret_mask_adapter = secret_mask_adapter
629+
sdk_masker.hide_sensitive_var_conn_fields = hide_sensitive_var_conn_fields
626630

627631

628632
def configure_action_logging() -> None:

shared/secrets_masker/src/airflow_shared/secrets_masker/secrets_masker.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def __init__(self):
196196
super().__init__()
197197
self.patterns = set()
198198
self.sensitive_variables_fields = []
199+
self.hide_sensitive_var_conn_fields = True
199200

200201
@classmethod
201202
def __init_subclass__(cls, **kwargs):
@@ -527,9 +528,7 @@ def should_hide_value_for_key(self, name):
527528
528529
Name might be a Variable name, or key in conn.extra_dejson, for example.
529530
"""
530-
from airflow.configuration import conf
531-
532-
if isinstance(name, str) and conf.getboolean("core", "hide_sensitive_var_conn_fields"):
531+
if isinstance(name, str) and self.hide_sensitive_var_conn_fields:
533532
name = name.strip().lower()
534533
return any(s in name for s in self.sensitive_variables_fields)
535534
return False

shared/secrets_masker/tests/secrets_masker/test_secrets_masker.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,16 @@ def test_hiding_config(self, sensitive_variable_fields, key, expected_result):
474474
configure_secrets_masker_for_test(masker, sensitive_fields=sensitive_fields)
475475
assert expected_result == masker.should_hide_value_for_key(key)
476476

477+
@pytest.mark.parametrize("hide_sensitive_var_conn_fields", [True, False])
478+
def test_hiding_disabled(self, hide_sensitive_var_conn_fields):
479+
"""Test that hiding can be disabled via hide_sensitive_var_conn_fields."""
480+
masker = SecretsMasker()
481+
configure_secrets_masker_for_test(masker)
482+
483+
masker.hide_sensitive_var_conn_fields = hide_sensitive_var_conn_fields
484+
assert masker.should_hide_value_for_key("password") is hide_sensitive_var_conn_fields
485+
assert masker.should_hide_value_for_key("GOOGLE_API_KEY") is hide_sensitive_var_conn_fields
486+
477487

478488
class ShortExcFormatter(logging.Formatter):
479489
"""Don't include full path in exc_info messages"""

0 commit comments

Comments
 (0)