檢視次數:

如何手動建立 Kubernetes 網路政策以持續符合規範?

預設情況下,容器安全性持續合規會代表您創建 Kubernetes 網路策略。如果您想手動創建該策略,請按照以下步驟操作:

步驟

  1. cloudOne.oversight.enableNetworkPolicyCreation 的值更改為 false
      cloudOne:
        oversight:
          enableNetworkPolicyCreation: false
  2. 在您想要的命名空間中,建立一個網路策略,將 matchLabels 設定為 trendmicro-cloud-one: isolate
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        labels:
          app.kubernetes.io/instance: trendmicro
        name: trendmicro-oversight-isolate-policy
      spec:
        podSelector:
          matchLabels:
            trendmicro-cloud-one: isolate
        policyTypes:
        - Ingress
        - Egress
    重要
    重要
    每個應用程式命名空間中必須存在具有 matchLabels trendmicro-cloud-one: isolate 的網路政策,才能執行適當的隔離緩解措施。

如何執行與容器安全相關的Helm圖表操作?

請參考下表以查找您可以使用 Helm 命令執行的可用任務。
任務
說明
升級您的容器安全部署
要將現有安裝在預設 Kubernetes 命名空間中的版本升級到最新版本:
  helm upgrade \
    --values overrides.yaml \
    --namespace ${namespace} \
    trendmicro \
    https://github.com/trendmicro/cloudone-container-security-helm/archive/master.tar.gz
上述腳本會覆寫或重置 overrides.yaml 檔案中的值。如果您想使用之前的值,請在 Helm 升級時使用 -reuse-values 參數:
  helm upgrade \
    --namespace ${namespace} \
    --reuse-values \
    trendmicro \
    https://github.com/trendmicro/cloudone-container-security-helm/archive/master.tar.gz 
啟用或停用特定元件
可以使用覆蓋檔案單獨啟用或停用容器安全 Helm 圖表的特定組件。例如,您可以在您的 overrides.yaml 檔案中包含以下內容來選擇啟用運行時安全組件:
  cloudOne:
    runtimeSecurity:
      enabled: true
在 AWS bottlerocket 上啟用執行時安全性
您可以透過在overrides.yaml檔案中新增這些配置來在AWS bottlerocket節點上運行運行時安全性:
securityContext:
  scout:
    scout:
      allowPrivilegeEscalation: true
      privileged: true

如何收集日誌以進行疑難排解?

當疑難排解問題時,您可以使用多個日誌。

訪問日誌

大多數問題可以使用應用程式日誌進行調查。可以使用kubectl訪問日誌。您可以訪問以下日誌
  • 使用以下命令的准入控制器:
    kubectl logs deployment/trendmicro-admission-controller --namespace ${namespace}
  • 使用以下命令的運行時安全組件,其中容器可以是scoutfalco
     kubectl logs daemonset/trendmicro-scout --namespace ${namespace} -c
         ${container}
  • 監督控制器(持續合規策略執行)使用以下命令:
     kubectl logs deployment/trendmicro-oversight-controller [controller-manager |
         rbac-proxy] --namespace ${namespace}
  • 使用控制器請使用以下命令:
     kubectl logs deployment/trendmicro-usage-controller [controller-manager | rbac-proxy]
         --namespace ${namespace}

收集技術支援中心日誌

當開啟技術支援中心案件時,請在已啟動偵錯日誌記錄的情況下重現問題,並包含偵錯日誌包。日誌包有助於您技術支援中心提供者偵錯問題,特別是與叢集內組件或通信相關的問題。您可以從 趨勢科技 使用日誌收集腳本。
請按照以下步驟啟用偵錯日誌記錄:
  1. logConfig.logLevel 設定為 debugoverrides.yaml 檔案中,並升級 helm chart。
    logConfig:
      logLevel: debug
  2. 重現問題並使用以下命令收集日誌:
    ./collect-logs.sh
支援以下環境變數以進行日誌收集:
環境變數 說明 預設
釋放 Helm 發行名稱 趨勢科技
命名空間 Helm chart 部署所在的命名空間 目前在 kubeconfig 中宣告的命名空間。如果 kubeconfig 中沒有命名空間設定,則會使用 trendmicro-system

為什麼我在 API 呼叫時會收到401 未經授權訊息?

這通常是因為您尚未建立 API 金鑰來驗證您對容器安全的請求。關於建立和使用 Trend Vision One API 金鑰的資訊,請參閱 獲取 API 金鑰
Deprecated:有關建立和使用舊版 API 金鑰的資訊,請參閱工作負載安全 API 金鑰說明

容器安全是否需要對我的 Kubernetes 叢集進行輸入網路訪問?

容器安全目前不需要任何輸入網路存取,也不需要在輸入防火牆規則中新增任何額外的 IP 位址。來自准入控制器的通訊僅通過 HTTPS 埠 443 發起輸出。

在建立政策時是否支援正規表達式?

我們在首個版本中支援圖像註冊表、名稱和標籤的關鍵字「包含」和「以...開始」。這提供了一個基本的正則表達式介面。

每個 Kubernetes 叢集是否需要自己的准入控制器?

是的。每個 Kubernetes 叢集應該有自己的准入控制器。如果需要,您可以調整所需的副本數。預設值為 1。

驗證准入控制 Webhook 會導致容器安全性更改容器的配置嗎?

不。它只會驗證部署請求是否在策略定義中被允許或拒絕。

在驗證階段,當您運行 kubectl apply -f <...> 時,准入控制器是否查詢容器安全?如果是,每次查詢是否使用本地快取?

是的。每次在 Kubernetes 中發生審查請求時,准入控制器都會查詢容器安全性,不論是執行 kubectl create 還是 kubectl apply
未使用本地快取來查詢或政策,以確保政策始終是最新的。
預設情況下,來自 kube-system 命名空間的審查請求不會轉發到容器安全性。欲了解詳細資訊,請參閱 admission controller yaml 檔案

容器安全中的遙測用於什麼?准入控制正在發送什麼類型的資料防護?

如需有關資料蒐集和遙測的詳細資訊,請參閱 Trend Vision One 容器安全資料蒐集注意事項

何時應增加准入控制器的副本數量?

考慮在大型環境中增加准入控制器的副本數量,因為在這些環境中可能會同時發生許多准入請求。當 Pod 擴展其副本數量、新部署發生等情況時,會發生准入請求。

如何將具有多個容器的 Pod 添加到例外項目中?

具有多個容器的 Pod 應為其內部的所有容器設置例外。僅當所有請求的容器均未違反政策規則或符合例外標準時,容器安全性才允許該請求。

為什麼我的 pod 無法與網路存取隔離?

如果您在連續合規策略或執行期規則中使用隔離操作,則運行受保護資源的 Kubernetes 叢集必須啟用 Kubernetes 網路策略。要啟用 Kubernetes 網路策略,請使用 Helm chart README 中提供的指南安裝具有 NetworkPolicy 支援的網路插件。

為什麼弱點沒有顯示在弱點視圖中?

本節涵蓋執行期掃描中常見的一些問題及其解決方法。
掃描程序正在以OOMKilled狀態被已終止:
  • 可以通過 kubectl 等工具觀察掃描器 pod 狀態。在這種情況下,運行以下日誌可能會被觀察到
    kubectl describe nodes: 
                         Memory cgroup out of memory: Killed process xxxxx (sbom-job)
  • 在正常操作期間,部署在您叢集中的每個唯一映像都會觸發一個掃瞄器 pod。此掃瞄作業會為部署的映像生成一份軟體物料清單 (SBOM),並將 SBOM 發送到 Trend Vision One 進行進一步分析。如果生成的 SBOM 大於掃瞄作業的預設最大記憶體限制,則該 pod 將以 OOMKilled 狀態被已終止。特別大的映像(例如機器學習映像)可能會導致特別大的 SBOM。為了解決此問題,您可以在您的 Helm 覆蓋 YAML 文件(通常是 overrides.yaml)中覆蓋 掃瞄作業的預設最大記憶體限制
    cloudOne:
        apiKey: <API_KEY>
        endpoint: <ENDPOINT>
        vulnerabilityScanning:
            enabled: true
    resources:
        scanner:
            limits:
                memory: 1024Mi
    
  • 若要套用新配置,請執行 helm upgrade 命令。如果您繼續遇到相同問題,請考慮再次增加掃描器記憶體(例如,2048Mi)。
發現的弱點正在從弱點視圖中消失:
  • 執行期掃描弱點檢視目前是您叢集中弱點的即時表示。一旦弱點不再在叢集中運行(弱點容器已終止),它將立即從弱點檢視中移除。

我可以在我的叢集中安裝多個掃瞄工具嗎?

建議每個叢集中只包含一個掃瞄工具,因為多個此類工具同時運行可能會導致不可預測的行為,這些工具會不斷掃瞄彼此的 pods。如果無法避免這種情況,您可以通過在覆蓋文件中添加以下內容,將另一個掃瞄工具的命名空間排除在容器安全掃瞄之外:
cloudOne:
exclusion:
namespaces: [list, of, namespaces]
建議排除您安裝容器安全性的命名空間,以避免被其他掃瞄工具掃瞄。

什麼時候應該增加 Vulnerability Scanner pods 的最大併發數?

大型叢集可以透過增加漏洞掃描器 pod 的預設最大併發數來加快掃描結果,使用更多叢集的資源。掃描器 pod 的併發限制旨在限制 Container Security 在叢集中的資源使用。例如,如果併發限制設為 5,則最多可以同時掃描 5 個唯一的映像。可以通過您的覆蓋檔案修改掃描器 pod 的併發限制:
cloudOne:
scanManager:
maxJobCount: 15
當增加 Vulnerability Scanner pods 的並發限制時,請確保您的叢集有足夠的資源來處理額外的掃描器 pods。您可以通過更改 scanManager 部分中的 maxJobCount 值來更改每個掃描器 pod 的默認資源需求,這些設置位於 Helm chart 中。

如何收集 ECS Scout 服務日誌?

若要有效地從 ECS Scout 服務收集日誌,請按照以下步驟操作:

步驟

  1. 通過導航到您的 ECS 叢集並選擇 trendmicro-scout 服務來訪問該服務。
  2. 點選Logs標籤。
  3. 應用容器和時間篩選器來優化您的搜索,並專注於與您的分析相關的最新日誌。
  4. 要進一步分析日誌,請點選View in CloudWatch。在 CloudWatch 中,您可以選擇以 CSV 格式下載日誌,以便進行詳細檢查和存檔。

如何從私人註冊表中提取映像?

預設情況下,Container Security 將公共容器映像儲存在 Amazon ECR Public Gallery 中,並根據 helm chart 將這些映像拉入叢集。使用私人註冊表允許不受速率限制的映像拉取,並允許以符合公司最佳實踐的方式儲存容器映像。
要從私人註冊表中提取映像,請使用以下步驟:
注意
注意
以下步驟以私有的 Amazon Elastic Container Registry (ECR) 為例,但具體過程會根據您使用的容器註冊表而有所不同。

步驟

  1. 按照 Amazon 使用者指南的說明(步驟 1 到 8)在 AWS 管理控制台為 Amazon ECR Public 建立拉取快取規則
  2. 修改 helm 覆蓋檔案以使用您的私有 ECR 註冊表 URL、專案名稱和映像拉取密鑰,格式如下:
    images:
      defaults:
        registry: <your-private-registry>
        project: <prefix-path>
        imagePullSecret: <pull-secret-if-needed>
    例如:
    images:
      defaults:
        registry: <aws-account>.dkr.ecr.us-east-1.amazonaws.com
        project: <namespace>/trendmicro/container-security
        imagePullSecret: <ecr-cred>
    秘訣
    秘訣
    您可以使用 helm installhelm upgrade 命令來修改您的 helm 覆蓋檔案值。