Google cloud platform 如何让GitHub Webhook调用Google云函数

Google cloud platform 如何让GitHub Webhook调用Google云函数,google-cloud-platform,google-cloud-functions,invoke,Google Cloud Platform,Google Cloud Functions,Invoke,我设置了一个GithHub Webhook,它是我的云函数的触发器,因此每当使用这个GithHub Webhook对存储库进行更改时,都会调用云函数。它适用于未经身份验证的访问,但在使用经过身份验证的访问时,必须进行一些设置 我已经尝试在GCP中使用服务帐户,其中服务帐户只能调用特定的云函数,但问题是我无法显式地将此服务帐户分配给GitHub的Webhook 注意:我考虑过使用承载令牌并将其添加到我的云功能中,这将提供一层安全性,但这不会阻止云功能被调用,对吗?是的,您需要通过Google帐户(

我设置了一个GithHub Webhook,它是我的云函数的触发器,因此每当使用这个GithHub Webhook对存储库进行更改时,都会调用云函数。它适用于未经身份验证的访问,但在使用经过身份验证的访问时,必须进行一些设置

我已经尝试在GCP中使用服务帐户,其中服务帐户只能调用特定的云函数,但问题是我无法显式地将此服务帐户分配给GitHub的Webhook


注意:我考虑过使用承载令牌并将其添加到我的云功能中,这将提供一层安全性,但这不会阻止云功能被调用,对吗?

是的,您需要通过Google帐户(服务帐户或用户帐户)进行身份验证,并获得IAM的授权才能调用该功能。遗憾的是,Github webhook不支持服务帐户密钥文件来生成安全令牌,然后安全地调用云功能


但是,您可以使用API密钥(可以添加到WebHook的URL中)。我写的这篇评论也是今天使用的(我文章中使用的ESPv2的托管版本)

这篇评论是给未来的读者的。GitHub WebHook回调URL必须是公共的。授权是通过通过SHA-1或SHA-256验证存储在GitHub中的机密和收到的有效负载来处理的。如果验证失败,只需返回401之类的内容。