为了提高整体安全性,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-engine
、iap_web
、compute
、organization
或folder
。 - SERVICE:服务名称。当
resource-type
为compute
或app-engine
时,此项为可选项。 - VERSION:版本名称。这不适用于
compute
,且当resource-type
为app-engine
时是可选的。
API
要配置允许的网域,请完成以下步骤。如需详细了解如何使用 API 配置允许的域名,请参阅 IapSettings。
使用允许的字段设置创建一个带有字段掩码的 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" } }
运行以下命令以使用
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 管理员将您的主机名添加到允许的网域列表中。