Python 旋转加密密钥

Python 旋转加密密钥,python,airflow,Python,Airflow,嘿,伙计们,我正在研究如何在Airflow中旋转加密密钥,对他们位于此处的文档有点困惑: 步骤如下: 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

嘿,伙计们,我正在研究如何在Airflow中旋转加密密钥,对他们位于此处的文档有点困惑:

步骤如下:

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文件中。谢谢。

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

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

更改密钥将导致现有凭据的解密失败 失败

差不多

fernet_key = $FERNET_KEY

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

如果查看,它将使用,这需要两个fernet键,在本例中,这两个键必须作为气流fernet键配置参数的值(用逗号分隔)。因此:

  • 生成一个新的fernet密钥
  • 停止k8s中的气流计划程序服务
  • 将fernet键的值设置为
    ThisIsObviouslyAFakeNEWFernetKeyUJ_65Hgdjsmg=,ThisIsObviouslyAFakeOLDFernetKeyOP_78KufGSd3=
    (新fernet键,旧fernet键)
  • 重新启动计划程序或部署整个气流
  • Ssh进入调度程序pod并运行
    fernet键
  • 退出pod并再次关闭调度程序
  • 气流\uuuuuuu芯\uuuuuuuuu FERNET\u键的值设置为
    
    这是新的FernetKeyuj_65Hgdjsmg=
    (仅限新的fernet 键)
  • 重新启动计划程序服务
  • 这将使用新的fernet密钥重新加密所有变量和连接,而无需重置metastore数据库