Identity-Aware Proxy 簡介

本頁面說明 Identity-Aware Proxy (IAP) 的基本概念,這是一項 Google Cloud 全球服務。

透過 HTTPS 存取的應用程式可經由 IAP 建立中央授權層,因此,您可以使用應用程式層級的存取權控管模型,而非依賴網路層級的防火牆。

IAP 政策可跨機構進行資源調度。您可以集中定義存取權政策並將其套用至所有應用程式與資源。若指派專屬團隊建立及強制執行政策,您可以避免專案在任何應用程式中錯誤定義或實作政策。

使用 IAP 的時機

請在您想針對應用程式與資源強制執行存取權控管政策時使用 IAP。IAP 會使用簽署標頭或 App Engine 標準環境 Users API 來保護您的應用程式。您可以使用 IAP 設定以群組為基礎的應用程式存取權:員工可以存取資源而承包商無法存取資源,或者只有特定部門可以存取資源。

IAP 的運作方式

當應用程式或資源受到 IAP 保護時,只能由主體透過 Proxy 存取,這些主體又稱為使用者,擁有正確的 Identity and Access Management (IAM) 角色。當您透過 IAP 授予使用者對應用程式或資源的存取權時,使用者會受到由使用中產品導入的精密存取權控管,且不需要 VPN。使用者嘗試存取 IAP 保護的資源時,IAP 會執行驗證及授權檢查。

App Engine
使用 Cloud IAP 時 App Engine 的要求路徑圖
Cloud Run
使用 Cloud IAP 時 Cloud Run 的要求路徑圖
Compute Engine
使用 Cloud IAP 時 Compute Engine 與 Kubernetes Engine 的要求路徑圖
GKE
使用 Cloud IAP 時 Compute Engine 與 Kubernetes Engine 的要求路徑圖
地端部署
使用 Cloud IAP 時內部部署應用程式的要求路徑圖

驗證

對 Google Cloud 資源的要求會經過 Cloud Run、App Engine 和 Cloud Load Balancing (外部和內部 HTTP(S) 負載平衡)。這些產品的服務基礎架構程式碼會檢查應用程式或後端服務是否已啟用 IAP。如果已啟用 IAP,系統會將受保護資源的相關資訊傳送至 IAP 驗證伺服器,其中包括 Google Cloud 專案編號、要求網址以及要求標頭或 Cookie 中的任何 IAP 憑證等資訊。

接下來,IAP 會檢查使用者的瀏覽器憑證。如果不存在任何憑證,系統會將使用者重新導向至 OAuth 2.0 Google 帳戶登入流程,以將憑證儲存在瀏覽器 Cookie 中,供未來登入使用。如果您需要為現有使用者建立 Google 帳戶,可以使用 Google Cloud Directory Sync 同步處理 Active Directory 或 LDAP 伺服器。

如果要求憑證有效,驗證伺服器會使用這些憑證取得使用者的身分識別資訊 (電子郵件地址與使用者 ID);然後使用身分識別資訊檢查使用者的 IAM 角色,並查看使用者是否已獲授權,可以存取資源。

如果您使用 Compute Engine 或 Google Kubernetes Engine,能夠存取虛擬機器 (VM) 應用程式提供通訊埠的使用者可以略過 IAP 驗證。如果執行程式碼的 VM 與受 IAP 保護的應用程式所在的 VM 相同,Compute Engine 與 GKE 防火牆無法避免其進行存取。防火牆規則若正確設定,即能夠保護來自另一個 VM 的存取。請瞭解您的責任以確保安全性。

如果您使用 Cloud Run,可以透過下列方式啟用 IAP

  • 直接在 Cloud Run 服務上。這樣一來,IAP 就能保護 Cloud Run 的所有連入路徑,包括自動指派的網址和任何已設定的負載平衡器網址。如果您要為單一 Cloud Run 服務啟用 IAP,這項設定就非常實用。
  • 透過以 Cloud Run 後端為基礎的負載平衡器。如果您在單一全域負載平衡器後方,有多個位於不同區域的 Cloud Run 服務,這項設定就非常實用。在此設定中,自動指派的網址不會受到 IAP 保護,可能可以直接存取。進一步瞭解您的責任,確保安全性。

如果 Cloud Run 服務位於負載平衡器後方,請勿同時在負載平衡器和 Cloud Run 服務上啟用 IAP。

授權

驗證之後,IAP 會套用相關 IAM 政策,檢查使用者是否已獲授權,可以存取要求的資源。如果使用者擁有資源所在Google Cloud 控制台專案上的「IAP-Secured Web App User」(受 IAP 保護的網路應用程式使用者) 角色,表示其已獲授權,可以存取應用程式。如要管理「IAP-Secured Web App User」(受 IAP 保護的網路應用程式使用者) 角色清單,請使用 Google Cloud 控制台中的 IAP 面板

針對資源啟用 IAP 時,系統會自動建立 OAuth 2.0 用戶端 ID 和密鑰。如果您刪除自動產生的 OAuth 2.0 憑證,IAP 會無法正常運作。您可以在Google Cloud 控制台的「APIs & service」(API 和服務) 中查看及管理 OAuth 2.0 憑證。

情境感知存取權

授權步驟中,您可以使用情境感知存取權,安全地存取下列類型的資源:

Google Cloud 控制台和 API
  • 保護基礎架構存取權的第一道防線。 Google Cloud
  • 為使用者提供進階情境感知存取權 Google Cloud 。
虛擬機器 (VM)
  • 啟用對 Google Cloud 和其他雲端 VM 的管理員 SSH/RDP 存取權。
  • 可讓您實施完善的情境感知控管機制,限制只有指定管理員可以存取。
網頁應用程式
  • 為Google Cloud 和其他雲端平台代管的網路應用程式提供授權和驗證。
  • 提供持續授權,防止未經授權的存取活動和資料遺失。

您的責任

IAP 會保護對 Cloud Run、App Engine、Cloud Load Balancing (HTTPS) 和內部 HTTP 負載平衡的所有要求進行驗證與授權。

為確保安全,您必須採取下列預防措施:

  • 如果要在負載平衡器上啟用 IAP,請確認是否可直接存取後端資源。
    • 如果後端資源是 VM,請設定防火牆規則,防止流量未經由負載平衡器傳送。IAP 無法保護專案內的活動,例如專案內的其他 VM。
    • 如果後端資源是 Cloud Run 服務,您可以停用 run.app 網址,確保所有輸入流量都透過負載平衡器傳入。如果您選擇啟用 run.app 網址,請使用輸入控制項封鎖來自網路外部的流量。
  • 更新應用程式以使用簽署標頭,或使用 App Engine 標準環境 Users API

後續步驟