仅限特定网域访问资源

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

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

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

配置允许的域名

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

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

如需了解详情,请参阅 IapSettings

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

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

如需设置组织内允许的网域,请运行以下命令:

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

如需为文件夹中的资源设置允许的网域,请运行以下命令:

gcloud iap settings set SETTING_FILE --folder=FOLDER

如需为项目中的所有网页类型资源设置允许的网域,请运行以下命令:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web

如需为项目中的所有 App Engine 服务设置允许的网域,请运行以下命令:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE

其中 SETTING_FILE 为:

{
  "access_settings": {
      "allowed_domains_settings": {
          "enable": true,
          "domains": [
              "*.abc.com",
              "*.xyz.co.in"
          ]
      }
  }
}

请替换以下内容:

  • 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. 使用允许的字段设置创建一个带有字段掩码的 JSON 文件。示例 JSON SETTING_FILE

    {
       "iap_settings":{
          "value":{
             "access_settings":{
                "allowed_domains_settings":{
                   "enable":{
                      "value":"True"
                   },
                   "domains":{
                      "value":[
                         "*.abc.com",
                         "*.xyz.co.in"
                      ]
                   }
                }
             }
          }
       },
       "update_mask":{
          "value":"iap_settings.access_settings.allowed_domains_settings"
       }
    }
    
  2. 运行以下命令以使用 UpdateIAPSettings API 添加允许的域名设置。

    curl -i -H "Content-Type:application/json" 
    -H "Authentication: Bearer $(gcloud auth print-access-token)" IAP_URL
    -d SETTINGS_FILE.JSON

如需为组织内的所有资源设定允许的域名设置,请使用以下网址: https://iap.googleapis.com/v1/organization/ORGANIZATION_ID:iapsettings

如需为文件夹中的所有资源设定允许的网域设置,请使用以下网址: https://iap.googleapis.com/v1/folder/FOLDER_ID:iapsettings

如需为项目中的所有网页类型资源设定允许的网域设置,请使用以下网址: https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web:iapsettings

如需为项目中的所有 App Engine 资源设定允许的网域设置,请使用以下网址:https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/appengine-APP_ID:iapsettings

如需为项目中的 App Engine 服务版本设置允许的网域设置,请使用以下网址: https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/appengine-APP_ID/services/APP_SERVICE_ID/versions/VERSION_ID:iapsettings

如需为项目中的所有 Compute Engine 资源设定允许的域名设置,请使用以下网址:https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/compute:iapsettings

如需为项目中的 Compute Engine 资源设定允许的域名设置,请使用以下网址: https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID:iapsettings

问题排查

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