More Info:
Define an audit policy and forward audit logs to a centralized logging system such as CloudWatch or Elasticsearch. Without collection and management, audit records cannot be retained or reviewed.Risk Level
HighAddress
SecurityCompliance Standards
- CIS EKS
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Verify EKS control plane audit logging is enabled and scoped correctly
- On any admin machine with AWS CLI access, list EKS clusters and describe the target cluster:
- Confirm
cluster.logging.clusterLogginghastypesincluding"api","audit"(or"all"types, depending on region support) with"enabled": trueand that logs are being sent to CloudWatch.
- On any admin machine with AWS CLI access, list EKS clusters and describe the target cluster:
-
Confirm audit policy configuration exists and matches organizational requirements
- On any machine with
kubectlaccess, check for an audit policy ConfigMap or file (common patterns): - Compare the contents against the required policy (e.g., at minimum capturing
Metadatafor pods and other critical resources), and have security/operations sign off that scope, retention, and sensitivity are appropriate.
- On any machine with
-
Check that audit logs are being generated and delivered to CloudWatch
- On any admin machine with AWS CLI access, identify the CloudWatch log groups associated with the cluster:
- Inspect a sample of recent audit log events:
- Confirm that Kubernetes API calls (create/update/delete, authN/Z events, etc.) are present and timestamps are recent.
- On any admin machine with AWS CLI access, identify the CloudWatch log groups associated with the cluster:
-
Validate forwarding to any additional centralized logging/SIEM system
- If you use a log forwarder (e.g., Fluent Bit/Fluentd/Vector/Custom):
- Confirm configuration forwards CloudWatch (or node-level audit logs, if used) to the designated backend (Elasticsearch, OpenSearch, Splunk, etc.) and that events from this cluster are visible there (verify by querying on a known pod/namespace/user and recent timestamp).
- If you use a log forwarder (e.g., Fluent Bit/Fluentd/Vector/Custom):
-
Review retention, access control, and integrity protections for audit logs
- On any admin machine with AWS CLI access, verify CloudWatch retention and access:
- Confirm retention meets policy (e.g., 90/180/365 days), that IAM policies on the log group restrict write/delete/reader access appropriately, and that any downstream system (e.g., S3 archive, SIEM) also meets retention and integrity requirements.
- On any admin machine with AWS CLI access, verify CloudWatch retention and access:
-
If gaps are found, update configuration and re‑verify
- Enable/adjust EKS control plane logging (via console,
aws eks update-cluster-config, or IaC) to include the required log types and CloudWatch destination. - Update the audit policy ConfigMap or backing IaC to meet your logging scope, then redeploy.
- Re-run the commands from steps 1–3 to confirm that audit logs are enabled, correctly scoped, delivered to CloudWatch, and visible in your central logging solution.
- Enable/adjust EKS control plane logging (via console,
Using kubectl
Using kubectl
kubectl cannot configure EKS control plane audit logging or host-level audit settings on control plane nodes; these are managed via the cloud provider console/CLI/IaC and node-level configuration. Refer to the Manual Steps section for how to review and configure audit policies and centralized log forwarding.
Automation
Automation

