Skip to main content

More Info:

Deploy Linux auditd logging on Container-Optimized OS nodes so kernel-level audit events from nodes are captured and shipped to Cloud Logging. This provides host-level forensic visibility.

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify node OS and scope
    • On any machine with kubectl access, list nodes and their OS images to confirm which are Container-Optimized OS:
    • Decide whether you want auditd logging on all COS nodes or only on specific node pools (e.g., production).
  2. Check for existing auditd logging DaemonSet
    • On any machine with kubectl access, run:
    • If a DaemonSet is present with a description indicating COS auditd logging to Cloud Logging and it is fully available on all target COS nodes, document that this control is covered and proceed to step 6 for periodic re-verification.
  3. Review/prepare deployment manifests (IaC or manual)
    • If no suitable DaemonSet exists, download the reference manifests on your IaC workstation or any machine with kubectl:
    • Open cos-auditd-logging.yaml and review: namespace, resource requests/limits, tolerations, and any labels/annotations to ensure they match your cluster standards and target only COS nodes you intend to monitor.
  4. Deploy or update the DaemonSet (change via console/CLI/IaC policy)
    • If you manage manifests via IaC (Terraform, Config Sync, etc.), add cos-auditd-logging.yaml to the appropriate repo/module and apply using your standard pipeline.
    • For direct CLI-based clusters, on a machine with kubectl access, you may deploy with:
    • Ensure this change is reflected in your cloud provider configuration management (e.g., documenting in GKE cluster configuration or IaC) so it is reapplied if the cluster is recreated.
  5. Verify pod rollout and coverage
    • On any machine with kubectl access:
    • Confirm desired number of pods equals the number of target COS nodes and that pods are in Running state on those nodes.
  6. Validate logs in Cloud Logging and document decision
    • In the cloud console (Logging > Logs Explorer), filter for logs from the auditd logging agent (e.g., by namespace cos-auditd or the DaemonSet/pod name) and confirm kernel-level audit events from COS nodes are present.
    • Record in your security documentation whether COS auditd logging is: enabled for all COS nodes, enabled for specific node pools only (with rationale), or intentionally not enabled (with accepted risk and justification).
kubectl cannot enable or configure Linux auditd logging on Container-Optimized OS nodes because this control is implemented via cloud provider / managed control plane configuration and supporting DaemonSets defined in manifests. To address this finding, follow the guidance in the Manual Steps section, using the cloud console and/or IaC to deploy and manage the required auditd logging resources.