限制特定网域可以访问资源

为了提高整体安全性,IAP 默认拒绝访问没有匹配的服务器名称指示 (SNI) 的请求。这样一来,IAP 便可将网址重定向到恶意网域。IAP 允许的网域功能为受 IAP 保护的资源提供了额外的安全层。作为资源所有者或 IAP 管理员,您可以通过配置“允许的网域”功能,将对受 IAP 保护的资源的访问限制为特定网域。

在以下情况下,您还可以配置允许 IAP 的网域:

  • 您的浏览器或中间代理强制连接池:在这种情况下,您会收到 HTTP 响应 429 和错误代码 51。为了解决此问题,IAP 管理员可以更新允许的网域列表,在其中添加您的主机名。
  • 提供的主机名与服务器上的 SSL 证书不匹配:在这种情况下,您会收到错误代码 52。为了解决此问题,IAP 管理员可以更新允许的网域列表,在其中添加您的主机名。

配置允许的网域

您可以使用 gcloud 或 API 来配置允许的网域设置。如需配置允许的网域,请使用以下字段:

  • enable:布尔值。开启或关闭“允许的网域”功能。
  • Domains:字符串。允许的网域列表。网域可以包含通配符前缀,例如 *.example.com.。域名不能直接在公共后缀或顶级域名上包含通配符。示例:*.com*.co.in

如需了解详情,请参阅 IapSettings

如需配置允许 IAP 的网域,请完成以下步骤:

控制台

  1. 前往 IAP 页面。
    转到 Identity-Aware Proxy
  2. 选择项目,然后选择要启用“允许的网域”功能的资源。
  3. 打开资源的设置。在允许的域名下方,选择启用允许的域名
  4. 指定允许的网域列表,然后点击保存

gcloud

以下是一些用于指定允许的网域的示例命令。

如需了解详情,请参阅 gcloud iap settings set

运行以下命令:

gcloud iap settings set SETTING_FILE [--folder=FOLDER --organization=ORGANIZATION --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

其中 SETTING_FILE 为:

accessSettings:
  allowed_domains_settings:
    enable: true
    domains: ["*.example.com", "*.example.net"]

替换以下内容:

  • FOLDER:文件夹 ID。
  • ORGANIZATION:组织 ID。
  • PROJECT:项目 ID。
  • RESOURCE_TYPE:IAP 资源类型。必须是 app-engineiap_webcomputeorganizationfolder
  • SERVICE:服务名称。当 resource-typecomputeapp-engine 时,此属性是可选的。
  • VERSION:版本名称。此字段不适用于 compute,当 resource-typeapp-engine 时,此为可选项。

API

如需配置允许的网域,请完成以下步骤。如需详细了解如何使用 API 配置允许的网域,请参阅 IapSettings

  1. 运行以下命令以准备 iap_settings.json 文件。根据需要更新值。
 {
     "access_settings":{
         "allowed_domains_settings":{
             "enable": true
             "domains": [
                 "*.example.com",
                 "*.exampe.net"
             ]
         }
     }
 }
  1. 通过运行 gcloud iap settings get 命令获取资源名称。从输出中复制名称字段。在下一步中,您将需要用到该名称。
gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
  1. 将以下命令中的 RESOURCE_NAME 替换为上一步中的名称。系统将会更新 IapSettings
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.allowedDomainsSettings.enable,iapSettings.accessSettings.allowedDomainsSettings.domains"

问题排查

允许的网域访问问题
如果您收到错误代码 53,请让 IAP 管理员将您的主机名添加到允许的网域列表中。