当前位置: 首页 > 知识库问答 >
问题:

Django+AWS秘密管理器密码循环

皇甫喜
2023-03-14

我有一个Django应用程序,可以从AWS秘密管理器中获取DB秘密。它包含所有DB参数,如用户名、密码、主机、端口等。当我在EC2上启动Django应用程序时,它会成功地从秘密管理器中检索秘密并建立一个DB连接。

现在的问题是我有一个密码循环策略设置30天。为了测试流量,目前,我已经设置为1天。每次密码旋转,我的Django应用程序就会失去DB连接。因此,我必须手动重新启动应用程序,以允许应用程序从Secret Manager获取新的DB凭据。

是否有一种方法可以自动进行秘密获取,而无需手动重新启动服务器。?一种可能的方法是触发自动重启服务器的AWS、CodeDeploy或类似服务。但是,如果我采用这种方法,将会有一些停机时间。

任何其他方法,可以无缝地工作,没有任何停机时间。

共有1个答案

谷梁向荣
2023-03-14

如果旧的DB凭据在循环期间立即失效,那么在没有停机时间的情况下很难做到这一点。一种选择是让应用程序捕捉凭据错误,并(尝试)在此时从Secrets Manager中获取新的秘密,创建一个新的DB连接。另一个选择是拥有两个有效的用户/密码对,在创建新的用户/密码对时保持旧的有效。我不确定自动旋转是否给了你这个选项。然后你可以重新启动你的应用程序,因为你喜欢。要做到这一点而不出现短暂的中断,可能需要一个负载均衡器和多个正在运行的应用程序实例,以便在终止旧的应用程序实例之前使用新的CRED来提升一个实例。

 类似资料:
  • 我们在AWS环境中部署了完整的应用程序,我们发现AWS秘密管理器是存储数据库和其他一些组件的秘密的正确选择。

  • 我创造了一个“其他类型的秘密”。我还在这个模板中添加了一个作为give的lambda函数。现在,当我试图立即旋转时,它会说“Fail to Rotion the secret”test_secret_Rothing“以前的旋转没有完成。将重新尝试该旋转。”轮转的时间是一天,即使第二天我看到分泌物也没有更新。我只是添加了那个lambda函数。我需要定义任何参数或任何其他lambda设置吗。我还在文档

  • 我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。

  • 有人知道在弹性豆茎中传递一个秘密值作为环境变量是可能的吗?另一个选择显然是在我们的代码库中使用sdk,但我想先探讨环境变量方法 干杯Damien

  • 我在帐户a中存储了一个密钥(USRFTP),我想从EC2框中使用帐户B中的角色ASHISHROLE访问这个密钥。我正在运行python代码来获取密钥,如下所示,在密钥中使用资源策略,KMS策略如下所示,但仍然得到这个问题 clienterRor:调用GetSecretValue操作时发生错误(AccessDeniedException):User:ARN:AWS:STS::AccountB:假定-

  • null 例如,轮转设定为7天。所以我在我的应用程序中编码每7天刷新一次...不好,因为很难精确计时。 另一种方法是,如果我的应用程序面临身份验证异常,只需刷新密码,建立一个新的连接,并重试应用程序逻辑。 行业标准是什么?