如何隐藏Apache Airflow连接与变量模块中的敏感数据?
解决Airflow Web界面显示敏感AWS密钥的问题
刚好处理过类似的需求,既然已经启用了身份认证,接下来可以通过以下几种方式彻底屏蔽敏感密钥的显示,同时保证Airflow正常使用这些凭证:
1. 启用Airflow内置的加密与敏感字段隐藏
Airflow自带Fernet加密功能,不仅能加密存储敏感数据,还会在Web界面自动屏蔽这些字段的明文显示:
- 生成Fernet密钥:在终端执行以下命令生成加密密钥:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" - 配置Airflow:打开
airflow.cfg文件,找到[core]部分,设置:fernet_key = 你刚才生成的密钥字符串 hide_sensitive_variable_fields = True - 重启服务:重启Airflow Webserver和Scheduler,使配置生效:
完成后,连接模块里的Access Key、Secret Key等敏感字段会被替换为airflow webserver restart airflow scheduler restart***,存储在数据库里的也是加密后的内容。
2. 使用AWS Secrets Manager托管敏感凭证
如果不想把任何敏感信息存在Airflow数据库里,可以直接用AWS Secrets Manager来存储AWS密钥,Airflow只存储凭证的引用:
- 在AWS Secrets Manager中创建一个包含
aws_access_key_id和aws_secret_access_key的秘密; - 在Airflow的AWS连接中,不需要填写
Login和Password字段,而是在Extra里添加以下内容:
这样Airflow会自动从Secrets Manager拉取密钥,Web界面里只会显示ARN,完全看不到实际的密钥内容。{"aws_secret_arn": "arn:aws:secretsmanager:你的区域:账号ID:secret:你的秘密名称"}
3. 验证配置效果
设置完成后,进入Airflow Webserver的连接模块,查看对应的AWS连接:
- 敏感字段(如Password、Extra里的密钥)会显示为
***; - 如果使用了Secrets Manager,Extra里只有ARN信息,没有明文密钥。
注意:如果你的Airflow版本低于2.0,hide_sensitive_variable_fields参数可能不存在,建议升级到稳定的2.x版本,获得更好的安全支持。
内容的提问来源于stack exchange,提问作者MJK
相关产品推荐
相关产品推荐

