如何从Java脚本安全地调用Google Cloud Run服务?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Java脚本安全地调用Google Cloud Run服务?相关的知识,希望对你有一定的参考价值。

我们计划为我们的项目构建一个Web客户端(Angular)。我们的后端将提供大量的Google云运行服务。我们如何确保这些服务只能由该Web应用程序调用?我知道有服务帐户,可以用来限制对Cloud Run服务的访问,但是我如何在纯javascript应用程序中并且没有登录用户的情况下执行此操作。我只想认证应用程序而不是用户。有任何建议或样品吗?

答案

TL; DR:应用程序身份验证和授权级别由服务帐户管理。但是,将服务帐户密钥文件放在Javascript应用程序中(因此任何用户都可以在其浏览器中查看)没有用,因为您的秘密已公开!


使用Cloud Run,您有两种模式:私有和公共

如果是公开的,则没有安全性,所有请求都将发送到您的Cloud Run服务

[如果为私人,则Google Front End会检查请求者的身份以及他们是否具有run.invoker权限。如果是这样,则请求通过,否则被阻止。

今天要通过身份验证,您需要一个服务帐户。如果您不在Google Cloud Platform上(例如,在用户的浏览器中),则需要一个服务帐户密钥文件。但是,如果将它放在您的网站中,它是不安全的,因为任何人都可以将其用于网站之外。

所以,今天,您不能这样做:您的Cloud Run是公开的,没有任何检查的,或者是具有身份验证(和IAM授权)的私有的]

但是很快,至少在2020年,我希望您应该能够在Cloud Run前面放置一个负载平衡器并在其上激活IAP。因此,用户将由于其Google帐户身份验证Cookie(SSO)而获得身份验证。但是,在浏览器的私有模式下,将要求用户在进入网站之前进行身份验证。它不是免费的身份验证,只是身份验证不由您自己管理。

以上是关于如何从Java脚本安全地调用Google Cloud Run服务?的主要内容,如果未能解决你的问题,请参考以下文章

从 Google 表格按钮调用脚本函数(写入 Google 驱动器中的 .gs 文件)

在 Swift 中,如何在继续编写代码之前安全地确保从 Google 检索数据(日期和时间)?

使用 Google GSON 的 Lotus Domino Java 安全问题

Java后端API调用身份验证的思考

如何从 Azure 数据工厂安全地调用 Azure 逻辑应用

如何将客户端脚本调用移动到服务器? (Google云端硬盘电子表格Feed)