【发布时间】:2017-10-18 23:13:24
【问题描述】:
是否可以使 Google App Engine 服务仅在 Google Cloud 内部网络上可用,如果可以,如何实现?我有一些不应该公开的微服务(仅供其他服务使用)。
我知道你可以配置防火墙,但是:
- 应用引擎防火墙适用于所有服务
- 我不知道使用 VPC 允许应用引擎服务使用什么 IP 范围,因为应用引擎仅适用于域,并且没有指定它使用的范围。
【问题讨论】:
是否可以使 Google App Engine 服务仅在 Google Cloud 内部网络上可用,如果可以,如何实现?我有一些不应该公开的微服务(仅供其他服务使用)。
我知道你可以配置防火墙,但是:
【问题讨论】:
如果您使用的是标准环境服务,则可以使用应用 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。
【讨论】: