如何验证 Google PubSub 是否击中了我的端点而不是另一个参与者

How to verify that Google PubSub is hitting my endpoint and not another actor

我有一个功能齐全的端点,当在用户的 Gmail 收件箱中检测到更改时,它将接收来自 PubSub 订阅的 POST 请求。在端点内部,我可以成功提取我需要的所有内容。

问题是我不知道谁真正达到了我的终点。一个坏演员可能会向我传递与 Gmail 相同的有效负载。

有没有办法让我验证我收到的有效负载实际上来自 Google/Gmail/PubSub?

在 Gmail 方面: 发送到我的端点的有效载荷似乎无法更改,并且始终采用此处详述的形式: https://developers.google.com/gmail/api/guides/push

在 PubSub 方面: 您可以创建自己的主题并将 key/value 对作为自定义属性添加到它,但我似乎无法修改 Gmail 发布到我的主题的有效负载。 https://cloud.google.com/pubsub/docs/publisher

任何见解将不胜感激,谢谢!

建议的方法是为您的端点包含一个秘密作为 url 参数。然后,您可以拒绝任何不包含此机密的 url。 https://cloud.google.com/pubsub/docs/faq#security

这可以在您设置推送订阅时配置为常规推送端点的一部分。

如果您希望将额外的元数据添加到提供的 gmail 邮件中,您始终可以直接从 gmail 主题设置云数据流作业或云功能作为订阅者,然后在第二个主题上重新发布,您的外部端点将阅读自。

-丹尼尔