旋转加密密钥

2024-04-26 01:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,伙计们,我正在研究Airflow中的旋转加密密钥,对他们位于此处的文档感到有点困惑:https://airflow.readthedocs.io/en/stable/howto/secure-connections.html

步骤如下:

Set fernet_key to new_fernet_key,old_fernet_key

Run airflow rotate_fernet_key to re-encrypt existing credentials with the new fernet key

Set fernet_key to new_fernet_key

我对我们第一步应该做什么感到困惑。应该将fernet_键设置为新fernet_键和旧fernet_键。另外,我想知道是否有可能编写一个脚本来自动化所有这些,这样我就可以简单地运行该文件,并且它可以正确地旋转加密密钥,而不是在每次需要时生成一个新的\u fernet\u密钥并手动将其放入aiffort.cfg文件中。多谢各位


Tags: 文件tokey文档httpsionewreadthedocs
2条回答

考虑到文档确实有点混乱,我将解释如何在Kubernetes集群上运行的气流中旋转fernet键(我使用的是版本1.10.14)

如果查看how the fernet key is set in AIRFLOW,它使用MultiFernet class,这需要两个fernet键,在这种情况下,必须将它们作为fernet键配置参数的值(用逗号分隔)提供。因此:

  1. 生成一个新的fernet密钥explained in the documentation
  2. 停止k8s中的气流计划程序服务
  3. 将fernet键的值设置为ThisIsObviouslyAFakeNEWFernetKeyUJ_65Hgdjsmg=,ThisIsObviouslyAFakeOLDFernetKeyOP_78KufGSd3=(新的fernet键,旧的fernet键)
  4. 重新启动计划程序或部署整个气流
  5. Ssh进入调度程序pod并运行airflow rotate-fernet-key
  6. 退出pod并再次关闭调度程序
  7. AIRFLOW__CORE__FERNET_KEY的值设置为 ThisIsObviouslyAFakeNEWFernetKeyUJ_65Hgdjsmg=(仅新蕨类植物) 键)
  8. 重新启动计划程序服务

这将使用新的fernet密钥重新加密所有变量和连接,而无需重置metastore数据库

最佳做法是将其外部设置为env_var。 然后,在重新启动系统时,根本不需要旋转

正如文档中所述,旋转fernet关键点是有风险的,因为:

changing the key will cause decryption of existing credentials to fail.

差不多

fernet_key = $FERNET_KEY

相关问题 更多 >