IAP 重新驗證

啟用 IAP 重新驗證後,服務和應用程式擁有者或Google Cloud 管理員可以要求經過驗證的使用者,在指定時間後重新驗證,才能存取 IAP 保護的服務或應用程式。這項設定會限制使用者存取 IAP 保護服務或應用程式的時間長度,時間一到,系統就會要求使用者重新驗證。

IAP 重新驗證功能旨在對受 IAP 保護的服務和應用程式強制執行重新驗證政策。如果重要服務和應用程式會處理機密資訊,您可能需要採取這項措施。舉例來說,您可以指定使用者每小時都要透過第二個驗證因素,重新驗證存取重要的人資應用程式。

支援的重新驗證方式

您可以使用下列方法管理重新驗證設定:

  • 登入:IAP 會強制重新驗證受保護的應用程式,使用者必須重新登入。
  • 安全金鑰:使用者必須透過已設定的安全金鑰進行雙重驗證,才能重新驗證。
  • 已註冊的雙重驗證:使用者必須透過其中一種已註冊的雙重驗證方法重新驗證。

詳情請參閱「IapSettings」。

設定重新驗證政策

reauthSettingsIapSettings 的一部分,因此可在資源階層中的任何資源類型上設定。您可以在機構、資料夾、專案或服務層級,對服務或應用程式設定 reauthSettings,以套用限制。舉例來說,您可以將機構中所有應用程式或特定應用程式的工作階段長度上限設為一小時。

您可以使用以下兩種政策類型設定重新驗證:

  • 最低:如果資源 (例如機構) 的政策類型設為 MINIMUM,評估較低層級資源 (例如資料夾) 的重新驗證設定時,這兩項設定會合併。如果較低層級的資源沒有重新驗證設定,合併結果就是較高層級資源的非空白設定。否則,合併作業會採用兩項資源中較短的工作階段時間,以及優先順序較高的重新驗證方法。政策類型一律為 MINIMUM。合併後的重新驗證設定會與下一個較低層級資源 (例如專案) 的重新驗證設定合併。

    三種支援方法的優先順序由高至低依序為 Secure keyEnrolled second factorsLogin

  • 預設:如果資源 (例如機構) 的政策類型設為 DEFAULT,則在評估下層資源 (例如資料夾) 的重新驗證設定時,系統會使用下層資源設定 (如有設定),否則會套用上層資源的重新驗證設定。

對於這兩種政策類型,系統都會重複評估程序,以判斷目標服務或應用程式的 reauthSettings。以下範例顯示評估前後的設定。評估期間,資料夾和機構 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 的最小值為五分鐘。

如要設定重新驗證政策,請完成下列步驟。

主控台

  1. 前往 IAP 頁面
    前往「Identity-Aware Proxy」頁面
  2. 選取專案,然後選取要設定重新驗證政策的資源。

  3. 開啟資源的「設定」,然後在「重新驗證政策」下方選取「設定重新驗證」

  4. 指定重新驗證設定,然後按一下「儲存」

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

如要在專案內的所有網頁類型資源上設定重新驗證政策,請執行下列指令:

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-engineiap_webcomputeorganizationfolder
  • SERVICE:服務名稱。如果 resource-typecomputeapp-engine,則此屬性為選用屬性。
  • VERSION:版本名稱。這不適用於 compute,且當 resource-typeapp-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 指令,取得資源名稱。從輸出內容複製名稱欄位。您會在下一個步驟中使用這個名稱。

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,且該 Cookie 在整個私人頂層網域中都有效。

舉例來說,foo.example.com 是受 IAP 保護的資源,且具有 IAP 重新驗證政策。重新驗證成功後,IAP 會在 example.com 上設定 Cookie,因為這是頂層私人網域。來自相同頂層私有網域的應用程式 (例如 bar.example.com) 會使用相同的重新驗證憑證,只要憑證有效,就不會提示使用者重新驗證。

請注意,如果是 myapp.appspot.com 這類網址,appspot.com 是公開網域,因此頂層私人網域為 myapp.appspot.com

已知限制

  • 重新驗證僅適用於瀏覽器流程。不支援以程式輔助方式存取使用者帳戶。舉例來說,行動和電腦應用程式無法重新驗證使用者,因為需要重新驗證的資源無法存取。
  • 服務帳戶和 IAP-TCP 可免除重新驗證需求。
  • 重新驗證不適用於 Identity and Access Management 成員類型 allUsers
  • 採用 Identity Platform 的外部身分不支援重新驗證,因為無法存取需要重新驗證的資源。
  • IAP 重新驗證不支援員工身分聯盟身分。