【问题标题】:How to block AppEngine's _ah/start and _ah/stop routes from being visible to the outside world如何阻止 AppEngine 的 _ah/start 和 _ah/stop 路由对外界可见
【发布时间】:2017-05-14 23:55:18
【问题描述】:

我的“灵活”应用中有 _ah/start 和 _ah/stop 路线。我知道 GAE 容器会在应用启动和关闭时调用这些端点。

部署我的应用程序后,我可以在舒适的沙发上亲自使用它们。 这当然是没有意义的,因为随机的陌生人不能成为应用实例何时起起落落的仲裁者。如何配置 AppEngine 以阻止将这两条路由发布到外部世界?或者我的工作是执行这两条路由来检查 IP 地址或寻找只有 GAE 可以发送的标头?

【问题讨论】:

    标签: google-app-engine app-engine-flexible


    【解决方案1】:

    所以 flex 不使用 /_ah/* 路径,因此不会隐藏它们。遗憾的是,我们的文档不一致。此处正确记录了https://cloud.google.com/appengine/docs/flexible/python/migrating,但(目前)https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build 不正确。文档更新正在审核中,很快就会公开。

    为混乱道歉。

    【讨论】:

    • 感谢您的坦率 - 继续努力。我想我会编写一个传统的关机钩子
    • 我很困惑,弗兰克。我刚刚看了看,“健康检查请求”部分暗示 _ah/health 确实适用于 flex。有点违背你的“所以 flex 不使用 /_ah/*”的声明。
    • 嗨,保罗。你是正确的 '/_ah/health' 仍然用于健康检查。它也没有被阻止。
    • 嗨 Zach - /_ah/stop 怎么样?是不是被屏蔽了?如果不是,我可以看到一个随机的陌生人在一个应用程序上点击那个端点,该应用程序有代码附加到该路由,作者认为在谷歌的容器基础设施上可以调用它。
    【解决方案2】:

    基于此页面: https://cloud.google.com/appengine/docs/flexible/go/how-requests-are-handled

    当请求进入 GCP 时,匹配 X-Google-*X-Appengine-* 的标头会被移除。然后 Appengine 可能会添加与这些模式匹配的标头,因此如果您的处理程序检测到任何此类标头,我认为可以安全地假设请求来自 GAE 而不是某个随机客户端。

    您可以转储您获得的所有标头并查看是否有任何有趣的标头,然后从公共客户端尝试发送请求并将此类标头设置为某个值,并查看它是否先被清理,然后由 GAE 再次设置.任何此类标头必须首先清理,否则任何人都可以将它们发送到您的应用。

    我不会依赖 IP 地址。

    【讨论】:

      【解决方案3】:

      所以我很难真正理解 /_ah/stop 的实际工作原理,文档不清楚,我正在为这篇文章添加一个答案以供进一步参考,因为它是谷歌搜索中首先出现的那个。

      /_ah/stop 端点仅适用于标准实例,使用手动扩展(它位于表的最后一列https://cloud.google.com/appengine/docs/standard/nodejs/how-instances-are-managed 仅适用于手动扩展 ,乍一看并不简单)。

      在我的用例中,我有一个包含两个服务的应用程序,一个 API(自动缩放)和一个 Worker(手动缩放),我吓坏了,因为我可以在我的 API 上调用 /_ah/stop 路由,从而杀死它。它适用于我的工作人员,因为在这个用例中,路由受 GAE 保护。

      如果 GAE 团队的任何人读到这篇文章,在任何情况下阻止 /_ah/* 路由可能会很好,因为我现在担心有一天我们会切换到另一种环境,我们会让我们暴露于如果我们忘记更改配置,可能会造成安全威胁。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-01-18
        • 2019-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多