屏蔽敏感数据

默认情况下,Airflow 会在任务日志、变量和 UI 的“渲染字段”视图中显示时,屏蔽连接密码以及来自连接额外(JSON)字段的敏感变量和密钥。

它通过查找输出中出现的特定_值_来实现这一点。这意味着,如果您的连接密码为 a,则日志中字母 a 的每个实例都将替换为 ***

要禁用屏蔽,您可以将 hide_sensitive_var_conn_fields 设置为 false。

自动屏蔽由连接或变量访问触发。这意味着,如果您通过 XCom 或任何其他侧通道传递敏感值,则在下游任务中打印时不会对其进行屏蔽。

敏感字段名称

启用屏蔽后,Airflow 将始终屏蔽任务访问的每个连接的密码字段。

如果名称包含以下任何词语,它还将屏蔽变量的值或连接额外 JSON blob 的字段:(“access_token”、“api_key”、“apikey”、“authorization”、“passphrase”、“passwd”、“password”、“private_key”、“secret”、“token”)。此列表也可以扩展。

[core]
sensitive_var_conn_names = comma,separated,sensitive,names

添加您自己的掩码

如果要屏蔽上述方法尚未屏蔽的其他密钥,则可以使用 mask_secret 函数在 DAG 文件或运算符的 execute 函数中执行此操作。例如

@task
def my_func():
    from airflow.utils.log.secrets_masker import mask_secret

    mask_secret("custom_value")

    ...

class MyOperator(BaseOperator):
    def execute(self, context):
        from airflow.utils.log.secrets_masker import mask_secret

        mask_secret("custom_value")

        ...

必须在生成任何日志/输出之前设置掩码才能生效。

此条目有帮助吗?