Skip to main content

More Info:

Enable integrity monitoring on Shielded GKE nodes so their boot integrity is continuously verified against a trusted baseline. This detects rootkits and boot-level tampering.

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify node pools and current integrity monitoring settings
    Run on: any machine with gcloud access
    For each node pool name returned:
  2. Determine compliance for each node pool
    • Mark a node pool as compliant if:
      • enabled is true and integrityMonitoring (or equivalent flag) is true, or
      • The shieldedInstanceConfig block clearly shows integrity monitoring enabled.
    • Mark a node pool as non-compliant if integrity monitoring is not enabled or the field is absent.
  3. Plan new compliant node pools for non-compliant workloads
    For each non-compliant node pool, decide:
    • Desired machine type, disk size/type, labels, taints, autoscaling, and node count.
    • A new node pool name that indicates shielded + integrity monitoring (for traceability).
      Then create the new node pool with integrity monitoring enabled:
    Add any other flags (e.g. --machine-type, --num-nodes, --enable-autoscaling, --node-taints, --node-labels) to match your current non-compliant pool.
  4. Migrate workloads from non-compliant to compliant node pools
    Run on: any machine with kubectl access
    • If node pools are distinguished by labels/taints, adjust pod nodeSelector, affinity, or tolerations so workloads can schedule on the new pool.
    • Cordon and drain each non-compliant node pool’s nodes one at a time:
    • Verify pods reschedule onto the new, compliant node pool:
  5. Delete non-compliant node pools after successful migration
    Once you confirm workloads are healthy on the new node pool(s):
  6. Verify remediation
    Re-run the audit for each remaining node pool:
    Confirm all node pools in use show integrity monitoring enabled.
kubectl cannot enable Shielded GKE node integrity monitoring because this setting is defined on the managed node pool in GKE (cloud provider control plane / IaC), not on Kubernetes API objects. Use the cloud console, gcloud, or your IaC pipeline to configure integrity monitoring as described in the Manual Steps section.
How to run (any machine with gcloud and kubectl access):
  1. Authenticate and set project:
  2. Run the script:
What output indicates a problemAny node pool line showing:
  • integrity monitoring: DISABLED <-- REVIEW / NON-COMPLIANT, or
  • integrity monitoring: UNKNOWN (...) <-- REVIEW
indicates a node pool where Shielded GKE node integrity monitoring is not confirmed as enabled and must be reviewed and, if appropriate, remediated manually by creating a compliant node pool and migrating workloads.