Skip to content

Commit 8bc3962

Browse files
committed
Add read permissions from search Dataform to GA4
The Search Team's Dataform pipelines [1] read from specific datasets in the GA4 Analytics project. Here we add those specific permissions, in line with the principle of least privilege. Because some of the pipelines include a table wildcard [2], we need to add a new custom role that includes the list permission. It seems that previously these permissions were added in the GCP UI via click-ops. [1] https://github.com/alphagov/search-api-v2-dataform [2] e.g. https://github.com/alphagov/search-api-v2-dataform/blob/main/definitions/search-intraday.sqlx#L66
1 parent 04fce38 commit 8bc3962

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

terraform/deployments/ga4-analytics/project_iam_binding.tf

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,23 @@ resource "google_project_iam_binding" "gds_log_alert_writer" {
7070
"group:govuk-performance-analysts@digital.cabinet-office.gov.uk"
7171
]
7272
}
73+
74+
resource "google_bigquery_dataset_iam_member" "flattened_dataset_reader" {
75+
dataset_id = "${google_project.project.project_id}.flattened_dataset"
76+
role = google_project_iam_custom_role.gds_bigquery_read_access.name
77+
members = [
78+
"serviceAccount:dataform-sa@search-api-v2-integration.iam.gserviceaccount.com",
79+
"serviceAccount:dataform-sa@search-api-v2-staging.iam.gserviceaccount.com",
80+
"serviceAccount:dataform-sa@search-api-v2-production.iam.gserviceaccount.com",
81+
]
82+
}
83+
84+
resource "google_bigquery_dataset_iam_member" "events_reader_and_lister" {
85+
dataset_id = "${google_project.project.project_id}.analytics_330577055"
86+
role = google_project_iam_custom_role.gds_bigquery_read_and_list_access.name
87+
members = [
88+
"serviceAccount:dataform-sa@search-api-v2-integration.iam.gserviceaccount.com",
89+
"serviceAccount:dataform-sa@search-api-v2-staging.iam.gserviceaccount.com",
90+
"serviceAccount:dataform-sa@search-api-v2-production.iam.gserviceaccount.com",
91+
]
92+
}

terraform/deployments/ga4-analytics/project_iam_custom_roles.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,19 @@ resource "google_project_iam_custom_role" "gds_bigquery_read_access" {
1010
title = "GDS BQ read access"
1111
}
1212

13+
resource "google_project_iam_custom_role" "gds_bigquery_read_and_list_access" {
14+
description = "Permissions to read and list BigQuery datasets and tables"
15+
permissions = [
16+
"bigquery.datasets.get",
17+
"bigquery.datasets.getIamPolicy",
18+
"bigquery.tables.get",
19+
"bigquery.tables.getData",
20+
"bigquery.tables.list"
21+
]
22+
role_id = "GDS_BQ_read_and_list_access"
23+
title = "GDS BQ read and list access"
24+
}
25+
1326
resource "google_project_iam_custom_role" "gds_bigquery_saved_query_writer" {
1427
description = "Permissions to create, update and delete BigQuery saved queries"
1528
permissions = [

0 commit comments

Comments
 (0)