如何保护由 GCS 触发的 App Engine Pub/Sub Push Endpoint?

Posted

技术标签:

【中文标题】如何保护由 GCS 触发的 App Engine Pub/Sub Push Endpoint?【英文标题】:How to Secure App Engine Pub/Sub Push Endpoint Triggered by GCS? 【发布时间】:2020-01-01 11:45:03 【问题描述】:

我正在尝试找到一种方法来保护我的谷歌云应用引擎标准环境端点订阅了由在谷歌云存储上创建文件触发的推送发布/订阅主题。

由于只能将 IP 地址设置为应用引擎的防火墙规则,并且 pub/sub 没有预定义的 IP 地址集,因此无法使用此功能。由于我无法控制 pub/sub 请求,因此也无法在 pub/sub 调用中使用自定义标头并在应用引擎上检查其有效性。

关于如何保护应用引擎端点的任何建议?

谢谢

【问题讨论】:

【参考方案1】:

Cloud Pub/Sub 推送基于 IP 的防火墙规则配合得很好。使您的推送通知基于 IP 地址的安全性并不是最有效的方法

OAuth 和服务帐户可用于验证访问 Google 产品,例如Cloud Pub/Sub。这将阻止外部人员访问您的 Pub/Sub API,只要他们不包含在特定服务帐户下。

此外,为了确保您的推送通知安全,我将遵循以下两种解决方案之一:

确认推送通知来自 Cloud Pub/Sub。您可以配置 endpoints,它只接受包含秘密 token 的消息。

设置您自己的推送代理。一个简单的无状态服务可能会从 Pub/Sub 中提取消息并将它们从固定 IP 地址推送到您的 webhook。 Pub/Sub 通过提供可扩展性和可用性在此设置中提供价值。

此外,我不确定您是否已经完全实现了这一点并且没有工作,但是来自另一个 *** 问题的 link 可能会有所帮助

【讨论】:

我曾想过与您提出的第二个类似的解决方案。关于第一个解决方案,我认为问题仍然存在,因为我可以使用服务帐户进行保护,但应用引擎端点仍将保持公共访问权限,我知道很难嗅探 url 和正确的请求。谢谢 你看过appengine push-handler吗? 官方gitHub GAE sample section也有记载

以上是关于如何保护由 GCS 触发的 App Engine Pub/Sub Push Endpoint?的主要内容,如果未能解决你的问题,请参考以下文章

我如何从Google App Engine中触发一个HTTP云函数?

Google Cloud App Engine - gsutil 访问问题

在 Google App Engine 上运行 gcsfuse 时出现问题

您可以在基于 Cloud Pub/Sub 队列的 Google App Engine 中触发自动缩放吗?

在 Google App Engine 中触发功能涉及哪些成本?

如何找出由 Google App Engine 脚本生成的 Android 客户端库的服务构建器的类名?