管理对受 IAP 保护的资源的访问权限

本页介绍如何在资源级层管理对受 Identity-Aware Proxy (IAP) 保护的资源的个人或群组访问权限。

概览

借助 IAP,您可以为 Google Cloud 项目中的个别资源和 Cloud Run 资源配置 IAP 政策。项目中的多个应用可以分别采用不同的访问权限政策。这包括使用 Compute Engine、Google Kubernetes Engine 和 App Engine 应用的项目。对于 App Engine 应用,各个版本和服务可以采用不同的访问权限政策。

要管理项目级别和更高级别的访问权限,请使用 IAM 管理页面。拥有项目级层访问权限的用户列表(即“主账号”)可以访问该项目中受 IAP 保护的所有资源。

准备工作

在开始之前,您需要做好以下准备:

  • 要添加个人或群组访问权限的受 IAP 保护的资源。
  • 要为其添加访问权限的用户名或群组名。

开启和关闭 IAP

要启用和停用 IAP,您需要具有特定权限。下表显示了每种应用类型所需的权限。

应用类型 所需权限
App Engine appengine.applications.update
Compute Engine、Google Kubernetes Engine 或 Cloud Run compute.backendServices.update

这些权限由 Project Editor、App Engine Admin 和 Compute Network Admin 等角色授予。虽然这些角色允许开启和关闭 IAP,但它们没有修改访问权限政策所需的权限。

此外,使用 Google Cloud 控制台启用 IAP 可能还需要 clientauthconfig.clients.createclientauthconfig.clients.getWithSecret 权限。这些权限由 Project Editor 等角色授予。

要详细了解如何授予角色,请参阅授予、更改和撤消访问权限

在 Google Cloud 控制台中管理访问权限

如需使用 Google Cloud 控制台控制对受 IAP 保护的资源的访问,请按照以下流程添加或移除访问权限。

添加访问权限

  1. 转到 Identity-Aware Proxy 页面
    转到 Identity-Aware Proxy 页面

  2. 选择要用 IAP 保护的资源。选择以下资源后,系统将会为一组相关资源提供安全保护:

    • 所有网络服务:项目中的所有资源都将受到保护。请注意,这与使用 IAM 管理页面授予项目级层访问权限不同。被授予所有 Web 服务资源级层的 IAP Policy Admin 角色的用户将仅具有针对 IAP 政策的权限。

    • 后端服务:所有后端服务都将受到保护。

  3. 在右侧的信息面板上,添加要为其授予某一资源 Identity and Access Management (IAM) 角色的群组或个人的电子邮件地址。

  4. 选择角色下拉列表中选择以下一种角色,以对主账号应用访问权限政策角色:

    • Owner:授予与 IAP Policy Admin 相同的访问权限。请改用 IAP Policy Admin 角色。此角色仅允许修改政策,而不允许访问应用。

    • IAP Policy Admin:授予 IAP 政策的管理员权限。

    • IAP-Secured Web App User:授予使用 IAP 的应用和其他 HTTPS 资源的访问权限。

    • Security Reviewer:授予查看和审核 IAP 政策的权限。

  5. 完成添加电子邮件地址并设置角色,点击添加

移除访问权限

  1. 转到 Identity-Aware Proxy 页面
    转到 Identity-Aware Proxy 页面
  2. 选择受 IAP 保护的资源。
  3. 在右侧的信息面板上,选择与要移除的主账号角色对应的部分。
  4. 在展开的部分中,点击要移除其角色的各用户或群组名称旁的移除
  5. 在显示的移除主账号对话框中,点击移除

使用 API 管理访问权限

IAM 为在 Google Cloud 资源上创建和管理访问权限控制政策提供了一组标准方法。

资源和权限

利用 Cloud IAP API,您可以对受 IAP 保护的项目中的各个资源应用 IAM 权限。在特定级别授予的 IAM 权限适用于其下的所有级别。例如,在项目级层授予的权限适用于项目中的所有 Google Cloud 资源。项目级别和更高级别的访问权限在 IAM 管理页面中进行管理,但将显示在 IAP 管理页面中。

用户需要具备特定权限才能访问受 IAP 保护的应用。如需授予这些权限,管理员可以使用 API 更新 IAM 政策。iap.webServiceVersions.accessViaIAP 权限授予用户对应用的访问权限。如果您使用 IAP 来控制对 SSH 和 RDP 等管理服务的访问权限,则用户需要 iap.tunnelInstances.accessViaIAP 权限。

每个 Cloud IAP 资源都有专属的 getIamPolicysetIamPolicy 权限,这些权限允许管理该资源及其子资源的访问权限政策。

要调用 IAM API,请使用指向资源的网址路径构建一个调用。以下调用示例演示了如何获取 App Engine 应用服务版本的 IAM 政策。

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy

下表列出了支持的资源类型以及调用 IAM API 所需的权限。

资源类型 权限
项目中的每个受 IAP 保护的 Web 应用
这相当于 IAP 管理页面上的所有 Web 服务复选框。

路径

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
后端服务
这相当于 IAP 管理页面上的后端服务复选框。

路径
全局范围:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

区域范围:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
一个 App Engine 应用
这相当于 IAP 管理页面上的 App Engine 应用复选框。

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Compute Engine 后端服务
后端服务路径可以指定后端服务 ID 或后端服务名称。

路径
全局范围:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

区域范围:

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
App Engine 应用服务

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
App Engine 服务版本
Compute Engine 不支持版本控制。

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
项目中的每个受 IAP 保护的虚拟机实例
这相当于 IAP 管理页面上的所有隧道资源复选框。

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
至少有一个虚拟机实例的可用区
这相当于 IAP 管理页面上的可用区名称复选框,例如 us-central1-c

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
单个虚拟机实例

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy
至少有一个目标组的区域,例如 us-central1

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
iap.tunnelLocations.getIamPolicy

iap.tunnelLocations.setIamPolicy
单个目标组

路径

https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
/destGroups/GROUP_NAME
iap.tunnelDestGroups.getIamPolicy

iap.tunnelDestGroups.setIamPolicy

角色

下表列出了 IAP IAM 角色以及每个角色包含的所有 IAP 专属权限的列表。如需详细了解 IAM 角色,请参阅管理角色和权限

角色 具备的权限 说明
IAP-Secured Web App User (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP 授予对 App Engine 和 Compute Engine 资源的访问权限。
IAP-Secured Tunnel User (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
授予对受 IAP 保护的虚拟机实例的访问权限。
IAP Policy Admin (roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
iap.tunnel.getIamPolicy
iap.tunnel.setIamPolicy
iap.tunnelZones.getIamPolicy
iap.tunnelZones.setIamPolicy
iap.tunnelInstances.getIamPolicy
iap.tunnelInstances.setIamPolicy
授予用于管理资源的 IAP 访问权限政策的 IAP 管理权限。

公开访问

如需向所有人授予资源的访问权限,请向以下主帐号之一授予角色:

  • allAuthenticatedUsers:使用 Google 账号或服务账号进行身份验证的任何用户。
  • allUsers:互联网上的任何人,包括经过身份验证和未经身份验证的用户。请求的签名标头不会包含 subemail 声明

如果授予公开访问权限,则 IAP 将不会为该请求生成 Cloud Audit Logs 日志

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