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

为了提高整体安全性,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_webcomputeorganizationfolderbackend-servicesforwarding-rulecloud-run
  • SERVICE:服务名称。当 resource-typecomputeapp-engine 时,此参数为可选参数。
  • VERSION:版本名称。此参数不适用于 compute,当 resource-typeapp-engine 时,此参数为可选参数。

您必须指定以下至少一个标志来定义设置的范围:

  • --organization=ORGANIZATION
  • --folder=FOLDER
  • --project=PROJECT

API

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

  1. 运行以下命令以准备 iap_settings.json 文件。根据需要更新值。
 {
     "access_settings":{
         "allowed_domains_settings":{
             "enable": true
             "domains": [
                 "*.example.com",
                 "*.exampe.net"
             ]
         }
     }
 }
  1. 运行 gcloud iap settings get 命令获取资源名称。从输出中复制“name”字段。您将在下一步中用到该名称。
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 管理员将您的主机名添加到允许的网域列表中。