審計

Kubernetes 審計(Audit)提供了安全相關的時序操作記錄,支持日誌和 webhook 兩種格式,並可以通過審計策略自定義事件類型。

審計日誌

通過配置 kube-apiserver 的下列參數開啓審計日誌

  • audit-log-path:審計日誌路徑

  • audit-log-maxage:舊日誌最長保留天數

  • audit-log-maxbackup:舊日誌文件最多保留個數

  • audit-log-maxsize:日誌文件最大大小(單位 MB),超過後自動做輪轉(默認爲 100MB)

每條審計記錄包括兩行

  • 請求行包括:唯一 ID 和請求的元數據(如源 IP、用戶名、請求資源等)

  • 響應行包括:唯一 ID(與請求 ID 一致)和響應的元數據(如 HTTP 狀態碼)

比如,admin 用戶查詢默認 namespace 的 Pod 列表的審計日誌格式爲

2017-03-21T03:57:09.106841886-04:00 AUDIT: id="c939d2a7-1c37-4ef1-b2f7-4ba9b1e43b53" ip="127.0.0.1" method="GET" user="admin" groups="\"system:masters\",\"system:authenticated\""as="<self>"asgroups="<lookup>"namespace="default"uri="/api/v1/namespaces/default/pods"
2017-03-21T03:57:09.108403639-04:00 AUDIT: id="c939d2a7-1c37-4ef1-b2f7-4ba9b1e43b53" response="200"

審計策略

v1.7 + 支持實驗性的高級審計特性,可以自定義審計策略(選擇記錄哪些事件)和審計存儲後端(日誌和 webhook)等。開啓方法爲

kube-apiserver ... --feature-gates=AdvancedAuditing=true

注意開啓 AdvancedAuditing 後,日誌的格式有一些修改,如新增了 stage 字段(包括 RequestReceived,ResponseStarted ,ResponseComplete,Panic 等)。

審計策略

審計策略選擇記錄哪些事件,設置方法爲

其中,設計策略的配置格式爲

在生產環境中,推薦參考 GCE 審計策略 配置。

審計存儲後端

審計存儲後端支持兩種方式

  • 日誌,配置 --audit-log-path 開啓,格式爲

  • webhook,配置 --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig --audit-webhook-mode=batch 開啓,其中 audit-webhook-mode 支持 batch 和 blocking 兩種格式,而 webhook 配置文件格式爲

所有的事件以 JSON 格式 POST 給 webhook server,如

Last updated