正在使用服务帐户验证从 Cloud Functions 到 Google 个端点的请求

Authenticating request from Cloud Functions to Google Endpoints with Service Account

我有一个简单的云功能,它由在 Firebase Auth 上创建新用户触发,它向服务 [=24] 发出 POST 请求=] 在 Google Kubernetes Engine 上连同 ESP(Google-端点)。

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

谢谢!

Cloud Functions 默认使用 App Engine 服务帐户。

要实现这一点,您需要执行以下四个步骤:

1) 将服务帐户添加到 Cloud IAP 安全项目

的访问权限 list

2) 生成一个JWT-basedaccess token

3) 为 Cloud IAP-secured 客户端 ID

请求一个 OIDC 令牌

4) 在授权中包含 OIDC 令牌:Bearer header 以向 Cloud IAP - 安全应用程序发出经过身份验证的请求

Here 您可以查看详细说明这些步骤的指南和一些代码示例,以实现默认服务帐户的编程授权。

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

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

然后该函数使用服务帐户的私钥签署一个安全的 JSON Web 令牌 (JWT),并在请求中将签名的 JWT 发送到您的 API。

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

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

这样只有这个函数才能发出api请求。

在这里你可以找到官方文档Function Identity, Authentication between services