借助 IAP 重新身份验证,服务和应用所有者或 Google Cloud 管理员可以要求经过身份验证的最终用户在指定时间后访问受 IAP 保护的服务或应用时重新进行身份验证,并限制用户在需要身份验证之前可以访问受 IAP 保护的服务或应用的时长。
IAP 重新身份验证(或重新验证)旨在对受 IAP 保护的服务和应用(或应用)强制执行重新身份验证政策。借助此服务,您可以对处理机密信息的关键服务和应用强制执行重新身份验证政策。例如,您可以指定访问关键人力资源应用的用户每小时使用双重身份验证重新进行身份验证。
支持的重新身份验证方法
您可以使用以下方法来管理重新身份验证设置:
- 登录:最终用户使用其登录凭据重新进行身份验证。
- 安全密钥:最终用户使用其配置的安全密钥重新进行身份验证。
- 已注册的双重身份验证方法:最终用户使用其 已注册的双重身份验证方法之一重新进行身份验证。
如需了解详情,请参阅 IapSettings。
设置重新身份验证政策
reauthSettings 作为 IapSettings 的一部分包含在内,并且可以在任何
资源类型在
资源层次结构上设置。您可以在组织、文件夹、项目或服务级别设置
reauthSettings 以应用限制。例如,您可以将组织中所有应用或特定应用的会话时长限制为最多一小时。
有两种政策类型可用于设置重新身份验证:
最低:如果在资源(例如 组织)上将政策类型设置为
MINIMUM,那么在评估 较低级别资源(例如文件夹)上的重新身份验证设置时,这两个设置会合并。如果较低级别资源没有重新身份验证设置,则合并结果是较高级别资源的非空设置。否则,合并会采用这两个资源中较短的会话时长和优先级较高的重新身份验证方法。生成的合并政策类型设置为MINIMUM。默认:如果在资源(例如组织)上将政策类型设置为
DEFAULT,那么在评估较低级别资源(例如文件夹)上的重新身份验证设置时,如果配置了较低级别资源设置,则使用该设置;否则,应用较高级别资源重新身份验证设置。
对于这两种政策类型,评估过程都会重复执行,以确定目标服务或应用的 reauthSettings。任何级别的有效 reauthSettings 确定方式如下:
继承:较高级别资源的设置与 较低级别资源的设置合并。
合并规则:如果较低级别资源没有特定的 重新身份验证设置,则会继承较高级别的设置。
如果两个级别都有
reauthSettings,则合并结果使用以下内容:- 较短的会话时长。
- 优先级较高的重新身份验证方法。
- 优先级顺序为
Secure key(最高)、Enrolled second factors(中等)和Login(最低)。
生成的政策类型:合并设置的政策类型为
MINIMUM。
以下示例展示了评估前后的设置。在评估期间,文件夹和组织的 reauthSettings 会合并,导致文件夹的政策类型更改为
MINIMUM。然后,合并的设置将用于与服务或应用的 reauthSettings 合并。
组织 IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "3600s"
policyType: "MINIMUM"
文件夹 IapSettings:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "1200s"
policyType: "DEFAULT"
服务或应用 IapSettings:
accessSettings:
reauthSettings:
method: "SECURE_KEY"
maxAge: "7200s"
policyType: "DEFAULT"
合并后的设置:
组织 IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "3600s"
policyType: "MINIMUM"
文件夹 IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "1200s"
policyType: "MINIMUM"
服务或应用 IapSettings:
accessSettings:
reauthSettings:
method: "SECURE_KEY"
maxAge: "1200s"
policyType: "MINIMUM"
在此示例中,如果每个资源的政策类型都设置为 DEFAULT,则使用服务或应用的 reauthSettings。
MaxAge
使用 maxAge 参数指定最终用户必须重新进行身份验证的频率,以秒为单位。例如,如需设置一小时的重新身份验证政策,请将秒数设置为
3600,如以下示例所示:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "3600s"
policyType: "MINIMUM"
maxAge 的最小值为 300 秒,即五分钟。
如需设置重新身份验证政策,请完成以下步骤。
控制台
- 转到 IAP 页面。
转到 Identity-Aware Proxy 页面 选择一个项目,然后选择要为其设置重新身份验证政策的资源。
打开资源的设置 ,然后在 重新身份验证政策 下,选择配置重新身份验证 。
指定重新身份验证设置,然后点击保存 。
gcloud
您可以在组织、项目和文件夹级别对资源和服务设置重新身份验证政策。以下是一些用于设置重新身份验证政策的示例命令。
如需了解详情,请参阅 gcloud iap settings set。
运行以下命令:
gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --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
如需对项目内的所有 Web 类型资源设置重新身份验证政策,请运行以下命令:
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 为:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "3600s"
policyType: "MINIMUM"
替换以下内容:
- FOLDER:文件夹 ID。
- ORGANIZATION:组织 ID。
- PROJECT:项目 ID。
- RESOURCE_TYPE:IAP 资源类型。必须为
app-engine、iap_web、compute、organization或folder。 - SERVICE:服务名称。当
resource-type设置为compute或app-engine时,此参数是可选的。 - VERSION:版本名称。此参数不适用于
compute资源类型,对于app-engine资源类型是可选的。
API
运行以下命令以准备 iap_settings.json 文件。根据需要更新值。
cat << EOF > iap_settings.json
{
"access_settings": {
"reauth_settings": {
"method": "LOGIN",
"maxAge": "300s",
"policy_type": "DEFAULT"
}
}
}
EOF
运行 gcloud iap settings get 命令以获取资源名称。从输出中复制 name 字段。您需要在下一步中使用该名称。
gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
将以下命令中的 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.reauthSettings"
了解重新身份验证凭据
成功完成重新身份验证后,IAP 会在最终用户的浏览器上创建 Cookie。为了避免在同一网域上的应用频繁重新进行身份验证,该 Cookie 在顶级专用网域上设置,并且对该级别的整个网域有效。
例如,foo.example.com 是受 IAP 保护的资源,具有 IAP 重新身份验证政策。成功完成重新身份验证后,由于
example.com 是顶级专用网域,IAP 会在其上设置一个 Cookie。来自同一顶级专用网域(例如
bar.example.com)的应用将使用相同的重新身份验证凭据,并且不会提示用户重新进行身份验证(只要凭据有效)。
对于 myapp.appspot.com 等网址,appspot.com 是公共
网域,因此顶级专用网域是 myapp.appspot.com。
已知限制
- 只有浏览器流支持重新身份验证。不支持以编程方式访问用户账号。例如,移动应用和桌面应用无法重新验证用户身份,因为这些应用无法访问需要重新身份验证的资源。
- 服务账号和 IAP-TCP 不受重新身份验证要求的约束。
- 重新身份验证不适用于 Identity and Access Management 成员类型
allUsers。 - 重新身份验证不支持外部身份(例如 OAuth 和 SAML)。
- IAP 重新身份验证不支持员工身份联合身份。