使用 API Gateway 保护云功能

2024-03-17

我的目标是防止用户使用 API 密钥和 API 网关访问我的云函数端点。我已经成功部署了API网关;但是,每个云功能的原始端点仍然存在并且可供公众访问。我希望将云功能端点设为私有,同时将 api 网关端点设为公共,但我不确定如何实现这一点。任何建议都会很棒。


您无法隐藏您的 Cloud Functions 端点。在任何配置中,它都将是公开可见的。

但是,您可以限制谁有权访问。在您的情况下,以安全模式部署云功能(设置参数 --no-allow-unauthenticated 或从权限部分删除 allUsers)

然后,部署您的具有自定义(后端)服务帐户的 API 网关 https://cloud.google.com/api-gateway/docs/creating-api-config#creating-an-api-config。授予此服务帐户调用 Cloud Functions 的权限(角色:cloudfunctions.invoker)。

实现此目标后,仅允许 API 网关身份访问您的 Cloud Functions。用户将能够查看并请求 Cloud Functions URL,但他们将收到 403 或 401 错误。


EDIT 1

经过测试,对于 Cloud Functions(我在 Cloud Run 中没有遇到过这种情况),Cloud Functions 生成的目标受众是错误的,您在后端使用了附加路径。这是我的conf

  /function:
    get:
      summary: Greet a user
      operationId: function
      x-google-backend:
        address: https://us-central1-gdglyon-cloudrun.cloudfunctions.net/gdg-go
      responses:
        '200':
          description: A successful response
          schema:
            type: string
  /function-path:
    get:
      summary: Greet a user
      operationId: function-path
      x-google-backend:
        address: https://us-central1-gdglyon-cloudrun.cloudfunctions.net/gdg-go/path
        jwt_audience: https://us-central1-gdglyon-cloudrun.cloudfunctions.net/gdg-go
      responses:
        '200':
          description: A successful response
          schema:
            type: string

The /function使用云函数的根路径,直接调用没有问题。

The /function-path add /path到 Cloud Functions 的根路径。我猜 API Gateway 使用了相同的完整 URL(带有/path在最后)这是该功能的错误受众。

您可以使用以下命令覆盖它jwt_audience范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 API Gateway 保护云功能 的相关文章

随机推荐

  • 在 TFS 中获取特定父级的子工作项

    如何在 TFS 中获取特定父级的子工作项 我需要一个平面列表 它将父 ID 作为查询参数并返回子工作项 注意 到目前为止 我只能通过 工作项和直接链接 查询来执行此操作 我们无法通过 工作项平面列表 查询来实现这一点 因为没有字段 条件来查
  • Start-Process 在 powershell 远程处理中不起作用

    我一直在尝试使用 powershell 远程处理来运行计算器 我进入了 powershell 会话 Enter PSSession 并输入以下命令 Start Process calc exe 我查看了远程计算机 但没有显示任何内容 当我尝
  • 如何检查字符串是否只包含大写字母或小写字母?

    当且仅当 s 中至少有一个字母字符且 s 中的字母字符全部大写或全部小写时 才返回 True def upper lower s str gt bool gt gt gt upper lower abc True gt gt gt uppe
  • 如何在 Xampp 安装的 Windows 上的 Apache 中禁用 SSLv3

    我正在尝试在 Apache 中禁用 SSLv3 该 Apache 是通过 xampp 安装在 Windows 上的 但我很难弄清楚如何做 有人告诉我我需要添加 SSLProtocol All SSLv2 SSLv3 到我的 ssl 配置文件
  • Haskell 函数名称中允许使用哪些字符?

    函数的有效名称是什么 Examples works let x x x let x x x doesn t work let x x x let x x x 我不确定 但我的预感是 Haskell 不允许 Unicode 函数名称 是吗 U
  • 如何从pairwise.t.test获取df和t值?

    有没有办法从a中获取t值和dfpairwise t test对于相关数据 Example data lt c 2 3 2 2 5 2 4 2 4 3 4 2 time lt c 1 1 1 1 2 2 2 2 3 3 3 3 pairwis
  • 如何在 .COM 可执行文件中以相反顺序打印字符串?

    我刚刚开始学习汇编语言 我正在尝试以相反的顺序打印 hello world 这意味着 dlrow olleh 问题是我只得到第一个字母作为输出 并且顺序仍然相同 没有任何变化 作为一个新手 很多事情对我来说都是未知的 我犯了很多错误 由于缺
  • keytool如何保护密钥?

    当您使用 Java Keytool 实用程序构建密钥存储时 如何保护密钥 我通读了文档 我意识到每个私钥都有一个密钥密码 然后商店有一个商店密码 但是使用什么机制来保护数据呢 它是加密密码吗 如果是的话 算法是什么 我特别关注 keytoo
  • 即使我完全信任,WebPermission 异常

    我正在尝试执行我认为简单的 HttpWebRequest 代码位于 dll 深处 因此我无法提供小代码片段 但它应该相对简单 但我遇到了安全异常 System Security SecurityException Request for t
  • 如何解决客户端-服务器应用程序中的无状态问题?

    我读过一些有关创建无状态网站的书籍 也读过一些有关有状态客户端应用程序的书籍 但是当您必须将两者结合起来时 就会出现很多复杂性 我们有一个 Flex 应用程序 需要通过 NET 服务将数据保存到数据库中 需要记住的事情是 并发 乐观 悲观
  • Android:通过套接字接收到的图像已损坏

    嗨 问题是 服务器正确地将图像发送到客户端 我认为 从客户端接收到的文件与服务器电话上存在的文件大小相同 因此我猜每个字节都已传输 但图像仍然不可见 服务器和客户端都是安卓手机 预先感谢我希望你能帮助我 服务器代码 public class
  • 使用 catimg 并排显示两个内容(就像在 neofetch 中一样)

    我正在尝试使用 bash 创建类似 neofetch 的东西 我想在右侧显示一张图像和一张 ASCII 艺术图 使用 cat 当我对某些机器进行 ssh 时 我想将其用作登录欢迎屏幕 所以我能够通过以下方式展示 ascii 艺术 cat l
  • 将对象附加到序列化文件

    假设您有一些 AppendObjectOutputStream 类 它是一个 ObjectOutputStream 它重写了 writeStreamHeader 如下所示 Override public void writeStreamHe
  • ObjectContext.Refresh()?

    如何从数据存储中更新所有脏实体 并将其更改后的值重置为原始存储值 方法对象上下文刷新 http msdn microsoft com en us library bb503718 aspx需要将要刷新的实体作为参数 以下通常有效 Conte
  • 编译器的“-O0”选项和“-Og”选项有什么区别?

    当我想要调试 C 或 C 程序时 我被教导使用 O0关闭优化 以及 ggdb将符号插入到为使用 GNU 而优化的可执行文件中gdb调试器 我使用它 或者 你可以使用 glldb对于 LLVM clang 来说lldb调试器 或者只是 g对于
  • 使用 xcodebuild 命令行使用 PROVISIONING_PROFILE 签名应用程序失败

    我尝试使用 Xcode 签署我的应用程序命令行 Running xcodebuild命令行开启MyApp xcodeproj like so xcodebuild project MyApp xcodeproj target MyApp s
  • 如何在 RSpec Expect 语法中模拟类方法?

    我对如何使用 new 模拟类方法感到困惑expect句法 这有效 Facebook should receive profile with token and return name gt Hello id gt 14314141 emai
  • 为什么带有几个按钮的基本 UIScrollView 不会滚动?

    为什么带有几个按钮的基本 UIScrollView 不会滚动 所以我所做的就是 创建基于视图的 iPhone 应用程序 将 UIScrollView 拖入主控制器 xib 文件中 滚动视图现在作为 IB 中 View 的子视图 在 IB 中
  • Laravel old() 不工作

    Form open array route gt posts store data parsley validate gt Form label title Title Form text title old title array cla
  • 使用 API Gateway 保护云功能

    我的目标是防止用户使用 API 密钥和 API 网关访问我的云函数端点 我已经成功部署了API网关 但是 每个云功能的原始端点仍然存在并且可供公众访问 我希望将云功能端点设为私有 同时将 api 网关端点设为公共 但我不确定如何实现这一点