IAP 重新驗證

透過 IAP 重新驗證功能,服務和應用程式擁有者或Google Cloud 管理員可以要求經過驗證的使用者,在指定時間後重新驗證,才能存取受 IAP 保護的服務或應用程式,並限制使用者在需要驗證前,可存取受 IAP 保護服務或應用程式的時間。

IAP 重新驗證 (或稱重新驗證) 的設計,是為了對受 IAP 保護的服務和應用程式 (或稱應用程式) 強制執行重新驗證政策。這項服務可讓您針對處理機密資訊的重要服務和應用程式,強制執行重新驗證政策。舉例來說,您可以指定使用者在存取重要的人資應用程式時,每小時都要使用第二驗證因素重新驗證。

支援的重新驗證方法

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

  • 登入:使用者使用登入憑證重新驗證。

  • 安全金鑰:使用者透過設定的安全金鑰重新驗證。

  • 已註冊的雙重驗證:使用者透過其中一種已註冊的雙重驗證方法重新驗證。

詳情請參閱 IapSettings。

設定重新驗證政策

reauthSettings 包含在 IapSettings 中,可設定於資源階層中的任何資源類型。您可以在組織、資料夾、專案或服務層級設定 reauthSettings,藉此套用限制。舉例來說,您可以將組織中所有應用程式或特定應用程式的工作階段長度限制為最多一小時。

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

  • Minimum:如果資源 (例如組織) 的政策類型設為 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 秒 (5 分鐘)。

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

控制台

  1. 前往「IAP」頁面。
    前往「Identity-Aware Proxy」頁面

  2. 選取專案,然後選取要設定重新驗證政策的資源。

  3. 開啟資源的「Settings」(設定),然後在「Reauthentication policy」(重新驗證政策) 下方,選取「Configure reauthentication」(設定重新驗證)。

  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-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 指令,取得資源名稱。複製輸出內容中的名稱欄位。您會在後續步驟中用到這個名稱。

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 重新驗證政策。重新驗證成功後,IAP 會在 example.com 上設定 Cookie,因為這是頂層私人網域。來自相同頂層私人網域 (例如 bar.example.com) 的應用程式會使用相同的重新驗證憑證,只要憑證有效,就不會提示使用者重新驗證。

以 myapp.appspot.com 這樣的網址來說,appspot.com 是公用 網域,因此頂層私人網域是 myapp.appspot.com。

已知限制

  • 重新驗證僅適用於瀏覽器流程。不支援透過程式輔助方式存取使用者帳戶。舉例來說,行動和電腦應用程式無法重新驗證使用者,因為這些應用程式無法存取需要重新驗證的資源。

  • 服務帳戶和 IAP-TCP 不受重新驗證規定限制。

  • 重新驗證不適用於 Identity and Access Management 成員類型 allUsers。

  • 重新驗證不支援 OAuth 和 SAML 等外部身分。

  • IAP 重新驗證不支援員工身分聯盟身分。