IAP:接入位置、授权与排障

托管身份访问控制:Web 用于支持的应用入口,TCP forwarding 用于 VM 等支持目标的 TCP 连接。

推荐做法#

  • Cloud Run 可在 service 原生启用;ALB 后端也可配置 IAP,Cloud Run 链路选择一处启用。
  • Web 用户授 IAP-secured Web App User;TCP 用户授 IAP-secured Tunnel User,权限不能互换。
  • 仅保护 LB 时封闭后端直连;应用按需要验证 IAP JWT assertion 的签名与 audience。

容易踩的坑#

  • IAP 通过不代表拥有应用管理员、OS Login/sudo 或 Kubernetes RBAC。
  • External / Test users 是 OAuth 用户范围,不授予 IAP IAM 权限。

Cloud Run Web 配置 · VM SSH / TCP · 支持目标与边界

配置说明与完整示例(按需展开)

Identity-Aware Proxy(IAP)是 Google Cloud 托管访问控制服务:在受支持的应用入口或 TCP tunnel 验证身份和访问策略。你配置保护目标、身份来源与授权,Google 管理代理。

本手册用 Cloud Run 和 VM SSH 做实验;它们只是下面两类能力的示例目标。

能力与适用目标#

能力 保护什么 典型目标及接入方式
Web application access HTTP(S) 应用请求 直接启用 IAP 的 Cloud Run、App Engine,以及通过支持的 Application Load Balancer 接入的 Compute Engine、GKE 等应用
TCP forwarding 到指定后端端口的 TCP 管理连接 Compute Engine VM 的 SSH、RDP 及其他适用 TCP 管理服务

Web 也可通过支持的方案接入 on-premises 应用;TCP forwarding 可用于有或无公网 IP 的 VM,不支持 load-balanced targets。IAP overview、TCP overview

Web 支持浏览器与机器调用。机器调用使用 SA OIDC token(audience 为 IAP OAuth client ID)或 SA JWT(audience 为受保护 URL);相应的签发权限与 IAP 访问授权见 Web 配置。不要复用浏览器 cookie 作为 CI 认证。

一次访问经过哪些检查#

访问者请求目标
  → 网络路径是否可达
  → IAP 验证访问者身份:authentication
  → IAP 检查该身份的访问许可:authorization
  → 后端应用或目标协议继续处理请求

浏览器按需跳转登录;TCP 客户端先建立 tunnel,再进行 SSH/RDP 登录。IAP 放行后的操作权限由下表各层决定。

层次 职责
IAM policy 记录哪些 Principal 在哪些 resource 上获得哪些 roles
IAP 对被保护入口执行身份和访问策略检查
VPC firewall / ingress 决定对应网络路径是否允许,不代替用户身份认证
OS Login 在启用它的 VM 上管理 Linux 登录与 sudo 权限
应用 / Kubernetes / 数据库 决定进入后的业务操作权限

Web 场景:IAP 应该启用在哪里#

现有架构 配置位置 必须理解的边界
一个 Cloud Run service 直接在 Cloud Run 启用 IAP 对该 service 的 ingress 路径进行 IAP 检查,包括 run.app 和 LB 路径;ingress 网络限制仍然适用
通过支持的 ALB 接入应用 在相应 Backend service 启用 IAP 保护经过该 LB 的路径;还需限制后端直连,避免绕过 IAP
App Engine 按 App Engine 的 IAP 集成配置 使用相应资源和授权方式,不照搬 Cloud Run CLI 参数
Compute Engine / GKE Web 应用 通过支持的 ALB / GKE 集成配置 Web IAP 与 SSH 登录 VM 是不同用途

ALB 后的 Cloud Run 只选一处启用 IAP,不要同时启用两层。Cloud Run 集成

只在 ALB 启用 IAP,保护的只是经过它的请求。 同时限制 Cloud Run ingress 或 VM firewall,封闭 run.app / VM 端口直连,避免绕过认证。

身份来源与 OAuth client#

身份来源证明“谁在访问”,OAuth client 标识参与登录的应用;IAP IAM 决定是否放行。

  • Google-managed OAuth client:由 Google 管理,适用于受支持的 Organization 内浏览器访问场景。
  • Custom OAuth client:用于 external users、自定义 branding 或适用的 programmatic access 场景,需要配置应用信息及相关权限。
  • OAuth consent screen:登录/授权时展示应用身份及请求信息的配置,不是访问者的 IAM role binding。
  • Workforce Identity Federation:员工/合作方使用企业外部 IdP(如 Okta、Entra ID)登录,使用 Workforce pool principal 做 IAM 授权。配置方法
  • Identity Platform:需要 email/password、SAML/OIDC 等应用用户登录时使用;须配置 Identity Platform providers 和登录流程。此方案不能沿用 IAM 管理用户访问,授权需按应用方案实现。External identities

在 Google OAuth client 路径中,External / Test users 仅控制 OAuth 用户范围,仍需 IAP IAM 授权;这条规则不要套到上面的 Identity Platform 路径。OAuth client 选择

配置示例#

实验目标 内容 操作指南
通过浏览器访问 Cloud Run 演示服务 在 service 上启用 IAP,区分两层授权,验证允许和拒绝 Cloud Run Web access
通过 SSH 登录无公网 IP 的 VM IAP tunnel、OS Login、firewall 和登录排障 VM SSH 与 TCP forwarding

相关操作#

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭