有没有办法在 GCP Cloud Storage 中托管公共静态网站并使用用户名和密码对其进行保护?

问题描述

GCP 似乎允许您通过 IAM 委托 Cloud Storage 身份验证,这很棒,但使用该方法一次只能获取一个文件

我的意思是,如果我授予用户对存储桶中的文件夹具有“存储对象查看器”角色的权限,那么用户将能够浏览到单个文件(假设是 .html 文件)使用 https://storage.cloud.google.com/bucket-name/folder-name/filename显示它,但如果该 .html 文件包含 .css 或其他需要用户下载的文件,那么这些文件都会返回 404 not found 错误

似乎任何通过身份验证获得的令牌都只对检索在创建令牌之前请求的单个文件有效。

如何在 GCP Cloud Storage 中使用某种形式的身份验证托管静态网站?

我确实在 5 年前看到过一个与此类似的问题,我认为 GCP 从那时起发生了很大变化,所以这就是我重新提问的原因。

编辑:好的,让我们假设我对存储桶内容的公共只读访问没有问题,相反,我将专注于保护进行更改的 GCP 云功能

现在,我已在 GCP 功能上启用身份验证并使用 OAuth ID 令牌。现在的问题是 CORS。对 GCP 函数的任何调用都需要一个 CORS access-control-allow-origin 标头,但该标头在身份验证之后才会返回。

有人知道如何在进行任何身份验证之前在 GCP Cloud Functions 上启用 CORS 吗?

谢谢!

解决方法

你可以host your static files on App Engine。内容免费提供!

在 App Engine 前,您可以activate IAP

最后,授予您的用户(或群组或 Google Workspace 域)角色 IAP-Secured Web App User