檢視次數:

Container Security 的點數如何計算? 上層主題

了解 Trend Vision One 如何計算 Container Security 的點數,以更好地管理您的 Container Protection 和點數使用。
Container Security 計算您的每日使用量並在平台使用情況和點數中顯示資料。
功能 描述 鳴謝
Container Security
確保您的容器從建置到終止的安全性,並在每個步驟中保護它們免受不斷演變的威脅。
每日使用量是根據每天掃描的叢集中節點或實例的最大總和來計算的。
每個受保護的 Kubernetes 節點或受保護的 Amazon ECS 實例每月需要 91.67 點數,每個受保護的無伺服器容器 pod 或任務每月需要 9.17 點數。
Container Security - 自訂規則偵測
提供可見性,讓您了解任何違反您組織自訂規則的運行容器活動。
每日使用量是根據 Container Security 每天接收到的日誌大小計算的。
每使用 1 GB 的自訂規則資料需 3 點數。
每個月都會扣除點數。上個月使用的點數會在新月的第一天扣除。請參閱平台使用和點數以獲取詳細資訊。

啟用 Container Security 試用版

您可以在「Cloud Security」「Container Security」啟用30天免費試用版以開始使用Container Security。自動掃瞄映像檔、強制執行部署標準、偵測自訂規則違規、監控檔案完整性,並即時阻止可疑活動。試用版包括Container Security和Container Security - 自訂規則偵測的使用權限。
在試用期結束前,您可以選擇「Continue using the solution after the trial expires」以自動開始付費使用。如果未選擇此選項,您的資料將在試用期結束後被清除。您也可以查看信用試用使用情況,以估算在平台使用和信用中繼續使用Container Security所需的信用數量。

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

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

步驟

  1. cloudOne.oversight.enableNetworkPolicyCreation 的值更改為 false
      visionOne:
        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/visionone-container-security-helm/archive/main.tar.gz
上述腳本會覆寫或重置 overrides.yaml 檔案中的值。如果您想使用之前的值,請在 Helm 升級時使用 -reuse-values 參數:
  helm upgrade \
    --namespace ${namespace} \
    --reuse-values \
    trendmicro \
    https://github.com/trendmicro/visionone-container-security-helm/archive/main.tar.gz 
啟用或停用特定元件
可以使用覆蓋檔案單獨啟用或停用容器安全 Helm 圖表的特定組件。例如,您可以在您的 overrides.yaml 檔案中包含以下內容來選擇啟用運行時安全組件:
  visionOne:
    runtimeSecurity:
      enabled: true
在 AWS Bottlerocket 上啟用執行時安全性
預設情況下,AWS EKS 自動模式使用 Bottlerocket 作業系統的節點。在將 Container Security 部署到自動模式叢集之前,請在 AWS Bottlerocket 節點上運行 Runtime Security,方法是在您的 overrides.yaml 文件中添加這些配置:
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 金鑰的資訊,請參閱 Workload Security 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)中覆蓋 掃瞄作業的預設最大記憶體限制
    visionOne:
        bootstrapToken: <BOOTSTRAP_TOKEN>
        endpoint: <ENDPOINT>
        vulnerabilityScanning:
            enabled: true
    resources:
        scanner:
            limits:
                memory: 1024Mi
    
  • 若要套用新配置,請執行 helm upgrade 命令。如果您繼續遇到相同問題,請考慮再次增加掃描器記憶體(例如,2048Mi)。
發現的弱點正在從弱點視圖中消失:
  • 執行期掃描弱點檢視目前是您叢集中弱點的即時表示。一旦弱點不再在叢集中運行(弱點容器已終止),它將立即從弱點檢視中移除。

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

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

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

大型叢集可以透過增加漏洞掃描器 pod 的預設最大併發數來加快掃描結果,使用更多叢集的資源。掃描器 pod 的併發限制旨在限制 Container Security 在叢集中的資源使用。例如,如果併發限制設為 5,則最多可以同時掃描 5 個唯一的映像。可以通過您的覆蓋檔案修改掃描器 pod 的併發限制:
visionOne:
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 覆蓋檔案值。

為什麼在 AWS Fargate 中,sidecar 容器以代碼 137 退出?

在 AWS Fargate 中,當任務的主要容器正常停止(無論是完成其進程還是乾淨退出)時,AWS 會自動通過停止任務中的所有其他容器(包括 sidecar)來啟動任務關閉過程。如果像 trendmicro-scout 這樣的 sidecar 容器在此關閉過程中未能在短暫的超時窗口內退出,AWS 會發送 SIGKILL(信號 9)消息以強制終止容器,導致退出代碼 137。這是預期的行為,並不表示 sidecar 容器的錯誤或異常終止。

如何解決 Trend Vision One 容器安全 Argo CD 應用程式在解除安裝時卡在刪除狀態的問題?

您可以使用 argocd-cleanup.sh 腳本來解決 Trend Vision One 容器安全 Argo CD 應用程式在卸載過程中卡在刪除狀態的問題。此腳本有助於刪除阻止應用程式完全移除的終結器和資源。詳細資訊請參閱 Container Security 的 Argo CD 清理腳本

如何使用 Cosign 公鑰驗證趨勢科技容器映像的真實性?

Cosign 是一個受信任的工具,用於容器簽署和驗證,您可以使用它來驗證趨勢科技的容器映像。此驗證過程可確保您的容器映像是由趨勢科技合法發布的。
注意
注意
這些步驟專門用於驗證趨勢科技容器映像。如果您想使用受信任的公鑰驗證您自己的容器映像,請參閱管理見證者
  1. 使用 Homebrew 安裝 Cosign(macOS/Linux):
    brew install cosign
    如需其他安裝方法,請參閱Cosign 文件
  2. 將您的趨勢科技公鑰儲存到名為cosign.pub的檔案。例如:
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6N2uJjDtSNmTrfg/+GEU8ZzuKxAH
    yXSc+SQdFeBb+eDpme+rNYVwf8ZuX6ii+4RhGW8IVHnyx458B2nlNrndqQ==
    -----END PUBLIC KEY-----
  3. 使用已保存的公鑰驗證容器映像:
    cosign verify --key cosign.pub public.ecr.aws/trendmicro/container-security/<image-name>:<tag> --insecure-ignore-tlog
    注意
    注意
    <image-name><tag> 替換為您要驗證的特定趨勢科技容器映像名稱和版本。可用的映像名稱和標籤可以在 Amazon ECR Public Gallery 中找到。
  4. 查看 cosign 驗證結果:
    • 如果驗證成功,您將看到簽章有效的確認。
    • 如果驗證失敗,請勿使用該映像。請聯絡趨勢科技支援服務。

如何在 EC2 的 ECS 保護上啟用除錯日誌?

要在使用 EC2 的 ECS 保護時啟用 scout pod 的調試日誌,請手動編輯 trendmicro-scout 任務定義。
  1. 建立trendmicro-scout任務定義的新修訂版本。
  2. 編輯“scout”容器,並將 Docker 配置更改為包含 --log-level,debug 而不是 --log-level,info