我正在尝试从在Compute Engine实例上运行的节点服务器调用HTTP触发的Cloud Function。 我已经将Compute Engine的服务帐户设置为上述函数的调用者,并且作为计算引擎实例的两个函数都在同一VPC网络上运行。 但是,每次尝试从节点服务器调用该函数时,都会收到默认的403 Forbidden错误。但是,如果我将Cloud Function中的调用规则设置为“ allUsers”,则调用成功。
编辑:我正在docker容器上运行节点服务器。
有什么想法吗?
非常感谢。
编辑(解决方案):
因此here说明了我正在寻找的解决方案。即使上述链接指向的示例代码可能会对某人有所帮助,但我发现遵循this指南(服务帐户JSON证书)会更有用,该指南指向的代码可以用来获取提供以下内容所需的OIDC令牌在对函数的请求中(请记住,创建令牌时的受众必须设置为函数的url)。
有了上述OIDC令牌,只需通过以下格式的标头Authorization即可使用普通的HTTP请求调用云功能:Authorization:Bearer {OIDC token}。
随时发布有关此的任何问题,我将尽力回答所有问题。 再次感谢petomalina指出正确的方向。
答案 0 :(得分:1)
如果您要同时调用“功能到功能”或“服务到功能”,则需要一个自签名的JWT。来自无法访问计算元数据的计算实例。
请参见此文档以获取服务功能:https://cloud.google.com/functions/docs/securing/authenticating#service-to-function
这里还有一个有关程序验证的示例:https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account