gpt4 book ai didi

google-cloud-platform - 如何限制对我的云功能的访问?

转载 作者:行者123 更新时间:2023-12-02 18:55:36 25 4
gpt4 key购买 nike

我有一些云功能。我还有一个在 AppEngine 中运行的 Nodejs 服务器。我从那里调用我的云功能。目前我可以从任何地方调用我的云函数!

有什么方法可以限制对我的云功能的访问,使其仅在从 Google App Engine 上运行的服务器调用时才可用?

最佳答案

您有 2 个解决方案

  1. 第一个是使用 AndresMijares 描述的服务帐户。但是,不是要创建一个新的。事实上,如果您创建一个新的服务帐户并且希望将其与应用程序引擎一起使用,则需要生成一个服务帐户 key 文件并使用您的代码部署此 key 。它不是很安全,因为您还需要安全地存储此 secret 等等。

因此,解决方案是使用 App Engine 默认服务帐户作为此电子邮件模式

<project_ID>@appspot.gserviceaccount.com

在项目级别调用的所有函数上授予此服务帐户作为 role/cloudfunctions.invoker 的权限。


  • 第二个解决方案不如第一个解决方案那么好,但也是可能的。您可以更新您的 Cloud Functions 并设置 ingress parameter to internal 。这意味着只有来自项目中 VPC 的流量才能到达 Cloud Functions,包括项目的其他资源(例如 Compute Engine)。 -> 这就是为什么它不是一个很好的解决方案,但最终,云函数无法从任何地方调用。
  • 因此,要允许 App Engin 使用您的 VPC 调用云函数,您需要使用 serverless VPC connector 来桥接无服务器世界与您的 VPC。除了安全性较低之外,该解决方案还涉及无服务器 VPC 连接器的额外成本。


    第二个解决方案的优点是您不必更新应用程序代码即可对云函数执行安全调用。您只需更新部署配置,并且只能在内部调用函数。

    对于第一个解决方案,您需要更新代码以将安全 token 添加到请求的 header 中。它类似于 function to function authentication 。我个人不喜欢这种实现方式,因为你无法在本地测试:本地你没有元数据服务器!

    wrote an article 从那里您可以获得“避免元数据服务器”部分的灵感。


    编辑 1

    深入研究 App Engine 无服务器 VPC 连接器和 this answer 后,只有通过 Cloud Functions 或 Cloud run 才能到达“仅限内部”的 Cloud Function(或 Cloud Run)入口。 App Engine 不会在无服务器 VPC 连接器内路由公共(public)流量,因此在 App Engine 情况下无法使用第二种解决方案。

    关于google-cloud-platform - 如何限制对我的云功能的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66200950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com