0

我在同一个 Google 项目中有多个 App Engine 服务。我希望为某些服务而不是其他服务启用 IAP(在同一个项目中),但是,我知道这是不可能的。对于我理想情况下不希望启用 IAP 的服务,我不想通过授予角色allUser将其向整个 Internet 开放。IAP-secured Web App User我仍然希望对谁可以访问资源进行某种 IP 限制。但是,谷歌在文档中明确表示(https://cloud.google.com/iap/docs/managing-access),

目前,授予公共访问权限的绑定不能有与之关联的条件。例如,如果请求路径以 /public/ 开头,则允许任何人访问资源的策略是无效的。

此应用程序的用户将是外部客户,因此我不希望通过向他们提供服务帐户和凭据文件并与他们共享代码以生成 OIDC 令牌的过程。

话虽这么说,是否有任何解决方法仍然添加 IP 限制?

4

2 回答 2

2

我有一个额外的解决方法。您可以在所需的服务上激活 IAP。对于其他人,您可以这样做

  • 创建全局 HTTPs 负载平衡器
  • 对于您希望不受 IAP 保护但使用 IP 过滤的每个 App Engine 服务
    • 授予allUser_IAP-secured Web App User
    • 在负载均衡器上创建后端服务
    • 创建一个无服务器网络端点组类型的后端,将您的 App Engine 服务附加到它
    • 创建一个Cloud Armor 策略来过滤请求的 IP 源并将其添加到您的后端。您可以重复使用相同的策略或为每个后端(因此每个 App Engine 服务)创建一个新策略
于 2021-01-21T08:22:26.083 回答
1

您一直在寻找的解决方案已经公开了一段时间了,所以我必须设定您对这个功能的期望。

但是,此线程中讨论了一种解决方法,您应该将服务拆分并将其部署到单独的项目中,然后从那里使用防火墙规则(或启用 IAP)。

于 2021-01-21T03:22:33.530 回答