From c63aa4fc3902aa53b2eea1f5bd0b7363383cacff Mon Sep 17 00:00:00 2001 From: Jirka Korejtko Date: Tue, 16 Jan 2024 21:50:48 +0100 Subject: [PATCH] feat!: Update least privilege default service account (#1844) Co-authored-by: Jirka Korejtko --- autogen/main/sa.tf.tmpl | 25 ++----------------- docs/upgrading_to_v30.0.md | 3 ++- modules/beta-autopilot-private-cluster/sa.tf | 25 ++----------------- modules/beta-autopilot-public-cluster/sa.tf | 25 ++----------------- .../beta-private-cluster-update-variant/sa.tf | 25 ++----------------- modules/beta-private-cluster/sa.tf | 25 ++----------------- .../beta-public-cluster-update-variant/sa.tf | 25 ++----------------- modules/beta-public-cluster/sa.tf | 25 ++----------------- modules/private-cluster-update-variant/sa.tf | 25 ++----------------- modules/private-cluster/sa.tf | 25 ++----------------- sa.tf | 25 ++----------------- 11 files changed, 22 insertions(+), 231 deletions(-) diff --git a/autogen/main/sa.tf.tmpl b/autogen/main/sa.tf.tmpl index cae74cd59..1ab198a8b 100644 --- a/autogen/main/sa.tf.tmpl +++ b/autogen/main/sa.tf.tmpl @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/docs/upgrading_to_v30.0.md b/docs/upgrading_to_v30.0.md index 74f8047e9..c5bb1a392 100644 --- a/docs/upgrading_to_v30.0.md +++ b/docs/upgrading_to_v30.0.md @@ -4,4 +4,5 @@ release. ### Default cluster service account permissions modified -When `create_service_account` is `true`, the service account will now be created with the `Logs Writer`, `Monitoring Metric Writer`, `Monitoring Viewer` and `Stackdriver Resource Metadata Writer` roles instead of the deprecated `Kubernetes Engine Node Service Account` role. +When `create_service_account` is `true`, the service account will now be created with `Kubernetes Engine Default Node Service Account` role instead of `Kubernetes Engine Node Service Account` roles which is deprecated now. +This is the Google recommended least privileged role to be used for the service account attached to the GKE Nodes. diff --git a/modules/beta-autopilot-private-cluster/sa.tf b/modules/beta-autopilot-private-cluster/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-autopilot-private-cluster/sa.tf +++ b/modules/beta-autopilot-private-cluster/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/beta-autopilot-public-cluster/sa.tf b/modules/beta-autopilot-public-cluster/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-autopilot-public-cluster/sa.tf +++ b/modules/beta-autopilot-public-cluster/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/beta-private-cluster-update-variant/sa.tf b/modules/beta-private-cluster-update-variant/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-private-cluster-update-variant/sa.tf +++ b/modules/beta-private-cluster-update-variant/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/beta-private-cluster/sa.tf b/modules/beta-private-cluster/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-private-cluster/sa.tf +++ b/modules/beta-private-cluster/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/beta-public-cluster-update-variant/sa.tf b/modules/beta-public-cluster-update-variant/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-public-cluster-update-variant/sa.tf +++ b/modules/beta-public-cluster-update-variant/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/beta-public-cluster/sa.tf b/modules/beta-public-cluster/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/beta-public-cluster/sa.tf +++ b/modules/beta-public-cluster/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/private-cluster-update-variant/sa.tf b/modules/private-cluster-update-variant/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/private-cluster-update-variant/sa.tf +++ b/modules/private-cluster-update-variant/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/modules/private-cluster/sa.tf b/modules/private-cluster/sa.tf index 9a13a2490..6f89899be 100644 --- a/modules/private-cluster/sa.tf +++ b/modules/private-cluster/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member } diff --git a/sa.tf b/sa.tf index 9a13a2490..6f89899be 100644 --- a/sa.tf +++ b/sa.tf @@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" { display_name = "Terraform-managed service account for cluster ${var.name}" } -resource "google_project_iam_member" "cluster_service_account-log_writer" { +resource "google_project_iam_member" "cluster_service_account-nodeService_account" { count = var.create_service_account ? 1 : 0 project = google_service_account.cluster_service_account[0].project - role = "roles/logging.logWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-metric_writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-log_writer[0].project - role = "roles/monitoring.metricWriter" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-metric_writer[0].project - role = "roles/monitoring.viewer" - member = google_service_account.cluster_service_account[0].member -} - -resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" { - count = var.create_service_account ? 1 : 0 - project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project - role = "roles/stackdriver.resourceMetadata.writer" + role = "roles/container.defaultNodeServiceAccount" member = google_service_account.cluster_service_account[0].member }