【问题标题】:IAP User is able to access a Cloud Run without permissionIAP 用户可以在未经许可的情况下访问 Cloud Run
【发布时间】:2021-12-30 15:27:53
【问题描述】:

重现此的步骤:

  • 使用“要求身份验证”选项设置创建 Cloud Run 服务 入口选项为“允许内部流量和来自 Cloud Load Balancing 的流量”
  • 使用启用 IAP 的外部负载均衡器公开服务
  • 为用户授予后端服务的“IAP-Secured Web App User”角色

用户无需明确许可即可访问 Cloud Run 服务。

您可以按照本教程获得工作示例hodo.dev/posts/post-30-gcp-cloudrun-iap/

这是一个错误还是预期的行为?

如果这是预期的,那么这个隐式用户权限记录在哪里?

【问题讨论】:

  • 当您对此进行测试时,您的用户在 Cloud Run 实例上具有哪些角色?我的想法是“需要身份验证”意味着将检查授权(而不是不检查),并且发出请求的用户必须拥有该实例的“Cloud Run Invoker”角色。
  • 您是否在隐身模式下进行了测试?您是否向特定提供商授予 IAP?
  • 如果您授予IAP-Secured Web App User 的用户也是项目的一部分并且具有其他权限(例如编辑者或其他权限),这可能是有意义的。我建议阅读IAP documentation,尤其是角色和权限部分。
  • 用于测试的用户在项目中只有一个角色。附加到后端服务的IAP-Secured Web App User 角色。
  • @Kolban。根据文档,当服务配置为“需要身份验证”时,Cloud Run Invokers 或任何具有run.routes.invoke 权限的角色都可以调用。但是当通过 IAP 访问时,用户只有IAP-Secured Web App User 角色并且仍然能够访问服务。

标签: google-cloud-platform google-cloud-run google-iap


【解决方案1】:

Google 的身份识别代理 (IAP) 充当访问后端系统的前端。对于某些后端,如果 IAP 收到请求,则 IAP 将执行工作以验证用户是否被适当授权以发出最终请求。这意味着如果直接向后端请求,则后端将负责批准。但是,如果我们通过 IAP 进行路由,那么我们已将批准责任委托给 IAP。因此,请求用户无需明确 Cloud Run 批准即可访问后端服务(例如 Cloud Run),因为我们已定义 IAP 可以做出决定,而 Cloud Run信任 IAP 的决定就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多