如何手動建立 Kubernetes 網路政策以持續符合規範?
預設情況下,容器安全性持續合規會代表您創建 Kubernetes 網路策略。如果您想手動創建該策略,請按照以下步驟操作:
步驟
- 將
cloudOne.oversight.enableNetworkPolicyCreation
的值更改為false
。cloudOne: oversight: enableNetworkPolicyCreation: false
- 在您想要的命名空間中,建立一個網路策略,將
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
重要
每個應用程式命名空間中必須存在具有 matchLabelstrendmicro-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}
- 使用以下命令的運行時安全組件,其中容器可以是
scout
或falco
: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}
收集技術支援中心日誌
當開啟技術支援中心案件時,請在已啟動偵錯日誌記錄的情況下重現問題,並包含偵錯日誌包。日誌包有助於您技術支援中心提供者偵錯問題,特別是與叢集內組件或通信相關的問題。您可以從
趨勢科技 使用日誌收集腳本。
請按照以下步驟啟用偵錯日誌記錄:
- 將
logConfig.logLevel
設定為debug
在overrides.yaml
檔案中,並升級 helm chart。logConfig: logLevel: debug
- 重現問題並使用以下命令收集日誌:
./collect-logs.sh
支援以下環境變數以進行日誌收集:
環境變數 | 說明 | 預設 |
釋放 | Helm 發行名稱 | 趨勢科技 |
命名空間 | Helm chart 部署所在的命名空間 | 目前在 kubeconfig 中宣告的命名空間。如果 kubeconfig 中沒有命名空間設定,則會使用 trendmicro-system 。 |
為什麼我在 API 呼叫時會收到401 未經授權訊息?
容器安全是否需要對我的 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 服務收集日誌,請按照以下步驟操作:
步驟
- 通過導航到您的 ECS 叢集並選擇 trendmicro-scout 服務來訪問該服務。
- 點選Logs標籤。
- 應用容器和時間篩選器來優化您的搜索,並專注於與您的分析相關的最新日誌。
- 要進一步分析日誌,請點選View in CloudWatch。在 CloudWatch 中,您可以選擇以 CSV 格式下載日誌,以便進行詳細檢查和存檔。
如何從私人註冊表中提取映像?
預設情況下,Container Security 將公共容器映像儲存在 Amazon ECR Public Gallery 中,並根據 helm chart 將這些映像拉入叢集。使用私人註冊表允許不受速率限制的映像拉取,並允許以符合公司最佳實踐的方式儲存容器映像。
要從私人註冊表中提取映像,請使用以下步驟:
注意以下步驟以私有的 Amazon Elastic Container Registry (ECR) 為例,但具體過程會根據您使用的容器註冊表而有所不同。
|
步驟
- 按照 Amazon 使用者指南的說明(步驟 1 到 8)在 AWS 管理控制台為 Amazon ECR Public 建立拉取快取規則。
- 修改 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 install
或helm upgrade
命令來修改您的 helm 覆蓋檔案值。