前言
Apache Airflow
分布式任务调度框架默认将密码等敏感信息以明文形式存储到元数据(Metadata)库中,这会带来一定的安全隐患。Airbnb 官方也强烈建议开发者安装cryptography
库以实现敏感信息的加密存储。
另外,如果不安装cryptography
加密库,Airflow 的许多高级功能都是无法使用的。
为Airflow
加装cryptography
库
Apache Airflow 默认不会安装cryptography
库,我们需要手动安装并配置。
首先,使用pip
命令来安装上cryptography
库。
$ pip install apache-airflow[crypto]
代码清单:
pip
安装apache-airflow[crypto]
第二步,使用Python
代码生成一枚fernet_key
。fernet_key
的格式必须为base64-encoded
,长度必须为32-bytes
。
$ python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
...
代码清单:
Python
生成fernet_key
然后,配置 Airflow 使用fernet_key
。将第二步得到的秘钥写入到**配置文件airflow.cfg
**中,也可以额外设置一枚环境变量。
$ vim airflow.cfg
...
fernet_key = <fernet_key>
...
代码清单:写
airflow.cfg
配置文件
$ export AIRFLOW__CORE__FERNET_KEY='<fernet_key>'
代码清单:设置
AIRFLOW__CORE__FERNET_KEY
环境变量
最后,重启 Airflow 服务「scheduler
,webserver
」即可。
参考资料
Apache Airflow
官方文档:https://airflow.apache.org/howto/secure-connections.html为
Airflow
生成fernet_key
:https://bcb.github.io/airflow/fernet-key