Use the Conformity Knowledge Base AI to help improve your Cloud Posture

Use Confidential GKE Cluster Nodes

Trend Cloud One™ – Conformity is a continuous assurance tool that provides peace of mind for your cloud infrastructure, delivering over 1000 automated best practice checks.

Risk Level: Medium (should be achieved)

Ensure that your Google Kubernetes Engine (GKE) cluster node pools use confidential GKE nodes to encrypt all running workloads. Confidential GKE nodes employ hardware-based memory encryption to safeguard your data and applications from unauthorized access or modification while in use.

Security

To enhance security, utilize confidential GKE nodes for your GKE cluster node pools. These nodes encrypt all workloads, including those currently running, ensuring data confidentiality even if the underlying hardware is compromised.

Confidential GKE cluster nodes require N2D or C2D machine types.


Audit

To determine if your Google Kubernetes Engine (GKE) cluster node pools are using confidential GKE nodes, perform the following operations:

Using GCP Console

01 Sign in to the Google Cloud Management Console.

02 Select the Google Cloud Platform (GCP) project that you want to examine from the console top navigation bar.

03 Navigate to Kubernetes Engine console available at https://console.cloud.google.com/kubernetes.

04 In the left navigation panel, under Resource Management, choose Clusters and select the OVERVIEW tab to access the list of GKE clusters provisioned for the selected GCP project.

05 Click on the name (link) of the GKE cluster that you want to examine.

06 Select the NODES tab to access the node pools created for the selected cluster.

07 Click on the name (link) of the GKE cluster node pool that you want to examine.

08 In the Security section, inspect the Enable Confidential GKE Nodes setting status. If the Enable Confidential GKE Nodes setting checkbox is unchecked, the selected Google Kubernetes Engine (GKE) cluster node pool is not using confidential GKE nodes.

09 Repeat steps no. 7 and 8 for each node pool provisioned for the selected GKE cluster.

10 Repeat steps no. 5 – 9 for each GKE cluster provisioned within the selected GCP project.

11 Repeat steps no. 2 – 10 for each GCP project deployed in your Google Cloud account.

Using GCP CLI

01 Run projects list command (Windows/macOS/Linux) with custom output filters to list the ID of each GCP project available in your Google Cloud account:

gcloud projects list
	--format="table(projectId)"

02 The command output should return the requested GCP project IDS:

PROJECT_ID
cc-web-project-123123
cc-dev-project-112233

03 Run container clusters list command (Windows/macOS/Linux) with the ID of the GCP project that you want to examine as the identifier parameter and custom output filters to describe the name and the region of each GKE cluster provisioned for the selected project:

gcloud container clusters list
	--project cc-web-project-123123
	--format="table(NAME,ZONE)"

04 The command output should return the requested cluster names and their regions:

NAME: cc-gke-backend-cluster
ZONE: us-central1

NAME: cc-gke-frontend-cluster
ZONE: us-central1

05 Run container node-pools list command (Windows/macOS/Linux) with the name of the GKE cluster that you want to examine as the identifier parameter, to describe the name of each node pool provisioned for the selected cluster:

gcloud container node-pools list
	--cluster=cc-gke-backend-cluster
	--region=us-central1
	--format="(NAME)"

06 The command output should return the requested GKE node pool names:

NAME:
cc-gke-backend-pool-001
cc-gke-backend-pool-002
cc-gke-backend-pool-003

07 Run container node-pools describe command (Windows/macOS/Linux) with the name of the cluster node pool that you want to examine as the identifier parameter and custom output filters to determine if the selected GKE cluster node pool is using confidential GKE nodes:

gcloud container node-pools describe cc-gke-backend-pool-001
	--cluster=cc-gke-backend-cluster
	--region=us-central1
	--format="json(confidentialNodes.enabled)"

08 The command output should return the requested feature status (true for enabled, null for disabled):

null

If the container node-pools describe command output returns null, as shown in the example above, the selected Google Kubernetes Engine (GKE) cluster node pool is not using confidential GKE nodes to encrypt your Kubernetes workloads.

09 Repeat step no. 7 and 8 for each node pool provisioned for the selected GKE cluster.

10 Repeat steps no. 5 - 9 for each GKE cluster provisioned for the selected GCP project.

11 Repeat steps no. 3 – 10 for each GCP project deployed in your Google Cloud account.

Remediation / Resolution

To enable confidential GKE nodes for Google Kubernetes Engine (GKE) clusters, perform the following operations:

Using GCP Console

01 Sign in to the Google Cloud Management Console.

02 Select the Google Cloud Platform (GCP) project that you want to access from the console top navigation bar.

03 Navigate to Kubernetes Engine console available at https://console.cloud.google.com/kubernetes.

04 In the left navigation panel, under Resource Management, choose Clusters and select the OVERVIEW tab to access the list of GKE clusters deployed for the selected GCP project.

05 Click on the name (link) of the GKE cluster that you want to configure.

06 Select the NODES tab to access the node pools created for the selected cluster.

07 Click on the name (link) of the GKE cluster node pool that you want to configure and choose EDIT.

08 In the Security section, check the Enable Confidential GKE Nodes setting checkbox to encrypt your Kubernetes workload data in-use, using confidential GKE nodes. Choose SAVE to apply the changes.

09 Repeat steps no. 7 and 8 to enable confidential GKE nodes for other node pools provisioned within the selected GKE cluster.

10 Repeat steps no. 5 – 9 for each GKE cluster that you want to configure, created for the selected GCP project.

11 Repeat steps no. 2 – 10 for each GCP project available in your Google Cloud account.

Using GCP CLI

01 Run container clusters update command (Windows/macOS/Linux) with the name of the Google Kubernetes Engine (GKE) cluster node pool that you want to configure as the identifier parameter, to enforce encryption of data in-use for the nodes running within the selected GKE cluster node pool:

gcloud container node-pools update cc-gke-backend-pool-001
	--region=us-central1
	--cluster=cc-gke-backend-cluster
	--enable-confidential-nodes

02 The command output should return the full URL of the modified GKE node pool:

Updating node pool cc-gke-backend-pool-001... done.
Updated [https://container.googleapis.com/v1/projects/cc-web-project-123123/zones/us-central1/clusters/cc-gke-backend-cluster/nodePools/cc-gke-backend-pool-001].

03 Repeat steps no. 1 - 2 to enable confidential GKE nodes for other node pools provisioned for the selected GKE cluster.

04 Repeat steps no. 1 - 3 for each GKE cluster that you want to configure, available within the selected GCP project.

05 Repeat steps no. 1 – 4 for each GCP project deployed in your Google Cloud account.

References

Publication date Dec 2, 2024