我已从项目的源代码和存储库中删除了API凭据和密钥,现在正在本地环境中的配置文件中存储和应用它们。
将设置部署并应用到生产环境的最佳方法是什么?我的第一个想法是写一个脚本:
除了在上传过程中对我的互联网流量进行窥探,或者我的本地计算机遭到入侵时,这种方法有什么问题吗?
这是一个Django项目。我正在使用django-environ来读取/管理我的设置和Fabric来上传配置文件并在部署期间远程运行命令到我位于AWS上的服务器(我目前不想使用Elastic Beanstalk)。
谢谢!
答案 0 :(得分:0)
有数百万种方式进行半部署 - "安全"然而,使它完全安全是非常困难的(如果不是不可能的话)。原因很简单。您的代码需要访问敏感信息才能运行。您可以根据需要对信息进行模糊处理,但最终如果系统受到损害,入侵者可以检查正在运行的进程,从而提取所有敏感信息。
话虽如此,只要您遵循所有标准部署实践(例如使用不同的非root用户运行应用程序等),我就不会通过使用配置文件启动您的应用程序来看到任何根本错误。
我认为12 factor重构的应用程序被认为是业界的最佳实践。第3条规则非常清楚地说明了应该如何配置应用程序:
在环境中存储配置
在env变量中存储配置可以非常轻松地在许多环境中部署相同的应用程序,而无需更改任何代码。这样做可能并非100%安全,但我认为如果您采取任何正常的预防措施,例如以不同的用户身份运行服务器等,在大多数情况下您应该没问题。
显然,所有这些都取决于您的应用程序的类型。如果您的应用程序处理超敏感数据,那么我建议调查有关如何在安全性严格的环境中部署应用程序的其他方法。然而,这可能超出了你的问题的范围,并且在我的知识领域之外,所以也许在SO的其他聪明人将能够提供帮助。