Identity-Aware Proxy 概览

本页面介绍了 Identity-Aware Proxy (IAP) 的基本概念,IAP 是一项 Google Cloud 全球服务。

借助 IAP,您可以为通过 HTTPS 访问的应用建立一个中央授权层,从而可以采用一种应用级访问权限控制模型,而无需依赖网络级防火墙。

IAP 政策可在整个组织范围内伸缩。您可以集中定义访问权限政策,并将其应用于所有应用和资源。建议您指定专门负责创建和实施政策的团队,这样可以保护项目免受任何应用中错误的政策定义或实现的影响。

何时使用 IAP

当您要对应用和资源强制执行访问权限控制政策时,请使用 IAP。IAP 使用签名标头或 App Engine 标准环境 Users API 来保护应用的安全。借助于 IAP,您可以设置基于群组的应用访问权限,也就是说,您可以允许员工但不允许承包商使用某一资源,或者只允许特定部门使用该资源。

IAP 的工作原理

如果某一应用或资源受 IAP 保护,则该应用或资源只能由具备正确 Cloud Identity and Access Management (Cloud IAM) 角色主账号(也称为用户)通过代理进行访问。如果您授权某用户访问受 IAP 保护的应用或资源,该用户只需要遵守所用产品实现的精确访问权限控制,而不需要 VPN。如果用户尝试访问受 IAP 保护的资源,IAP 会执行身份验证和授权检查。

App Engine
使用 Cloud IAP 时 App Engine 的请求路径示意图
Cloud Run
使用 Cloud IAP 时 Cloud Run 的请求路径示意图
Compute Engine
使用 Cloud IAP 时 Compute Engine 和 Kubernetes Engine 的请求路径示意图
GKE
使用 Cloud IAP 时 Compute Engine 和 Kubernetes Engine 的请求路径示意图
本地
使用 Cloud IAP 时本地应用的请求路径示意图

身份验证

对您的 Google Cloud 资源的请求通过 Cloud Run、 App Engine 和 Cloud Load Balancing(外部和内部 HTTP(S) 负载平衡)传入。这些产品的服务基础架构代码会检查应用或后端服务是否启用了 IAP。如果启用了 IAP,则受保护资源的相关信息会被发送到 IAP 身份验证服务器。因此,请求标头或 Cookie 中会包含项目编号、请求网址及任何 IAP 凭据 Google Cloud 等信息。

然后,IAP 会检查用户是否已登录。如果用户未登录,其浏览器会被重定向到 IAP 支持的以下登录方法之一:

  • Google 账号: 拥有 Google 账号的 Google Cloud 用户会 通过 Google 账号登录流程重定向到 Google Cloud。

  • 员工身份联合: 外部身份 提供方中的 Google Cloud 用户会通过其 IdP 登录重定向到 Google Cloud。

  • Identity Platform: 您的客户可以使用电子邮件地址和密码或社交登录方式(例如 Facebook、Apple 和 Google (Gmail))访问您的应用。

身份验证完成后,用户的浏览器会在浏览器 Cookie 中存储令牌,以供日后登录使用。

如果请求凭据有效,则身份验证服务器会使用这些凭据来获取用户的身份(电子邮件地址和用户 ID)。然后,身份验证服务器会使用该身份检查用户的 IAM 角色,并检查用户是否有权访问资源。

如果您使用的是 Compute Engine 或 Google Kubernetes Engine,则可以访问虚拟机 (VM) 的应用服务端口的用户可以绕过 IAP 身份验证。若代码在受 IAP 保护的应用所在虚拟机上运行,Compute Engine 和 GKE 防火墙无法阻止其访问。防火墙规则可以阻止来自其他虚拟机的访问,前提是配置正确。请了解 您的职责以确保安全。

如果您使用的是 Cloud Run,则可以通过以下方式启用 IAP

  • 直接在 Cloud Run 服务上启用。这样一来, IAP 就可以保护 Cloud Run 的所有入站流量路径, 包括自动分配的网址和任何 已配置的负载均衡器网址。如果您只有一个 Cloud Run 服务需要启用 IAP,则此配置非常有用。
  • 通过具有 Cloud Run 后端的负载均衡器启用。如果您有多个 Cloud Run 服务位于单个全球负载均衡器后面的不同区域,则此配置非常有用。在此配置中,自动分配的网址不受 IAP 保护,可能会直接访问。详细了解您的职责以确保安全。

如果 Cloud Run 服务位于负载均衡器后面,请勿同时在负载均衡器和 Cloud Run 服务上启用 IAP。

详细了解员工身份联合。 了解如何使用员工身份联合配置 IAP。 或者,如果您想将外部身份同步到其自己的 Google 账号,可以使用 Google Cloud Directory Sync 与 IdP 同步。

授权

身份验证完成后,IAP 会应用相关的 IAM 政策来检查用户是否有权访问所请求的资源。如果用户对资源所属的 Google Cloud 控制台项目拥有 IAP-secured Web App User 角色,即有权访问相应应用。如需管理 IAP-secured Web App User 角色列表, 请使用 控制台上的 Google Cloud IAP 面板

为资源启用 IAP 后,IAP 会自动创建 OAuth 2.0 客户端 ID 和密钥。如果您删除自动生成的 OAuth 2.0 凭据,IAP 将无法正常运行。您可以在 Google Cloud 控制台 API 和服务中查看和管理 OAuth 2.0 凭据。

情境感知访问权限

授权步骤中,您可以使用情境感知访问权限来提供 安全地访问以下类型的资源:

Google Cloud 控制台和 API
  • 保护对的基础架构访问权限的第一道防线 Google Cloud。
  • 为用户提供高级情境感知 Google Cloud 访问权限。
虚拟机
  • 允许对 Google Cloud 和在其他 中的虚拟机进行管理员 SSH/RDP 访问。
  • 让您能够实现强大的情境感知控制,以将访问权限限制为仅限指定管理员。
Web 应用
  • 为托管在 Google Cloud 和其他云中的 Web 应用提供授权和身份验证。
  • 提供持续授权,以防止未经授权的访问和数据泄露。

您的职责

IAP 可以保护对 Cloud Run、App Engine、Cloud Load Balancing (HTTPS) 和内部 HTTP 负载均衡的所有请求的身份验证和授权。

为确保安全,您必须采取以下预防措施:

  • 如果您要在负载均衡器上启用 IAP,请验证是否可以直接访问后端资源。
    • 如果后端资源是虚拟机,请配置防火墙规则以防范没有通过负载均衡器传入的流量。 IAP 无法针对项目内的活动提供保护,例如项目内部的另一个虚拟机。
    • 如果后端资源是 Cloud Run 服务,您可以停用 run.app 网址,以确保所有入站流量都通过负载平衡器传入。如果您选择启用 run.app 网址,则应使用 入站流量控制来阻止来自 网络外部的流量。
  • 更新应用以使用 签名标头 或使用 App Engine 标准环境 Users API

后续步骤