如何解决从另一个云运行访问一个云运行
我正在开发一个应用程序,该应用程序在云端运行中托管了前端:公共访问,无需身份验证
另一个云运行服务具有后端。这需要身份验证,并且不向公众开放。
当然,如果我禁用了后端服务的身份验证,一切都会顺利进行。
是否可以通过前端云运行服务启用身份验证的后端访问?
这两个服务都在同一个无服务器VPC中。
解决方法
official doc中捕获的frontend
可以利用Invoker IAM角色来安全私密地调用backend
:
- 授予前端Cloud Run Invoker IAM角色的服务帐户。
- 当您从
frontend
向backend
发出请求时,必须在请求中附加一个身份令牌,请参阅here for code examples
要私下连接两个 Cloud Run 应用程序,您需要获取身份令牌,并将其添加到目标服务的出站请求的 Authorization 标头中。您可以在此处找到文档和示例。
要使 Cloud Run 服务 A(使用服务帐号 SA1 运行)能够连接到私有 Cloud Run 服务 B,您需要:
-
更新服务 B 的 IAM 权限以授予 SA1 Cloud Run Invoker 角色 (roles/run.invoker)。
-
从元数据服务获取身份令牌 (JWT):
curl -H "metadata-flavor: Google" \
http://metadata/instance/service-accounts/default/identity?audience=URL
其中 URL 是服务 B 的 URL(即 https://*.run.app)。
- 添加header Authentication:Bearer 上一条命令获取的响应在哪里。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。