本頁面說明如何自動稽核工作負載設定,找出安全疑慮,並取得可行的建議,提升 Google Kubernetes Engine (GKE) Autopilot 和 Standard 叢集的資安態勢。本指南將逐步說明如何啟用工作負載設定稽核功能、部署測試工作負載、查看設定稽核結果並採取行動,以及停用工作負載設定稽核功能。此外,也會說明工作負載設定稽核的定價、需求和限制。
本頁面適用於監控 GKE 叢集安全性的資安專員,說明如何自動稽核 GKE Autopilot 和 Standard 叢集中的工作負載設定。如要進一步瞭解 Google Cloud 內容中提及的常見角色和工作範例,請參閱「常見的 GKE 使用者角色和工作」。
閱讀本頁面前,請先熟悉下列概念,因為工作負載設定稽核是資安態勢資訊主頁的功能:
定價
GKE 透過 Container Security API 免費提供資安態勢資訊主頁。
新增至 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」- 按一下 [設定] 標籤。
- 在「Configuration audit enabled clusters」(已啟用設定稽核功能的叢集) 區段中,按一下「Select clusters」(選取叢集)。
- 勾選要新增的叢集。
- 在「選取動作」下拉式選單中,選取「設為基本」。
- 按一下「套用」。
您也可以設定機群層級的設定稽核設定,套用至所有成員叢集。如需操作說明,請參閱「在機群層級設定 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」(疑慮) 分頁標籤。
在「Filter concerns」(篩選疑慮) 窗格的「Concern type」(疑慮類型) 部分,勾選「Configuration」(設定) 核取方塊。
查看疑慮詳情和建議
如要查看特定設定問題的詳細資訊,請按一下包含該問題的資料列。
「Configuration Concern」(設定問題) 窗格會顯示下列資訊:
- 說明:問題說明。
- 應變措施建議:概略說明可採取哪些行動來修正設定問題。這個部分包含下列詳細資料:
- 需要修正的資源
- 可執行的指令範例,用於將修正項目套用至受影響的資源
- Google Cloud 控制台操作說明 (如適用),說明如何修正問題
查看偵測到的疑慮記錄
GKE 會在 Logging 的 _Default 記錄檔 bucket 中,為每個發現的問題新增項目。這些記錄只會保留一段時間。詳情請參閱「記錄檔保留期限」。
前往 Google Cloud 控制台的「Logs Explorer」頁面:
前往「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」(安全防護機制)- 按一下 [設定] 標籤。
- 在「Configuration audit enabled clusters」(已啟用設定稽核功能的叢集) 區段中,按一下「Select clusters」(選取叢集)。
- 在「Audit enabled」(已啟用稽核) 分頁中,勾選要移除的叢集核取方塊。
- 依序點選「Disable audit」(停用稽核) 和「Confirm」(確認),停用這些叢集的稽核功能。
工作負載設定稽核的限制
- 不支援 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 提交客服案件,重設資料庫狀態。