繁体   English   中英

从具有访问限制的 GCS 服务 static 页面

[英]Serving static page from GCS with access restrictions

我在谷歌云存储上提供一个 static 页面。 只要它是公开的,它就可以很好地工作。 现在我设置了 acl,这样只有一组用户才能读取存储,而未经身份验证的用户将被重定向到谷歌身份验证。 现在的问题是,网站的 static 内容,如 javascript 和 css 再也找不到了,我在那里收到 404 错误。 static 内容也在存储桶中,并且可以与公共 URL 一起正常工作。 使用经过身份验证的网址时,它不再起作用。

我提供访问控制页面的尝试是否正确? 我猜是这样,因为它有效,除了 static 内容。 那么你知道我在这里缺少什么吗?

尝试在您提交的 App Engine 上部署。 为了这

  1. 在 static 文件的同一根目录中,使用此内容创建一个app.yaml文件
runtime: nodejs10
env: standard
instance_class: F1
handlers:
  - url: /
    static_files: index.html
    require_matching_file: false
    upload: index.html
  - url: /(.*)
    static_files: /\1
    require_matching_file: false
    upload: /.*
  - url: .*
    script: auto
  1. 在 App Engine 上gcloud app deploy
  2. 检查它是否适用于提供的 URL。

如果是这样:

  1. Go 到安全 -> 身份感知代理 (IAP)
  2. 为 App Engine 激活 IAP; 可能必须在此步骤配置 OAuth 同意屏幕,如果您之前没有这样做
  3. Select 根服务左侧的复选框,go 页面右侧的信息面板在此处输入图像描述
  4. 添加角色为IAP-secured Web app user的成员、组或域

测试并享受!

您可以使用以下解决方法将用户身份验证添加到基于存储桶的 GCS static 页面。

首先你需要创建一个名为redirect.html的public文件,这个文件将作为你static网页的入口,你需要添加以下内容

<html>
  <head>
    <meta http-equiv="Refresh" content="0; url=https://storage.cloud.google.com/[yourbucketname]/index.html">
  </head>
  Redirecting to your site..

index.html和其他文件必须是私有文件,并授予选定用户读取权限

这背后的神奇之处在于,如果您的浏览器没有任何活动的谷歌帐户,您的浏览器会提示选择一个谷歌帐户。

并且只有具有读者权限(或具有读取权限的其他角色)的用户才能访问您的 static 网站。

友情提醒,如果您的浏览器有超过 1 个 Google 帐户,这将使用浏览器中的主要 Google 帐户,这可能会导致身份验证问题,如果发生这种情况,请使用隐身 window。

您可以在这篇Medium 文章中找到更多信息

额外的步骤

如果您启用了数据访问日志,此解决方法将引发一些身份验证问题,您需要为将使用经过身份验证的站点的用户添加例外

为此,请在 Cloud Console 中导航至IAM & Admin > Audit Logs 查看列表或过滤器以查找Google Cloud Storage 单击该行。

在右侧信息面板的免除用户选项卡上,单击添加免除用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM