本頁說明如何使用 Identity-Aware Proxy (IAP) 保護 Google Kubernetes Engine (GKE) 執行個體。
如要保護不在 Google Cloud上的資源,請參閱「保護內部部署應用程式和資源」。
總覽
IAP 已透過 GKE 的輸入整合。這項整合功能可讓您控制員工的資源層級存取權,而非使用 VPN。
在 GKE 叢集中,連入流量是由 Cloud Load Balancing 的元件「HTTP(S) 負載平衡」處理。HTTP(S) 負載平衡器通常可透過 Kubernetes 輸入控制器設定。輸入控制器會從 Kubernetes 輸入物件取得設定資訊,這個輸入物件與一或多個服務物件相關聯。每個 Service 物件都會保留轉送資訊,用以將傳入要求導向特定 Pod 和通訊埠。
從 Kubernetes 1.10.5-gke.3 版開始,您可以為負載平衡器新增設定,方法是建立服務與 BackendConfig 物件之間的關聯。BackendConfig 是在 kubernetes/ingress-gce 存放區定義的自訂資源定義 (CRD)。
Kubernetes 輸入控制器會讀取 BackendConfig 中的設定資訊,並據此設定負載平衡器。BackendConfig 會保留 Cloud Load Balancing 專屬的設定資訊,並且可讓您為每個 HTTP(S) 負載平衡後端服務定義單獨的設定。
事前準備
如要為 GKE 啟用 IAP,請先準備好下列項目:
- 啟用計費功能的 Google Cloud 主控台專案。
- 一或多個 GKE 執行個體的群組,由 HTTPS 負載平衡器提供服務。當您在 GKE 叢集中建立 Ingress 物件時,系統應會自動建立負載平衡器。
- 瞭解如何為 HTTPS 建立輸入。
- 已註冊至您負載平衡器位址的網域名稱。
- 確認所有要求都擁有身分識別資訊的應用程式程式碼。
- 瞭解如何取得使用者身分識別資訊。
IAP 會使用 Google 代管的 OAuth 用戶端驗證使用者。只有貴機構的使用者可以存取啟用 IAP 的應用程式。如要允許機構外的使用者存取,請參閱「為外部應用程式啟用 IAP」。
啟用 IAP
如果您尚未設定專案的 OAuth 同意畫面,系統會提示您進行設定。如要設定 OAuth 同意畫面,請參閱「設定 OAuth 同意畫面」。
如果您執行的是 GKE 叢集 1.24 以上版本,可以使用 Kubernetes Gateway API 設定 IAP 和 GKE。如要這麼做,請完成下列步驟,然後按照「設定應用程式內商品」中的操作說明操作。請勿設定 BackendConfig。
設定 IAP 存取權
-
前往「Identity-Aware Proxy」頁面。
前往 Identity-Aware Proxy 頁面 - 選取要使用 IAP 保護的專案。
-
找出要授予存取權的資源,然後勾選旁邊的核取方塊。
如果沒有看到資源,請確認資源已建立,且 BackendConfig Compute Engine Ingress 控制器已同步。
如要確認後端服務是否可用,請執行下列 gcloud 指令:
gcloud compute backend-services list - 在右側面板中,按一下「新增主體」。
-
在顯示的「Add principals」(新增主體) 對話方塊中,輸入群組或個別使用者的電子郵件地址,其應擁有專案的「IAP-secured Web App User」(受 IAP 保護的網路應用程式使用者) 角色。
下列類型的主體可以擁有這個角色:
- Google 帳戶:user@gmail.com
- Google 群組:admins@googlegroups.com
- 服務帳戶:server@example.gserviceaccount.com
- Google Workspace 網域:example.com
請務必新增您可以存取的 Google 帳戶。
- 從「Roles」(角色) 下拉式清單中選取「Cloud IAP」>「IAP-secured Web App User」(受 IAP 保護的網頁應用程式使用者)。
- 按一下「Save」(儲存)。
設定 BackendConfig
您可以新增 iap 區塊,為 IAP 設定 BackendConfig。
將 iap 區塊新增至 BackendConfig
如要為 IAP 設定 BackendConfig,您需要指定 enabled 值。確認您具備 compute.backendServices.update 權限,然後將 iap 區塊新增至 BackendConfig。
如要使用 1.16.8-gke.3 以上版本的 GKE,請使用 cloud.google.com/v1 API 版本。
如果使用較舊的 GKE 版本,請使用 cloud.google.com/v1beta1。
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: CONFIG_DEFAULT
namespace: my-namespace
spec:
iap:
enabled: true將服務通訊埠與 BackendConfig 建立關聯
此外,您還必須將服務通訊埠與您的 BackendConfig 建立關聯來觸發啟用 IAP。如要建立這項關聯,其中一個方法是將服務的所有通訊埠預設為 BackendConfig,方法是將下列註解新增至 Service 資源:
metadata:
annotations:
beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'驗證 BackendConfig
如要測試設定,請執行 kubectl get event。如果看到「no BackendConfig for service port exists」訊息,表示您已成功將服務通訊埠與 BackendConfig 建立關聯,但系統找不到 BackendConfig 資源。如果您尚未建立 BackendConfig 資源、在錯誤的命名空間中建立 BackendConfig 資源,或是在服務註解中拼錯參照名稱,都可能發生這種錯誤。
停用 IAP
如要關閉 IAP,您必須將 BackendConfig 的 enabled 設為 false。若您將 IAP 區塊從 BackendConfig 刪除,將保留所有設定。舉例來說,如果 IAP 處於啟用狀態,而您刪除該區塊,IAP 仍將維持啟用狀態。
後續步驟
- 套用存取層級,設定更精細的情境規則。
- 請參閱「在 Cloud 稽核記錄中查看情境感知存取權記錄」。
- 進一步瞭解 IAP。
- 瞭解如何在 GKE 上設定 Cloud CDN。
- 瞭解如何為 GKE 設定 Cloud Armor。
- 進一步瞭解 BackendConfig 資源。