在 GKE 節點上啟用 Linux 稽核記錄

本頁說明如何在執行 Container-Optimized OS 的 Google Kubernetes Engine 節點上,啟用詳細的作業系統稽核記錄。本頁面也會說明如何設定記錄代理程式,以將記錄檔傳送至 Stackdriver。

作業系統稽核記錄不同於 Cloud 稽核記錄Kubernetes 稽核記錄

總覽

節點上的作業系統記錄檔,提供了叢集和工作負載狀態方面的重要資訊,例如錯誤訊息、登入嘗試次數和二進位執行檔執行次數。這些資訊可以協助進行除錯或調查安全性事件。

如要從叢集中的每個節點收集記錄檔,請使用 DaemonSet,在 DaemonSet 符合排程資格的每個叢集節點上,DaemonSet 只會執行一個 Pod。這個 Pod 會在主機上設定 auditd 記錄 Daemon,並將記錄代理程式設為傳送記錄檔至 Stackdriver 或任何其他記錄檔擷取服務。

根據定義,稽核作業會在事件發生後進行,且屬於檢討報告安全措施。單獨使用 auditd 記錄檔可能不足以在叢集上進行鑑識作業。請多加考慮如何善用 auditd 記錄功能,當做整體安全性策略的環節之一。

限制

本頁面所介紹的記錄機制,僅適用於執行 Container-Optimized OS 的節點。

記錄 DaemonSet 的運作方式

本節會說明記錄 DaemonSet 範例運作方式,以便您依照自己的需求進行設定。下一節會說明如何部署 DaemonSet。

資訊清單範例定義了各一個 DaemonSet、ConfigMap 和包含上述兩者的命名空間。

DaemonSet 會將 Pod 部署到群集中的每個節點。Pod 包含兩個容器。第一個是啟動 cloud-audit-setup systemd 服務的初始容器,第二個容器則是 fluentd-gcp-cos-auditd,用於Stackdriver 記錄代理程式,也就是以 fluentd 為基礎的應用程式。

記錄 DaemonSet 範例會記錄下列事件:

  • auditd 系統設定修改
  • AppArmor 權限檢查
  • execve()socket()setsockopt()mmap() 的執行
  • 網路連線
  • 使用者登入
  • SSH 工作階段和所有其他 TTY (包括 kubectl exec -t 工作階段)

設定記錄 DaemonSet

您可以使用 ConfigMap,fluentd-gcp-config-cos-auditd,來設定記錄 DaemonSet。提供的範例會將稽核記錄傳送到 Stackdriver,但是您可以將其設為將記錄檔傳送到 Stackdriver 以外的目的地。

auditd 產生的記錄檔可能非常龐大,因而耗用系統資源並傳送超出預設記錄設定的記錄檔,導致產生額外費用。您可以設定篩選器來管理記錄量:

部署記錄 DaemonSet

  1. 您可以使用現有叢集或建立新叢集。

  2. 下載資訊清單範例:

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-node-tools/master/os-audit/cos-auditd-logging.yaml > cos-auditd-logging.yaml
    
  3. 依照您的需求,編輯資訊清單範例。如要進一步瞭解 DaemonSet 的運作方式,請參閱上一節

  4. 部署記錄 DaemonSet 和 ConfigMap:

    kubectl apply -f cos-auditd-logging.yaml
    
  5. 確認記錄 Pod 已啟動。如果您在資訊清單中定義了不同的命名空間,請將 cos-auditd 替換成您目前使用的命名空間名稱。

    kubectl get pods --namespace=cos-auditd
    

    如果 Pod 正在運行,輸出結果會如下所示:

    NAME                                             READY   STATUS    RESTARTS   AGE
    cos-auditd-logging-g5sbq                         1/1     Running   0          27s
    cos-auditd-logging-l5p8m                         1/1     Running   0          27s
    cos-auditd-logging-tgwz6                         1/1     Running   0          27s
    

    叢集中的每個節點上都部署了一個 Pod,在這種情況下,叢集具有三個節點。

  6. 現在可以在 Stackdriver 中存取稽核記錄了。

清除所用資源

如要停用 auditd 記錄功能,請刪除記錄 DaemonSet 並重新啟動節點。稽核設定一旦啟用就會受到鎖定,只能透過重新建立節點來變更。

  1. 刪除叢集中的 DaemonSet、ConfigMap 及其命名空間:

    kubectl delete -f cos-auditd-logging.yaml
    
  2. 重新啟動叢集的節點。首先,請取得叢集所屬的執行個體群組:

    instance_group=$(gcloud compute instance-groups managed list \
                        --format="value(name)" \
                        --filter=${CLUSTER_NAME})
    

    然後會自行取得執行個體:

    instances=$(gcloud compute instance-groups managed list-instances ${instance_group} \
                   --format="csv(instance)[no-heading][terminator=',']")
    

    最後請重新建立執行個體:

    gcloud compute instance-groups managed recreate-instances ${instance_group} \
       --instances=${instances}
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件