Google cloud platform 使用服务帐户验证从云功能到Google端点的请求

Google cloud platform 使用服务帐户验证从云功能到Google端点的请求,google-cloud-platform,google-cloud-functions,google-cloud-endpoints,Google Cloud Platform,Google Cloud Functions,Google Cloud Endpoints,我有一个简单的云函数,它是由在FirebaseAuth上创建一个新用户触发的,它向运行在GoogleKubernetes引擎上的服务发出POST请求,并与ESP(Google Endpoints)一起运行 根据我所能理解的,通过阅读,我应该能够通过分配一个与服务帐户相关的安全定义以及一个服务帐户令牌创建者角色来定义服务到服务的身份验证。 我将如何使用服务帐户验证此请求,以便只有此函数才能发出此请求?该服务帐户是否可以以某种方式归因于该功能?请指导我这个问题 谢谢大家! 云功能默认使用App En

我有一个简单的云函数,它是由在
Firebase
Auth
上创建一个新用户触发的,它向运行在Google
Kubernetes引擎上的服务发出
POST
请求,并与ESP(Google Endpoints)一起运行

根据我所能理解的,通过阅读,我应该能够通过分配一个与服务帐户相关的安全定义以及一个服务帐户令牌创建者角色来定义服务到服务的身份验证。 我将如何使用服务帐户验证此请求,以便只有此函数才能发出此请求?该服务帐户是否可以以某种方式归因于该功能?请指导我这个问题


谢谢大家!

云功能默认使用App Engine服务帐户

为了实现这一目标,您需要遵循以下四个步骤:

1) 将服务帐户添加到云IAP安全项目的访问中

2) 生成基于JWT的

3) 请求云IAP安全客户端ID的令牌

4) 在Authorization:Bearer头中包含OIDC令牌,以向云IAP安全应用程序发出经过身份验证的请求


您可以看到一个指南,其中详细解释了这些步骤和一些代码示例,以实现默认服务帐户的编程授权

此服务帐户是否可以以某种方式归因于该功能?请指导我这个问题

在函数执行期间,云函数使用服务帐户项目_ID@appspot.gserviceaccount.com作为它的身份。但是,您可以为函数指定自己的标识。您可以使用具有正确角色的服务帐户部署云功能

然后,该函数使用服务帐户的私钥对安全JSON Web令牌(JWT)进行签名,并将请求中签名的JWT发送到API

您将通过在OpenAPI文档中添加服务帐户作为颁发者来配置API以支持身份验证

在ESP将请求转发到您的API之前,ESP将验证:签名、颁发者声明、受众声明和令牌

这样,只有此函数才能发出api请求


您可以在这里找到官方文档。

答案需要更多信息。您使用的是哪种服务正在向Kubernetes服务发送邮件?有些服务具有内置的OAuth身份特性(云调度器、云运行、云函数等),对于这些服务,您只需设置一个命令行选项。对于其他服务,您需要请求一个身份令牌(计算引擎),或者使用GoogleOAuthAPI创建一个身份令牌。最终结果是您的Kubernetes服务将需要处理包含OAuth标识令牌的HTTP
Authorization:Bearer TOKEN
头。如何配置您的k8s集群?您使用的是哪种服务?您是否使用服务网格层进行服务到服务的身份验证?@JohnHanley POST请求是由云函数完成的,我在问题的开头这样说。@guillaumeblaquiere这与问题有什么关系?这只是云函数和端点(Google端点)之间的身份验证。说“我的云函数”和说我正在使用Google云函数是有区别的。清晰是好问题的关键组成部分。那么我的评论有你的答案。云功能支持命令行选项/配置选项--service account
。它设置函数使用的标识。另一方面,您需要验证HTTP头中接收到的令牌。是的,这个解决方案似乎是正确的,我现在正在尝试实施它。如果这个答案有助于您,请将其标记为已接受,以提高社区的可见性。