全部產品
Search
文件中心

Container Service for Kubernetes:配置巡檢檢查叢集工作負載

更新時間:Aug 31, 2024

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

前提條件

  • 叢集版本為v1.14及以上版本。如需升級叢集,請參見手動升級叢集

  • 如果您當前使用的是RAM使用者,請確保已參見下方內容完成RAM授權和RBAC授權。

    • RAM授權

      請完成配置巡檢頁面的RAM授權操作,確保當前RAM使用者擁有操作當前叢集的配置巡檢頁面的許可權,否則會出現許可權不足無法操作配置巡檢頁面功能的問題。具體操作,請參見為RAM使用者或RAM角色授予RAM許可權

      展開查看配置巡檢授權碼

      {
        "Statement": [
          {
            "Action": [
              "cs:DescribePolarisConfig",
              "cs:DescribePolarisJob",
              "cs:DescribePolarisCronJob",
              "cs:UpdatePolarisJob",
              "cs:UpdatePolarisCronJob"
            ],
            "Effect": "Allow",
            "Resource": [
              "acs:cs:*:*:cluster/<yourclusterID>"
            ]
          }
        ],
        "Version": "1"
      }

      如果您需要使用巡檢報告功能,請完成Log Service指定logproject(當前叢集logtail-ds組件所使用的logproject)的RAM授權,確保當前RAM使用者擁有Log Service指定logproject的資料讀取許可權,否則會出現許可權不足無法查看巡檢報告的問題。具體操作,請參見RAM自訂授權樣本

      展開查看Log Service日誌讀取授權碼

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "log:Get*",
                      "log:List*"
                  ],
                  "Resource": "acs:log:*:*:project/<指定的Project名稱>/*",
                  "Effect": "Allow"
              }
          ]
      }
    • RBAC授權

      請完成配置巡檢頁面涉及資源的RBAC授權,授予RAM使用者指定叢集的管理員權限,以確保RAM使用者擁有操作配置巡檢頁面中涉及的Kubernetes資源的許可權。具體操作,請參見為RAM使用者或RAM角色授予RBAC許可權

執行巡檢

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

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

  3. 可選:按照頁面提示安裝並升級巡檢組件。

    巡檢組件security-inspector本身不計費,但會佔用您的Pod資源。組件介紹及變更記錄,請參見security-inspector

  4. 執行巡檢。

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

    • 預設巡檢所有支援的檢查項,您可以在配置巡檢頁面右上方,單擊巡檢配置,然後配置巡檢時執行的檢查項。更多資訊,請參見檢查項

    • 立即執行:在配置巡檢頁面右上方,單擊立即執行巡檢

    • 定期執行:在配置巡檢頁面右上方,單擊巡檢配置,然後選中定期巡檢,並配置巡檢周期。

  5. 等待巡檢完成後,在巡檢詳情頁簽,單擊巡檢結果對應操作列中的詳情,查看檢查結果。

巡檢詳情

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

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

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

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

巡檢報告

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

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

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

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

檢查項

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

檢查項ID

檢查項

檢查的內容及安全風險

修複建議

hostNetworkSet

禁止容器共用主機的網路命名空間

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

修改Pod spec,刪除hostNetwork欄位。

樣本:1

hostIPCSet

禁止容器共用主機的IPC命名空間

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

修改Pod spec,刪除hostIPC欄位。

樣本:2

hostPIDSet

禁止容器共用主機的PID命名空間

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

修改Pod spec,刪除hostPID欄位。

樣本:3

hostPortSet

禁止容器內進程監聽節點主機連接埠

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

修改Pod spec,刪除hostPort欄位。

樣本:4

runAsRootAllowed

禁止以root使用者啟動容器

通過檢查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

禁用非必需的Linux Capabilities

通過檢查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

配置運行容器所需的最少CPU資源

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

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

樣本:

12

cpuLimitsMissing

限制運行容器可使用的最大CPU資源

通過檢查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. 按需過濾選項中的是否有風險命名空間工作負載類別,過濾查看有風險的工作負載。

  3. 單擊詳情,查看該工作負載中每個檢查項的檢查結果。

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

    • 對於確認需要修複的檢查項,單擊詳情,參考加固建議進行修複。