自動掃描工作負載,找出已知安全漏洞


這個頁面可協助您開始使用安全防護機制資訊主頁,並引導您偵測安全漏洞。查看需求、從可用層級中選取,並瞭解如何啟用弱點掃描、部署測試工作負載、查看結果和建議,以及停用掃描。

本頁面適用於負責監控叢集安全問題的安全性專家。如要進一步瞭解Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。

閱讀本頁面之前,請先熟悉工作負載安全漏洞掃描的一般總覽。

定價

如要查看定價資訊,請參閱 GKE 安全防護機制資訊主頁定價

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

需求條件

  • 如要取得使用工作負載安全漏洞掃描功能所需的權限,請要求管理員為您授予專案的安全狀態檢視者 (roles/containersecurity.viewer) 身分與存取權管理角色。 Google Cloud 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    這個預先定義的角色具備使用工作負載安全漏洞掃描功能所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

    所需權限

    如要使用工作負載安全漏洞掃描功能,必須具備下列權限:

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

  • 進階安全漏洞分析功能需要 GKE 1.27 以上版本。

工作負載安全漏洞掃描層級

您可以在層級中啟用安全漏洞掃描功能,每個層級都會新增掃描功能,如下所示。如果您使用 Google Kubernetes Engine (GKE) Enterprise 版管理叢集車隊,也可以設定車隊層級的安全漏洞掃描設定,這些設定會套用至所有成員叢集。如需操作說明,請參閱在機群層級設定 GKE 安全防護機制資訊主頁功能

級別 已啟用的功能 GKE 版本需求
標準
standard
容器 OS 安全漏洞掃描
  • GKE Enterprise 版本:根據預設,執行 1.27 以上版本的所有新叢集都會啟用這項功能
進階安全漏洞分析
enterprise
  • 容器 OS 安全漏洞掃描
  • 語言套件安全漏洞掃描
  • GKE Enterprise 版本:根據預設,執行 1.27 以上版本的所有新叢集都會啟用這項功能
  • GKE Standard 版:所有新叢集預設都會停用這項功能。

如要進一步瞭解各項功能,請參閱「關於工作負載安全漏洞掃描」。

啟用容器 OS 安全漏洞掃描

根據預設,執行 1.27 以上版本的新 Autopilot 叢集會啟用容器 OS 安全漏洞掃描功能。本節說明如何在現有 Standard 叢集和執行 1.27 之前版本的 Autopilot 叢集中啟用這項功能。

在現有叢集上啟用容器 OS 掃描功能

gcloud

更新叢集:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=standard

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION: 叢集控制層的位置。為區域性 Standard 和 Autopilot 叢集提供區域,或為可用區 Standard 叢集提供可用區。

控制台

  1. 前往 Google Cloud 控制台的「安全防護機制」頁面。

    前往「安全防護機制」
  2. 按一下 [設定] 標籤。
  3. 在「已啟用安全漏洞掃描功能的叢集」部分,按一下「選取叢集」
  4. 選取要新增的叢集核取方塊。
  5. 在「選取動作」下拉式選單中,選取「設為基本」
  6. 按一下 [套用]

啟用進階安全漏洞深入分析

進階安全漏洞分析功能可持續掃描執行中的應用程式,找出下列類型的安全漏洞:

  • 容器 OS 安全漏洞
  • 語言套件安全漏洞

啟用進階安全漏洞分析後,系統會自動啟用容器 OS 安全漏洞掃描功能,且無法個別停用。

需求條件

在現有叢集上啟用進階安全漏洞深入分析

gcloud

更新叢集:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=enterprise

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION: 叢集控制層的位置。為區域性 Standard 和 Autopilot 叢集提供區域,或為可用區 Standard 叢集提供可用區。

控制台

  1. 前往 Google Cloud 控制台的「安全防護機制」頁面。

    前往「安全防護機制」
  2. 按一下 [設定] 標籤。
  3. 在「已啟用安全漏洞掃描功能的叢集」部分,按一下「選取叢集」
  4. 選取要新增的叢集核取方塊。
  5. 在「選取動作」下拉式選單中,選取「設為進階」
  6. 按一下 [套用]

部署測試工作負載

在下一節中,您將使用範例 Deployment 資訊清單。Deployment 是 Kubernetes API 物件,可讓您執行多個 Pod 副本,並將這些副本分散到叢集的節點中。

為示範用途,下列資訊清單含有已知安全漏洞。實務上,如果您知道應用程式有安全漏洞,可能就不該執行。

  1. 將下列資訊清單儲存為 os-vuln-sample.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
            env:
            - name: GET_HOSTS_FROM
              value: "dns"
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    
  2. 請查看下列資訊清單,其中包含已知的 Maven 安全漏洞:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: maven-vulns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mavenvulns
      template:
        metadata:
          labels:
            app: mavenvulns
        spec:
          containers:
          - name: maven-vulns-app
            image: us-docker.pkg.dev/google-samples/containers/gke/security/maven-vulns
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
              - name: PORT
                value: "8080"
            resources:
              requests:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
              limits:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
  3. (選用) 取得叢集憑證:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    
  4. 將應用程式部署至叢集:

    kubectl apply -f os-vuln-sample.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/security/language-vulns/maven/deployment.yaml
    

如要測試其他安全漏洞,請嘗試在暫存環境中部署舊版映像檔,例如 nginx

查看結果並採取行動

視掃描的工作負載數量而定,初次掃描至少需要 15 分鐘才會傳回結果。GKE 會在安全防護機制資訊主頁上顯示結果,並自動將項目新增至 Logging。

查看結果

如要查看專案叢集和工作負載中發現的疑慮總覽,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「安全防護機制」頁面。

    前往「安全防護機制」

  2. 點按「Concerns」(疑慮) 分頁標籤。

  3. 在「Filter concerns」(篩選疑慮) 窗格的「Concern type」(疑慮類型) 部分,選取「Vulnerability」(安全漏洞) 核取方塊。

查看問題詳細資料和建議

如要查看特定安全漏洞的詳細資訊,請按一下包含該問題的資料列。

「安全漏洞問題」窗格會顯示下列資訊:

  • 說明:問題說明,包括適用的 CVE 編號,以及安全漏洞的詳細說明和潛在影響。
  • 建議動作:您可以採取哪些行動來解決安全性弱點,例如修正套件版本,以及套用修正程式的位置。

查看發現的疑慮記錄

GKE 會在 Cloud Logging 的 _Default 記錄檔儲存空間中,為每個發現的問題新增項目。這些記錄只會保留一段時間,詳情請參閱「記錄保留期限」。

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

    前往記錄檔探索工具
  2. 在「Query」(查詢) 欄位中,指定下列查詢:

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_VULNERABILITY"
  3. 點選「執行查詢」

如要在 GKE 將新發現項目新增至 Logging 時收到通知,請為這項查詢設定以記錄為準的快訊。詳情請參閱「設定以記錄為準的快訊」。

清除所用資源

  1. 刪除您部署的範例工作負載:

    kubectl delete deployment frontend
    
  2. 也可以選擇刪除您使用的叢集:

    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 \
    --workload-vulnerability-scanning=disabled

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION: 叢集控制層的位置。為區域性 Standard 和 Autopilot 叢集提供區域,或為可用區 Standard 叢集提供可用區。

控制台

  1. 前往 Google Cloud 控制台的「安全防護機制」頁面。

    前往「安全防護機制」
  2. 按一下 [設定] 標籤。
  3. 在「已啟用安全漏洞掃描功能的叢集」部分,按一下「選取叢集」
  4. 找出要移除的叢集,然後勾選對應的核取方塊。
  5. 在「選取動作」下拉式選單中,選取「設為已停用」
  6. 按一下 [套用]

後續步驟