infra-as-code/environments/dev/permissions.tf (65 lines of code) (raw):

# the GCS default Service Account needs to have permissions to publish Eventarc events resource "google_project_iam_member" "gcs_pubsub_publisher" { project = var.project_id role = "roles/pubsub.publisher" member = "serviceAccount:service-${data.google_project.project.number}@gs-project-accounts.iam.gserviceaccount.com" } # Default compute service permissions for Cloud function. To avoid giving permissions to it, use Foundation Fabric v.34.1.0 ## Needed to register the cloud function artifact to build resource "google_project_iam_member" "gcp_artifact_registry_create" { project = var.project_id role = "roles/artifactregistry.createOnPushWriter" member = "serviceAccount:${data.google_project.project.number}-compute@developer.gserviceaccount.com" } ## Needed to give more details during build job. In case it fails if this is not enabled it will not show error log. resource "google_project_iam_member" "gcp_log_writer" { project = var.project_id role = "roles/logging.logWriter" member = "serviceAccount:${data.google_project.project.number}-compute@developer.gserviceaccount.com" } ## Needed for Cloud Build backend resource "google_project_iam_member" "gcs_object_admin" { project = var.project_id role = "roles/storage.objectAdmin" member = "serviceAccount:${data.google_project.project.number}-compute@developer.gserviceaccount.com" } resource "google_project_iam_member" "gcs_cloud_builder" { project = var.project_id role = "roles/cloudbuild.builds.builder" member = "serviceAccount:${data.google_project.project.number}-compute@developer.gserviceaccount.com" } # CCAI Insights Service Account permissions for Cloud Run resource "google_project_iam_member" "gcp_speech_service" { project = var.project_id role = "roles/speech.serviceAgent" member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-contactcenterinsights.iam.gserviceaccount.com" depends_on = [resource.google_project_service.gcp_services] } resource "google_project_iam_member" "gcp_ccai_service" { project = var.project_id role = "roles/contactcenterinsights.serviceAgent" member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-contactcenterinsights.iam.gserviceaccount.com" depends_on = [resource.google_project_service.gcp_services] } # Terraform SA # Service account for project with PII information module "ccai_insights_sa" { source = "github.com/GoogleCloudPlatform/cloud-foundation-fabric//modules/iam-service-account?ref=v31.1.0&depth=1" project_id = var.project_id name = "asset-ccai-cm-sa" # non-authoritative roles granted *to* the service accounts on other resources iam_project_roles = { "${var.project_id}" = [ "roles/contactcenterinsights.editor", "roles/logging.logWriter", "roles/storage.admin", "roles/storage.objectAdmin", "roles/iam.serviceAccountTokenCreator", "roles/iam.serviceAccountUser", "roles/cloudfunctions.developer", "roles/pubsub.publisher", "roles/run.invoker", "roles/eventarc.eventReceiver", "roles/bigquery.jobUser", "roles/bigquery.dataViewer", "roles/bigquery.dataEditor", "roles/artifactregistry.reader", "roles/workflows.invoker", "roles/speech.editor", "roles/aiplatform.admin", "roles/secretmanager.secretAccessor", "roles/serviceusage.serviceUsageAdmin" ] } }