本頁面說明如何自動稽核工作負載設定,找出安全疑慮,並取得實用建議,以提升 Google Kubernetes Engine (GKE) Autopilot 和 Standard 叢集的安全狀態。本文將逐步說明如何啟用工作負載設定稽核、部署測試工作負載、查看及處理設定稽核結果,以及停用工作負載設定稽核。此外,本文也說明工作負載設定稽核的價格、需求條件和限制。
本頁內容適用於監控 GKE 叢集安全性的安全專家,以及想進一步瞭解如何自動稽核 GKE Autopilot 和 Standard 叢集工作負載設定的使用者。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud
在閱讀本頁內容之前,請先熟悉下列概念,因為工作負載設定稽核是安全狀況資訊主頁的功能:
定價
您可透過 Container Security API,在 GKE 中免費使用安全防護機制資訊主頁。
新增至 Cloud Logging 的項目會套用 Cloud Logging 定價。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
啟用 Container Security API。
請確認您有執行 1.21 以上版本的 Autopilot 或 Standard 叢集。如要建立新叢集,請參閱「建立 Autopilot 叢集」。
需求條件
-
如要取得使用工作負載設定稽核功能所需的權限,請要求管理員授予您 Google Cloud 專案的「安全性狀態檢視者 」(
roles/containersecurity.viewer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備使用工作負載設定稽核功能所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要使用工作負載設定稽核功能,您必須具備下列權限:
-
resourcemanager.projects.get -
resourcemanager.projects.list -
containersecurity.locations.list -
containersecurity.locations.get -
containersecurity.clusterSummaries.list -
containersecurity.findings.list
-
- 工作負載組態稽核功能需要 GKE 1.21 以上版本。
啟用工作負載設定稽核功能
根據預設,搭載 1.27 以上版本的新 Autopilot 和 Standard 叢集會啟用工作負載組態稽核功能。您也可以使用 gcloud CLI 或 Google Cloud 控制台,手動啟用這項功能。
在現有叢集上啟用設定稽核功能
gcloud
更新叢集:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --security-posture=standard
更改下列內容:
CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION: 叢集控制層的位置。為區域性 Standard 和 Autopilot 叢集提供區域,或為可用區 Standard 叢集提供可用區。
控制台
前往 Google Cloud 控制台的「Security Posture」(安全防護機制) 頁面。
前往「Security Posture」(安全防護機制)- 按一下 [設定] 標籤。
- 在「已啟用設定稽核功能的叢集」部分,按一下「選取叢集」。
- 選取要新增的叢集核取方塊。
- 在「選取動作」下拉式選單中,選取「設為基本」。
- 按一下「套用」。
您也可以設定機群層級的設定稽核設定,並套用至所有成員叢集。如需操作說明,請參閱「在機群層級設定 GKE 安全防護機制資訊主頁功能」。
部署測試工作負載
部署刻意違反 Pod 安全性標準的範例應用程式。
將下列資訊清單儲存為
misconfig-sample.yaml:apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 securityContext: runAsNonRoot: false resources: requests: cpu: 200m將應用程式部署至叢集:
kubectl apply -f misconfig-sample.yaml
如要嘗試其他違規事項,請修改 misconfig-sample.yaml
並使用對應的「錯誤」設定。
查看及處理設定稽核結果
初次稽核最多需要 15 分鐘才能傳回結果。GKE 會在安全防護機制資訊主頁上顯示結果,並自動在叢集記錄中新增項目。
查看結果
如要查看專案叢集和工作負載中發現的疑慮總覽,請按照下列步驟操作:
前往 Google Cloud 控制台的「Security Posture」(安全防護機制) 頁面。
點按「Concerns」(疑慮) 分頁標籤。
在「篩選疑慮」窗格的「疑慮類型」部分,勾選「設定」核取方塊。
查看問題詳細資料和建議
如要查看特定設定問題的詳細資訊,請按一下包含該問題的資料列。
「設定問題」窗格會顯示下列資訊:
- 說明:問題說明。
- 建議做法:查看修正設定問題的行動總覽。這個部分包含下列詳細資料:
- 需要修正的資源
- 可執行的指令範例,用於將修正項目套用至受影響的資源
- 如有適用的 Google Cloud 控制台操作說明,請按照說明修正問題
查看發現的疑慮記錄
針對每個發現的問題,GKE 會在 Cloud Logging 的 _Default 記錄檔 bucket 中新增項目。這些記錄只會保留一段時間,詳情請參閱「記錄保留期限」。
前往 Google Cloud 控制台的「Logs Explorer」:
前往記錄檔探索工具在「Query」(查詢) 欄位中,指定下列查詢:
resource.type="k8s_cluster" jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding" jsonPayload.type="FINDING_TYPE_MISCONFIG"
點選「執行查詢」
如要在 GKE 將新發現項目新增至 Logging 時收到通知,請為這項查詢設定以記錄為準的快訊。詳情請參閱「設定以記錄為準的快訊」。
清除所用資源
刪除您部署的範例工作負載。
kubectl delete deployment helloweb也可以選擇刪除您使用的叢集。
gcloud container clusters delete CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
停用工作負載設定稽核功能
您可以使用 gcloud CLI 或 Google Cloud 控制台,停用工作負載設定稽核功能。
gcloud
執行下列指令:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --security-posture=disabled
更改下列內容:
CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION: 叢集控制層的位置。為區域性 Standard 和 Autopilot 叢集提供區域,或為可用區 Standard 叢集提供可用區。
控制台
前往 Google Cloud 控制台的「Security Posture」(安全防護機制) 頁面。
前往「Security Posture」(安全防護機制)- 按一下 [設定] 標籤。
- 在「已啟用設定稽核功能的叢集」部分,按一下「選取叢集」。
- 在「稽核已啟用」分頁中,選取要移除的叢集核取方塊。
- 按一下「停用稽核」,然後按一下「確認」,即可停用這些叢集的稽核功能。
工作負載設定稽核的限制
- 不支援 Windows Server 節點集區。
- 工作負載設定稽核不會掃描 GKE 管理的工作負載,例如
kube-system命名空間中的工作負載。 - 工作負載設定稽核功能僅適用於節點數量少於 1,000 個的叢集。
安全防護機制資訊主頁最多支援每個叢集 150,000 個有效工作負載設定稽核結果。如果叢集的調查結果數量超過上限,安全狀況資訊主頁就不會再顯示該叢集的設定調查結果。
如要解決這個問題,請使用 Logging 中的記錄檔找出設定問題,然後部署更新後的資訊清單。當設定發現項目數量少於 150,000 個時,安全狀況資訊主頁就會開始顯示叢集的發現項目。
針對每個叢集,GKE 安全防護機制資料庫會追蹤 Kubernetes API 中的所有頂層工作負載物件。舉例來說,管理 20 個副本的 Deployment 會以單一物件追蹤。靜態 Pod 也是單一物件。
資料庫在單一交易中最多可處理 5,000 個物件刪除和建立作業。舉例來說,刪除 Deployment 是一項作業,而重新建立靜態 Pod 則需要兩項作業 (刪除和建立)。如果作業數量超過 5,000 個,安全狀況資訊主頁就會停止顯示該叢集的調查結果。
如果資訊主頁未更新,且您最近調整了叢集中頂層工作負載的數量,可以向 Cloud Customer Care 團隊建立支援案件,重設資料庫狀態。