【问题标题】:Is it possible to restrict a static site to allow only access from cloud run (iframe embed)?是否可以将静态站点限制为仅允许从云运行(iframe 嵌入)访问?
【发布时间】:2021-03-11 16:36:48
【问题描述】:

我有一个在谷歌云上运行的 React 应用程序,具有用户身份验证和权限。

现在我想为应用程序编写文档。这些文件将是保存在谷歌云存储中的静态站点。

在应用中,不同权限的用户可以访问应用的不同路由,如果权限也适用于文档就好了。

我未经测试的解决方案是控制用户对应用程序路由的访问,并且某些路由会呈现一个页面,该页面包含一个 <Iframe>,它检索文档然后显示它。

我的问题是:是否可以限制对静态站点的访问,只允许从云运行时持有的 react 应用程序访问?

或者对app文档的访问控制有什么建议吗?


"documents" 应该是从 markdown 文件转换而来的 html 文件。它们是关于应用是什么以及如何使用应用的文档。

而且我不希望具有常规授权的用户看到有关“应用程序的管理员配置”的文档部分。

将文档作为静态站点保存更简单。我可以使用 gitbook(或其他工具)来渲染 markdown 文件。在 React 中管理和渲染 markdown 文件的样式会有点痛苦。

我还在努力学习我的英语。对混乱感到抱歉。

【问题讨论】:

  • 文档是什么意思?为什么需要 GCS?为什么需要 iframe?为什么不从 Cloud Run 服务而不是 GCS 提供内容?
  • iframe 与否,问问自己:谁会要求文件?云跑?浏览器?答案将塑造您的解决方案设计!
  • 1) 如果您在 IFrame 中嵌入某些内容,则请求不是来自 Cloud Run,而是来自用户的浏览器。因此 Cloud Run 不是请求的来源,因此答案是否定的。 2)通过摆弄路线,您正在尝试通过默默无闻的安全性。那很糟糕/没有安全性。生成的 URL 是可见的。 3) 要在 IFrame 中显示来自 Cloud Storage 的资源,要么要求存储桶/对象公开,要么您需要实施 Cloud Storage 授权。具有短生命周期的预签名 URL 是一种选择。
  • 4) 研究各种云存储授权机制并选择一种满足您的目标。
  • 文件是什么意思?火库文件?为什么他们会是一个静态网站?如果文档只是云存储对象,那么您可以使用云存储客户端库在您的云运行服务中提供它们。 cloud.google.com/storage/docs/reference/…

标签: google-cloud-storage google-cloud-run static-site


【解决方案1】:

您可以通过创建一个 redirect.html 来限制对 Cloud Storage 中静态网站的访问,就像它在 this question 的第二个答案中发布的那样。完整的中号帖子位于here

考虑到静态网站的身份验证将与 Cloud Run 身份验证分开,这将起作用。可以看出here 需要为每个对象定义用户拥有的权限。在那里,您可以控制是否可以通过特定用户电子邮件查看某个文档。

如果 Cloud Storage 文档的服务需要依赖于 Cloud Run 身份验证,则可以选择创建短期签名 URL。 This 是一个用于创建签名 url 的 python 示例程序,here 是对签名 url 作用的描述。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2012-09-14
    相关资源
    最近更新 更多