【问题标题】:How to handle sensitive configuration information when deploying app-engine applications?部署应用引擎应用程序时如何处理敏感配置信息?
【发布时间】:2015-07-10 08:51:57
【问题描述】:

示例:我有一个应用程序需要访问提供身份验证令牌的 API

myApi = MyApi(token=my_private_sensible_token)

我想避免在作为项目一部分的配置文件中包含该私有令牌。

想到的一个解决方案是将与此服务的交互隔离在一个单独的代理应用程序中,该代理应用程序由有限数量的授权人员维护。 App-engine 允许通过身份验证保护处理程序,我可以在代理中轻松地只允许来自授权的 app-engine 消费者应用程序的调用。

我能想到的不同解决方案,在某些时候都使这个私有令牌在消费者应用程序内存中可用,这可能允许恶意用户(维护消费者)编写一个处理程序,打印出这个秘密令牌,在某些情况下应用程序检索的奇特方式。

你有更好的建议吗?

【问题讨论】:

  • 问题是,无论您做什么,只要代码能够获取它,有权访问该代码的恶意开发人员也将能够从您的代理获取它。
  • @ZigMandel 使用代理方法只有代理知道与服务交互的秘密令牌,消费者不需要知道它。代理应由一小部分授权人员维护
  • 其他开发者仍然可以通过伪装成有效用户来滥用代理。但是是的,代理减少了隐藏实际秘密的开发人员数量(但不是滥用)
  • @ZigMandel 好的,清楚

标签: python security google-app-engine deployment webapp2


【解决方案1】:

另一种可能的方法是拥有应用程序的 2 个副本(实际上 2 个碰巧具有相同代码的不同应用程序),每个应用程序都有自己的 app_ID、配置文件(s) 等:

  • 一个用于开发/登台,可通过更大的开发访问 团队
  • 一个用于生产 - (可能从同一个 SCM 存储库克隆/分叉,也许是私有分支?)只能由受信任的开发人员访问,并且配置文件的内容被覆盖/更新以用于生产部署

除了限制对生产凭据的访问之外,此类设置还可以提供其他好处,例如:

  • 能够使用 CI 系统,包括在非常接近生产环境的自动部署
  • 对生产部署进行更严格的控制

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    相关资源
    最近更新 更多