由于服务 B 是私有的(需要身份验证),因此服务 A 需要在对服务 B 的请求中包含 HTTP 授权标头。
标题如下所示:
Authorization: Bearer <replace_with_token
该令牌是 OAuth 2.0 身份令牌(不是访问令牌)。User Credentials 或 Service Account 的 IAM 成员电子邮件地址将添加到具有角色的服务 roles/run.invoker
B。
您仍然需要调用服务 B 的端点 URL (xxx.y.run.app)。除非您还实现了自定义域,否则这不会改变。
Cloud Run 的一个不错的功能是,当需要身份验证时,Cloud Run 代理会为您处理此问题。代理位于 Cloud Run 前面并阻止所有未经授权的请求。您的实例永远不会启动,因此在黑客试图通过时没有计费时间。
在我网站上的一篇文章中,我展示了如何在 Go 中生成身份令牌(链接)。在这篇文章中使用 CURL (链接) 这是一个由三部分组成的系列。Internet 上也有许多文章对此进行了解释。在另一篇文章中,我解释了 Cloud Run Identity 的工作原理(链接)以及 Cloud Run Identity Based Access Control 的工作原理(链接)。
查看 --service-account 选项,该选项允许您设置服务帐户以用于身份(链接)。
Cloud Run 身份验证文档(链接)。