【问题标题】:How to securely deploy environment settings via config file?如何通过配置文件安全地部署环境设置?
【发布时间】:2015-09-25 15:00:34
【问题描述】:

我已从项目的源代码和存储库中删除 API 凭据和密钥,现在正在本地环境中的配置文件中存储和应用它们。

将设置部署和应用到我的生产环境的最佳方式是什么?我的第一个想法是写一个脚本来:

  • 将配置文件从我的本地机器上传到生产服务器
  • 读取配置文件并在生产服务器上应用设置,而不记录设置或将它们暴露给 bash 历史记录
  • 从生产服务器中删除配置文件

除了在上传期间可能窥探我的 Internet 流量,或者我的本地计算机受到威胁之外,这种方法有什么问题吗?

这是一个 Django 项目。我正在使用 django-environ 读取/管理我的设置,并使用 Fabric 上传配置文件并在部署到位于 AWS 上的服务器期间远程运行命令(我目前对使用 Elastic Beanstalk 不感兴趣)。

谢谢!

【问题讨论】:

    标签: django security deployment fabric


    【解决方案1】:

    如何使其安全

    有数百万种方法可以半“安全”地进行部署,但是要使其完全安全是极其困难的(如果不是不可能的话)。原因很简单。您的代码需要访问敏感信息才能运行。您可以根据需要对信息进行模糊处理,但最终如果系统受到威胁,入侵者可以检查正在运行的进程,从而提取所有敏感信息。

    话虽如此,只要您遵循所有标准部署实践(例如使用不同的非 root 用户运行应用等),使用配置文件启动您的应用,我认为没有任何根本性的错误。

    最佳部署方式

    我认为12 factor 重构的应用程序被认为是行业中的最佳实践。第三条规则非常清楚地说明了您应该如何配置您的应用程序:

    在环境中存储配置

    将配置存储在 env 变量中可以非常容易地在许多环境中部署相同的应用程序,而无需更改任何代码。这样做可以说不是 100% 安全,但我认为如果你采取任何正常的预防措施,比如以不同的用户身份运行服务器等,在大多数情况下你应该没问题。

    显然,这一切都取决于您的应用程序的类型。如果您的应用程序处理超级敏感数据,那么我建议研究如何在安全严格的环境中部署应用程序的其他方法。但是,这可能超出了您的问题范围和我的知识范围,所以也许 SO 的其他聪明人能够提供帮助。

    【讨论】:

    • 请重新阅读问题。我已经完成了将配置存储在环境变量中的步骤。我在问我描述的将这些环境变量从本地环境部署到生产环境的过程是否安全,或者在合理范围内是否有更好的选择。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 2021-04-28
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多