【问题标题】:Google App Engine services communicating and available on internal network onlyGoogle App Engine 服务只能在内部网络上通信并可用
【发布时间】:2017-10-18 23:13:24
【问题描述】:

是否可以使 Google App Engine 服务仅在 Google Cloud 内部网络上可用,如果可以,如何实现?我有一些不应该公开的微服务(仅供其他服务使用)。

我知道你可以配置防火墙,但是:

  • 应用引擎防火墙适用于所有服务
  • 我不知道使用 VPC 允许应用引擎服务使用什么 IP 范围,因为应用引擎仅适用于域,并且没有指定它使用的范围。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    如果您使用的是标准环境服务,则可以使用应用 ID 来验证此类服务中的请求。来自Asserting identity to other App Engine apps

    如果您想确定 App Engine 应用的身份 向您的 App Engine 应用发出请求,您可以使用该请求 标头X-Appengine-Inbound-Appid。此标头添加到 URLFetch 服务请求并且用户不可修改,因此它 安全地指示请求应用程序的 ID(如果存在)。

    为了将此标头添加到请求中,应用程序制作 该请求必须告诉 URLFetch 服务不要遵循重定向。 即必须将fetchfollow_redirects参数设置为 False。 App Engine 然后会自动将标头添加到 HTTP 回应。

    在您的应用程序处理程序中,您可以通过阅读来检查传入的 ID X-Appengine-Inbound-Appid 标头并将其与列表进行比较 允许发出请求的 ID。

    **Note:** The **X-Appengine-Inbound-Appid** header is only set if the call
    is made to the **appspot.com** domain. If the app has a custom domain, 
    this header will not be set.
    

    但是,如果您使用的是 flex 环境,则此方法不起作用,请参阅 App Engine Flexible + App Identity (Python)

    使用应用程序自己的服务帐户进行身份验证可能是 flex 环境需要考虑的另一件事 - 但我还没有尝试过。见Service Account for the App Engine Flexible Environment

    【讨论】:

    • 感谢您的麻烦我正在使用弹性和标准的混合,所以我想我需要一个同时满足两者的解决方案。
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2017-11-12
    • 2013-10-31
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多