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

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

概览

通过 IAP,您可以为 Google Cloud 项目中的个人资源配置 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 compute.backendServices.update

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

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

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

在 Cloud Console 中管理访问权限

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

添加访问权限

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

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

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

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

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

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

    • 所有者:授予与 IAP 政策管理员相同的访问权限。请改用 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 保护的应用以及使用 IAM 政策更新方法。iap.webServiceVersions.accessViaIAP 权限会授予对应用的访问权限。如果您使用 IAP 控制对 SSH 和 RDP 等管理服务的访问权限,则用户将需要 iap.tunnelInstances.accessViaIAP 权限。

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

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

https://iap.googleapis.com/v1beta1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
资源类型 说明 路径 权限
iap.web 项目中每个受 IAP 保护的 Web 应用。这与 IAP 管理页面上的所有 Web 服务复选框相同。

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

iap.web.setIamPolicy
iap.webTypes 后端服务或 App Engine 应用。这与 IAP 管理页面上的后端服务App Engine 应用复选框相同。 后端服务

全局范围:

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

区域范围:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME


App Engine 应用


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

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

全局范围:

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

区域范围:

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


App Engine 应用


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

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

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

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

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

iap.tunnel.setIamPolicy
iap.tunnelZones 每个至少有一个实例的地区。这与 IAP 管理页面上的地区名称复选框相同,例如 us-central1-c

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

iap.tunnelZones.setIamPolicy
iap.tunnelInstances 单个实例。

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

iap.tunnelInstances.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 的隧道资源的访问权限。
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 访问权限政策的 IAP 管理权限。

公开访问权限

如需向每个人授予对资源的访问权限,请将以下某个成员添加到资源的访问权限列表中:

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

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

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