terraform/modules/fleet/iam.tf (60 lines of code) (raw):

locals { # Config Sync Service Account cs_service_account = "cs-service-account" cs_service_account_email = "${local.cs_service_account}@${var.fleet_project}.iam.gserviceaccount.com" # Hub service account hub_service_account_email = format("service-%s@gcp-sa-gkehub.iam.gserviceaccount.com", data.google_project.fleet_project.number) hub_service_account = "serviceAccount:${local.hub_service_account_email}" } # # Create Hub Service Account # resource "google_project_iam_member" "hubsa" { # project = var.fleet_project # role = "roles/gkehub.serviceAgent" # member = local.hub_service_account # depends_on = [ # module.enabled_service_project_apis, # ] # } // create ACM service account // Todo - use KSA directly module "service_accounts" { source = "terraform-google-modules/service-accounts/google" # version = "~> 4.2.0" project_id = var.fleet_project display_name = "CS service account" names = [local.cs_service_account] project_roles = ["${var.fleet_project}=>roles/source.reader"] } module "cs_service_account-iam-bindings" { depends_on = [ resource.google_gke_hub_feature.config_management, ] source = "terraform-google-modules/iam/google//modules/service_accounts_iam" service_accounts = [local.cs_service_account_email] project = var.fleet_project bindings = { "roles/iam.workloadIdentityUser" = [ "serviceAccount:${var.fleet_project}.svc.id.goog[config-management-system/root-reconciler]", ] } } module "asm-service_account-iam-bindings" { depends_on = [ resource.google_gke_hub_feature.config_management, ] source = "terraform-google-modules/iam/google//modules/service_accounts_iam" project = var.fleet_project bindings = { "roles/secretmanager.secretAccessor" = [ "serviceAccount:${var.fleet_project}.svc.id.goog[asm-gateways/asm-ingress-gateway]", ] } } module "prom-service_account-iam-bindings" { depends_on = [ resource.google_gke_hub_feature.config_management, ] source = "terraform-google-modules/iam/google//modules/service_accounts_iam" project = var.fleet_project bindings = { "roles/monitoring.viewer" = [ "serviceAccount:${var.fleet_project}.svc.id.goog[custom-metrics/custom-metrics-stackdriver-adapter]", ] } } // Create IAM binding granting the ASM Gateway KSA access to the self signed certs stored in secret manager resource "google_project_iam_binding" "asm-gw-secret-accessor" { role = "roles/secretmanager.secretAccessor" project = var.fleet_project members = [ "serviceAccount:${var.fleet_project}.svc.id.goog[asm-gateways/asm-ingress-gateway]", ] }