限制对特定网域的资源访问权限

为了提高整体安全性,IAP 默认会拒绝对 没有匹配的服务器名称指示 (SNI) 的请求。 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 管理员将您的主机名添加到允许的网域列表中。