全部產品
Search
文件中心

Container Service for Kubernetes:在註冊叢集中配置巡檢功能檢查Workload安全隱患

更新時間:Jun 19, 2024

ACK叢集提供配置巡檢功能,協助您掃描叢集中工作負載配置的安全隱患。執行巡檢任務後,ACK會產生巡檢報告,您可以根據報告結果查看並處理叢集風險項,即時瞭解叢集健康狀態。

前提條件

啟用叢集Workload配置巡檢功能

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇安全管理 > 配置巡檢

  3. 可選:安裝並升級巡檢組件。

    如果您首次使用未安裝巡檢組件,請按照頁面提示安裝security-inspector組件。若巡檢組件不是最新版本,請按照頁面提示將組件升級至最新版本。組件安裝完成後,您也可以在叢集資訊頁面的概覽頁簽,單擊安全巡檢進入配置巡檢頁面。

    關於security-inspector組件的介紹和變更記錄,請參見security-inspector

  4. 配置巡檢頁面右上方,單擊立即執行巡檢,等待巡檢完成後,在巡檢詳情頁簽的操作列,單擊詳情查看巡檢詳情。

    重要

    請在業務低峰期執行巡檢操作。

  5. 可選:配置巡檢頁面右上方,單擊巡檢配置,開啟或禁用定期自動執行配置巡檢的功能以及配置巡檢時執行的檢查項。

巡檢詳情

巡檢詳情頁面通過表格化的方式展示不同工作負載的詳細巡檢結果,主要包括以下功能:

  • 支援按照是否有風險命名空間工作負載類別等條件對結果進行過濾展示工作負載的巡檢通過項風險項數量。

  • 展示巡檢結果的各個檢查項的詳細資料,包括Pod和Container維度檢查狀態(已通過、未通過)、檢查項詳細說明以及加固建議。如有未通過的檢查項無需處理,您可以將其加入白名單。

  • 查看工作負載的YAML檔案。

巡檢報告

巡檢報告中主要展示最近執行的巡檢掃描結果,主要包括以下幾類資訊:

  • 掃描結果概覽,包括總的檢查條目數、檢查各個資源項數目及百分比、整體的健康度。

  • 各大類掃描結果統計,包括報告健全狀態檢查、鏡像、網路、資源、安全等大類的結果。

  • 各個Workload配置的詳細掃描結果,包括資源類別、資源名稱、命名空間、檢查類型、檢查項、檢查結果等內容。

檢查項

配置巡檢功能會掃描並展示以下檢查項的掃描結果。

檢查項名稱

檢查的內容及安全風險

修複建議

hostNetworkSet

通過檢查Workload的Pod Spec中是否配置了hostNetwork: true,檢查是否配置了共用使用主機的網路namespace。如果配置了,存在Pod中容器攻擊主機網路、嗅探主機網路資料的風險。

修改Pod Spec,刪除hostNetwork欄位。

樣本:1

hostIPCSet

通過檢查Workload的Pod Spec中是否配置了hostIPC: true,檢查是否配置了共用使用主機的IPC namespace。如果配置了,存在Pod中容器攻擊主機上進程、嗅探主機上進程資料的風險。

修改Pod Spec,刪除hostIPC欄位。

樣本:2

hostPIDSet

通過檢查Workload的Pod Spec中是否配置了hostPID: true,檢查是否配置了共用使用主機的PID namespace。如果配置了,存在Pod中容器攻擊主機上進程、採集主機上進程資料的風險。

修改Pod Spec,刪除hostPID欄位。

樣本:3

hostPortSet

通過檢查Workload的Pod Spec中是否配置了hostPort,檢查是否配置了把容器中監聽的連接埠映射到主機指定連接埠上。如果配置了,存在擠佔主機可用連接埠以及被非預期的請求方請求容器連接埠的風險。

修改Pod Spec,刪除hostPort欄位。

樣本:4

runAsRootAllowed

通過檢查Workload的Pod Spec中是否未配置runAsNonRoot: true,檢查是否未配置使用非root使用者運行容器。如果未配置,存在被容器中的惡意進程入侵使用者應用、入侵主機甚至入侵整個叢集的風險。

修改Pod Spec,增加runAsNonRoot: true

樣本:5

runAsPrivileged

通過檢查Workload的Pod Spec中是否配置了privileged: true,檢查是否配置了允許以特權模式運行容器。如果配置了,存在被容器中的惡意進程入侵使用者應用、入侵主機甚至入侵叢集的風險。

修改Pod Spec,刪除privileged欄位。

樣本:6

privilegeEscalationAllowed

通過檢查Workload的Pod Spec中是否未配置allowPrivilegeEscalation: false,檢查是否未配置禁止容器中的子進程擁有比父進程更高的許可權。如果未配置,存在被容器中的惡意進程實現越權操作的風險。

修改Pod Spec,增加allowPrivilegeEscalation:false欄位。

樣本:7

capabilitiesAdded

通過檢查Workload的Pod Spec中的capabilities欄位,檢查是否配置了允許容器中的進程擁有SYS_ADMIN、NET_ADMIN、ALL等特權Linux Capabilities。如果配置了,存在被容器中的惡意進程通過這些特權入侵使用者應用、入侵或破壞組件/叢集的風險。

修改Pod Spec,根據實際需求只添加必需的Linux Capabilities,刪除不需要的Linux Capabilities。

不依賴額外Linux Capabilities,刪除所有不需要的Linux Capabilities。樣本:

8

只添加必需的Linux Capabilities,刪除所有不需要的Linux Capabilities。樣本:9

notReadOnlyRootFileSystem

通過檢查Workload的Pod Spec中是否未配置readOnlyRootFilesystem: true,檢查是否未配置容器中的檔案系統是不可修改的。如果未配置的話,存在被容器中的惡意進程惡意修改系統檔案的風險。

修改Pod Spec,增加readOnlyRootFilesystem: true,如果有需要修改某個目錄下檔案的需求,可以通過volumeMounts實現。

樣本:

10

如果需要修改某個目錄下的檔案,通過volumeMounts欄位實現。

樣本:11

cpuRequestsMissing

通過檢查Workload的Pod Spec中是否未配置resources.requests.cpu欄位,可以檢查是否未配置運行容器所需的最少CPU資源。如果未配置的話,Pod有被調度到資源緊張的節點上的風險,可能會出現容器內進程運行緩慢的情況。

修改Pod Spec,增加resources.requests.cpu欄位。

樣本:

12

cpuLimitsMissing

通過檢查Workload的Pod Spec中是否未配置resources.limits.cpu欄位,檢查是否未配置運行容器所需的最大CPU資源。如果未配置的話,存在被容器內的異常進程消耗大量節點資源,甚至把整個節點或叢集的資源銷耗殆盡的風險。

修改Pod Spec,增加resources.limits.cpu欄位。

樣本:

13

memoryRequestsMissing

通過檢查Workload的Pod Spec中是否未配置resources.requests.memory欄位,檢查是否未配置運行容器所需的最少記憶體資源。如果未配置,Pod有被調度到資源緊張的節點上的風險,可能會出現容器內進程OOM的風險。

修改Pod Spec,增加resources.requests.memory欄位。

樣本:

14

memoryLimitsMissing

通過檢查Workload的Pod Spec中是否未配置resources.limits.memory欄位,檢查是否未配置運行容器所需的最大記憶體資源。如果未配置的話,存在被容器內的異常進程消耗大量節點資源,甚至把整個節點或叢集的資源消耗殆盡的風險。

修改Pod Spec,增加resources.limits.memory欄位。

樣本:

15

readinessProbeMissing

通過檢查Workload的Pod Spec中是否未配置readinessProbe欄位,檢查是否未配置檢測容器內應用能否正常處理請求的探針。如果未配置的話,存在容器內應用異常無法處理請求時仍舊有請求發送,繼而導致業務異常的風險。

修改Pod Spec,增加readinessProbe欄位。

樣本:

16

livenessProbeMissing

通過檢查Workload的Pod Spec中是否未配置livenessProbe,檢查是否未配置檢測容器內應用是否出現異常需要重啟容器的探針。如果未配置,存在容器內應用異常需要重啟容器才能恢複時未及時重啟導致業務異常的風險。

修改Pod Spec,增加livenessProbe欄位。

樣本:

17

tagNotSpecified

通過檢查Workload的Pod Spec中的image欄位的值是否未包含鏡像Tag或者使用了latest作為鏡像Tag,檢查是否未配置運行容器時使用指定Tag的容器鏡像。如果未配置,存在運行容器時運行了非預期的容器鏡像版本導致業務異常的風險。

修改Pod Spec,修改image欄位,使用指定的鏡像Tag,並且不要使用latest作為鏡像Tag。

樣本:

18

anonymousUserRBACBinding

通過檢查叢集內的RBAC(Role-based access control)綁定找出配置了匿名使用者存取許可權的配置項。如果配置了允許匿名使用者存取叢集資源的配置項,則存在被惡意匿名使用者竊取叢集敏感資訊、攻擊和入侵叢集的風險。

修改掃描出來的RBAC綁定,根據實際情況刪除允許匿名使用者存取叢集資源的許可權配置項。

樣本:

z-1

事件

事件類型

事件名稱

事件內容樣本

事件說明

處理措施

Normal

SecurityInspectorConfigAuditStart

Start to running config audit

開始執行巡檢任務。

無需處理。

Normal

SecurityInspectorConfigAuditFinished

Finished running once config audit

巡檢任務執行完成。

無需處理。

Warning

SecurityInspectorConfigAuditHighRiskFound

2 high risks have been found after running config audit

巡檢執行完之後,發現部分工作負載存在未修複的高風險檢查項。

  1. 在叢集的配置巡檢頁面,查看詳細的巡檢結果。

  2. 通過過濾選項中的有風險所有命名空間以及顯示所有工作負載,過濾查看有風險的工作負載。然後,單擊詳情,查看該工作負載中每個檢查項的檢查結果和修複建議。

    • 對於確認無需修複的檢查項,單擊加白名單,將該檢查項加入白名單。

    • 對於確認需要修複的檢查項,請參考修複建議進行修複。