IAP 重新驗證

服務和應用程式擁有者或Google Cloud 管理員可以透過 IAP 重新驗證功能,要求經過驗證的使用者在指定時間後重新驗證,才能存取受 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 秒 (5 分鐘)。

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

主控台

  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-type 設為 computeapp-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,且該 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 重新驗證不支援員工身分聯盟身分。