Skip to content

Commit 350faa7

Browse files
authored
feat!: Create least privilege default service account (#1757)
1 parent 9b5abc1 commit 350faa7

File tree

11 files changed

+28
-230
lines changed

11 files changed

+28
-230
lines changed

autogen/main/sa.tf.tmpl

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

docs/upgrading_to_v29.0.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Upgrading to v29.0
2+
The v29.0 release of *kubernetes-engine* is a backwards incompatible
3+
release.
4+
5+
### Default cluster service account permissions modified
6+
7+
When `create_service_account` is `true`, the service account will now be created with `Kubernetes Engine Node Service Account` role instead of `Logs Writer`, `Monitoring Metric Writer`, `Monitoring Viewer` and `Stackdriver Resource Metadata Writer` roles.
8+
This is the Google recommended least privileged role to be used for the service account attached to the GKE Nodes.

modules/beta-autopilot-private-cluster/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/beta-autopilot-public-cluster/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/beta-private-cluster-update-variant/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/beta-private-cluster/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/beta-public-cluster-update-variant/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/beta-public-cluster/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/private-cluster-update-variant/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

modules/private-cluster/sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

sa.tf

+2-23
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,10 @@ resource "google_service_account" "cluster_service_account" {
4545
display_name = "Terraform-managed service account for cluster ${var.name}"
4646
}
4747

48-
resource "google_project_iam_member" "cluster_service_account-log_writer" {
48+
resource "google_project_iam_member" "cluster_service_account-nodeService_account" {
4949
count = var.create_service_account ? 1 : 0
5050
project = google_service_account.cluster_service_account[0].project
51-
role = "roles/logging.logWriter"
52-
member = google_service_account.cluster_service_account[0].member
53-
}
54-
55-
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
56-
count = var.create_service_account ? 1 : 0
57-
project = google_project_iam_member.cluster_service_account-log_writer[0].project
58-
role = "roles/monitoring.metricWriter"
59-
member = google_service_account.cluster_service_account[0].member
60-
}
61-
62-
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
63-
count = var.create_service_account ? 1 : 0
64-
project = google_project_iam_member.cluster_service_account-metric_writer[0].project
65-
role = "roles/monitoring.viewer"
66-
member = google_service_account.cluster_service_account[0].member
67-
}
68-
69-
resource "google_project_iam_member" "cluster_service_account-resourceMetadata-writer" {
70-
count = var.create_service_account ? 1 : 0
71-
project = google_project_iam_member.cluster_service_account-monitoring_viewer[0].project
72-
role = "roles/stackdriver.resourceMetadata.writer"
51+
role = "roles/container.nodeServiceAccount"
7352
member = google_service_account.cluster_service_account[0].member
7453
}
7554

0 commit comments

Comments
 (0)