本页面介绍了 Identity-Aware Proxy (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 会执行身份验证和授权检查。
身份验证
对 Google Cloud 资源的请求通过 Cloud Run、App Engine 和 Cloud Load Balancing(外部和内部 HTTP(S) 负载均衡)传入。 这些产品的服务基础架构代码会检查是否为应用或后端服务启用了 IAP。 如果启用了 IAP,系统会将受保护资源的相关信息发送到 IAP 认证服务器。这包括 Google Cloud 项目编号、请求网址以及请求标头或 Cookie 中的任何 IAP 凭据等信息。 然后,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 身份验证。Compute Engine 和 GKE 防火墙规则无法防范来自与受 IAP 保护的应用在同一虚拟机上运行的代码的访问。防火墙规则可以防止来自其他虚拟机的访问,但前提是配置正确。了解您的责任,以确保安全。
如果您使用的是 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 应用 User 角色,则有权访问该应用。如需管理 IAP-secured Web 应用 User 角色列表,请使用 Google Cloud 控制台上的 IAP 面板。
为资源启用 IAP 时,系统会自动创建 OAuth 2.0 客户端 ID 和密钥。如果您删除自动生成的 OAuth 2.0 凭据,IAP 将无法正常运行。您可以在Google Cloud 控制台的“API 和服务”中查看和管理 OAuth 2.0 凭证。情境感知访问权限
在授权步骤中,您可以使用情境感知访问权限来提供对以下类型资源的安全访问权限:
Google Cloud 控制台和 API
- 保护对 Google Cloud的基础设施访问权限的第一层防御。
- 为用户提供高级情境感知 Google Cloud 访问权限。
虚拟机
允许通过 SSH/RDP 以管理员身份访问 Google Cloud 和其他云中的虚拟机。
让您能够实施强大的情境感知控制,仅限指定管理员访问。
Web 应用
为托管在Google Cloud 和其他云中的 Web 应用提供授权和身份验证。
提供持续授权,防止未经授权的访问和数据泄露。
您的职责
IAP 可确保对 Cloud Run、App Engine、Cloud Load Balancing (HTTPS) 和内部 HTTP 负载均衡的所有请求进行身份验证和授权。为确保安全,您必须采取以下预防措施:
如果您要在负载均衡器上启用 IAP,请验证是否可以直接访问后端资源。
如果后端资源是虚拟机,请配置防火墙规则,以防范不通过负载均衡器传输的流量。IAP 无法针对项目内的活动提供保护,例如项目内的其他虚拟机。
如果后端资源是 Cloud Run 服务,您可以停用 run.app 应用网址,以确保所有入站流量都通过负载均衡器进入。如果您选择让 run.app 应用网址保持启用状态,则应使用入站流量控制来阻止来自网络外部的流量。
后续步骤
通过完成以下任务之一开始使用 IAP:
直接在 Cloud Run 服务上或在具有 Cloud Run 后端的负载均衡器上启用 IAP。
完成 App Engine 快速入门以使用 Google 账号管理访问权限。
了解详情: