Google Kubernetes Engine (GKE) Security¶
Overview¶
Google Kubernetes Engine (GKE) is Google Cloud's managed Kubernetes service that provides a secure, scalable platform for containerized applications. This section covers security best practices, compliance requirements, and implementation guidance for GKE environments.
Key Security Features¶
Cluster Security¶
- Shielded GKE Nodes: Secure boot, virtual trusted platform module (vTPM), and integrity monitoring
- Private Clusters: Nodes without public IP addresses, accessible only via private Google Cloud networks
- Authorized Networks: IP allowlisting for API server access
- Workload Identity: Secure pod-to-GCP service authentication
Network Security¶
- Network Policies: Kubernetes-native traffic control between pods
- Service Mesh: Istio/Anthos Service Mesh for advanced traffic management
- Private Service Connect: Private connectivity to Google APIs
- Binary Authorization: Deploy-time security controls for container images
Compliance and Governance¶
- FIPS 140-2 Compliance: Validated cryptographic modules for data protection
- FedRAMP Authorization: High-impact level compliance for government workloads
- PCI DSS: Payment card industry compliance capabilities
- HIPAA: Healthcare data protection compliance
Security Guides¶
-
FIPS 140-2 Compliance
Complete guide to FIPS-compliant storage options and cryptographic validation in GKE
-
Cluster Hardening
Best practices for securing GKE clusters following CIS Kubernetes Benchmark
-
Workload Identity
Implementing secure pod-to-GCP service authentication without service account keys
-
Network Policies
Implementing zero-trust networking with Kubernetes network policies
Quick Security Checks¶
Verify Cluster Security Settings¶
# Check if Shielded GKE nodes are enabled
gcloud container clusters describe CLUSTER_NAME \
--zone=ZONE \
--format="value(shieldedNodes.enabled)"
# List authorized networks
gcloud container clusters describe CLUSTER_NAME \
--zone=ZONE \
--format="table(masterAuthorizedNetworksConfig.cidrBlocks[].cidrBlock)"
# Check if private cluster is enabled
gcloud container clusters describe CLUSTER_NAME \
--zone=ZONE \
--format="value(privateClusterConfig.enablePrivateNodes)"
Audit Workload Identity Configuration¶
# Check if Workload Identity is enabled
gcloud container clusters describe CLUSTER_NAME \
--zone=ZONE \
--format="value(workloadIdentityConfig.workloadPool)"
# List service accounts with Workload Identity bindings
gcloud iam service-accounts list --filter="displayName:gke-"
Review Binary Authorization Policy¶
# Export current Binary Authorization policy
gcloud container binauthz policy export
# List attestors
gcloud container binauthz attestors list
Common Security Tasks¶
Enable FIPS Mode on Nodes¶
# Create node pool with FIPS-compliant boot disk
gcloud container node-pools create fips-pool \
--cluster=CLUSTER_NAME \
--zone=ZONE \
--image-type=COS_CONTAINERD \
--enable-gvnic \
--metadata=google-compute-enable-fips=TRUE
Configure Network Policies¶
# Example: Deny all ingress traffic by default
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
Implement Pod Security Standards¶
# Example: Enforce restricted security policy
apiVersion: v1
kind: Namespace
metadata:
name: secure-namespace
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Compliance Quick Reference¶
Compliance Framework | GKE Support | Key Requirements |
---|---|---|
FIPS 140-2 | ✅ Supported | Use validated crypto modules, FIPS-mode nodes |
FedRAMP High | ✅ Supported | Use compliant regions, enable audit logging |
PCI DSS | ✅ Supported | Network segmentation, encryption, access controls |
HIPAA | ✅ Supported | Encryption at rest/transit, audit logs, BAAs |
SOC 2 | ✅ Supported | Security controls, monitoring, incident response |
Security Best Practices¶
- Use Autopilot Mode when possible for Google-managed security hardening
- Enable Shielded GKE Nodes for enhanced node security
- Implement Workload Identity instead of service account keys
- Use Binary Authorization to ensure only verified images are deployed
- Enable audit logging and ship logs to Cloud Logging
- Regularly update clusters and nodes to latest versions
- Implement network policies for pod-to-pod traffic control
- Use private clusters to reduce attack surface