More Info:
Ensure that the audit policy created for the cluster covers key security concerns.Risk Level
HighAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify cluster type and constraints
- On any machine with
gcloudaccess, confirm this is a GKE cluster and note its mode (standard vs autopilot), as GKE manages the API server:
- On any machine with
-
Review current GKE audit/logging configuration
- On any machine with
gcloudaccess, check which control-plane logs are enabled (these are GKE’s effective “audit surfaces”): - Confirm that at least API server audit logs / control plane logs are enabled (names and options vary by GKE version; look for entries under
loggingConfig.componentConfig.enableComponentssuch asAPISERVER,AUDIT, orCONTROLPLANE).
- On any machine with
-
Review log sink and retention settings
- On any machine with
gcloudaccess, determine where logs go and for how long, as this impacts audit usefulness: - Verify logs are retained for a period that meets your policy (e.g., 90–365 days) and that sinks route them to an appropriate SIEM or storage location if required.
- On any machine with
-
Sample current audit-related events for key security concerns
- On any machine with
gcloudaccess, query Cloud Logging for recent events that reflect key security concerns, such as:- Authentication/authorization failures
- Changes to
ClusterRole,Role,RoleBinding,ClusterRoleBinding - Changes to
Namespace,NetworkPolicy,PodSecurityPolicy/equivalent,Pod,ServiceAccount,Secret
- Example queries:
- Adjust filters in the Cloud Console Logs Explorer to visually verify that such actions are being logged.
- On any machine with
-
Compare observed logging coverage with your security requirements
- Using your organization’s policies, confirm that the available GKE audit/control-plane logs:
- Capture administrative actions on critical resources (RBAC, namespaces, network/security policies, workloads, service accounts, secrets).
- Include enough context (actor, source IP, target object, verb, timestamp) to support incident response and forensics.
- Are reliably exported and retained per policy.
- If gaps exist that cannot be closed due to GKE’s managed nature (for example, you cannot customize the underlying
/etc/kubernetes/manifests/kube-apiserver.yamlor audit policy file), document the residual risk and any compensating controls (e.g., higher-level IAM logging, workload-level audit, admission webhooks, or service mesh logs).
- Using your organization’s policies, confirm that the available GKE audit/control-plane logs:
-
Decide and document compliance status
- If GKE’s built-in control-plane logging and your sinks/retention meet your documented requirements for “key security concerns,” record this control as “Covered by managed GKE audit/control plane logging; configuration not directly modifiable” and keep evidence from steps 2–4.
- If requirements are not met and cannot be met within GKE’s constraints, mark the control as accepted risk/partially compliant, attach the evidence and rationale, and define any additional monitoring or architectural changes (e.g., moving to a more configurable environment) needed to close the gap.
Using kubectl
Using kubectl
kubectl cannot be used to configure or modify the API server audit policy for this control, because it is defined via the control plane’s host-level configuration in
/etc/kubernetes/manifests/kube-apiserver.yaml (and, in GKE, is not user-modifiable). Please refer to the Manual Steps section for guidance on how to review this setting and what decisions are required.Automation
Automation
- Problems that need review:
- Any cluster where
MASTER_LOGSshowsDISABLED. - Any project where
NOT FOUNDappears forADMIN_READ,DATA_WRITE, orDATA_READin the last hour (may indicate missing or misrouted audit/API logs, or simply no activity).
- Any cluster where
- Because this control is MANUAL and GKE’s audit policy is not user-modifiable, these outputs are evidence for a human review, not an automatic pass/fail decision.

