屏蔽敏感数据¶
默认情况下,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")
...
必须在生成任何日志/输出之前设置掩码才能生效。