terraform/stacks/inspection/iam.tf (45 lines of code) (raw):
############## Service Accounts ######################################
resource "google_service_account" "sa_inspection_dispatcher" {
project = var.project
account_id = var.sa_inspection_dispatcher
display_name = "Runtime SA for Inspection Dispatcher service"
}
resource "google_service_account" "sa_inspector" {
project = var.project
account_id = var.sa_inspector
display_name = "Runtime SA for Inspector service"
}
resource "google_service_account" "sa_inspection_dispatcher_tasks" {
project = var.project
account_id = var.sa_inspection_dispatcher_tasks
display_name = "To authorize PubSub Push requests to Inspection Dispatcher Service"
}
resource "google_service_account" "sa_inspector_tasks" {
project = var.project
account_id = var.sa_inspector_tasks
display_name = "To authorize PubSub Push requests to Inspector Service"
}
############## Service Accounts Access ################################
# Use google_project_iam_member because it's Non-authoritative.
# It Updates the IAM policy to grant a role to a new member.
# Other members for the role for the project are preserved.
#### Dispatcher Tasks Permissions ###
resource "google_service_account_iam_member" "sa_inspection_dispatcher_account_user_sa_dispatcher_tasks" {
service_account_id = google_service_account.sa_inspection_dispatcher_tasks.name
role = "roles/iam.serviceAccountUser"
member = "serviceAccount:${google_service_account.sa_inspection_dispatcher_tasks.email}"
}
#### Dispatcher SA Permissions ###
# Grant sa_dispatcher access to submit query jobs
resource "google_project_iam_member" "sa_inspection_dispatcher_bq_job_user" {
project = var.project
role = "roles/bigquery.jobUser"
member = "serviceAccount:${google_service_account.sa_inspection_dispatcher.email}"
}
#### Inspector Tasks SA Permissions ###
resource "google_service_account_iam_member" "sa_inspector_account_user_sa_inspector_tasks" {
service_account_id = google_service_account.sa_inspector.name
role = "roles/iam.serviceAccountUser"
member = "serviceAccount:${google_service_account.sa_inspector_tasks.email}"
}
#### Inspector SA Permissions ###
# Grant sa_inspector access to list dlp jobs
resource "google_project_iam_member" "sa_inspector_dlp_jobs_editor" {
project = var.project
role = "roles/dlp.jobsEditor"
member = "serviceAccount:${google_service_account.sa_inspector.email}"
}
# Grant sa_inspector access to read dlp templates
resource "google_project_iam_member" "sa_inspector_dlp_template_reader" {
project = var.project
role = "roles/dlp.inspectTemplatesReader"
member = "serviceAccount:${google_service_account.sa_inspector.email}"
}