iam.tf (165 lines of code) (raw):
/**
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
locals {
data_engineer_group_data_ingestion_project_roles = [
"roles/logging.viewer",
"roles/dataflow.admin",
"roles/cloudkms.viewer",
"roles/cloudbuild.builds.editor",
"roles/compute.networkUser",
"roles/composer.user"
]
data_engineer_group_data_project_roles = [
"roles/logging.viewer",
"roles/cloudkms.viewer",
"roles/cloudbuild.builds.editor",
"roles/compute.networkUser",
"roles/dataflow.admin",
"roles/bigquery.dataEditor",
"roles/bigquery.jobUser",
"roles/dlp.admin"
]
data_analyst_group_data_ingestion_project_roles = [
"roles/logging.viewer",
"roles/dataflow.viewer",
"roles/dataflow.developer"
]
data_analyst_group_data_project_roles = [
"roles/logging.viewer",
"roles/dataflow.viewer",
"roles/dataflow.developer",
"roles/dlp.admin",
"roles/bigquery.dataViewer",
"roles/bigquery.jobUser",
"roles/bigquery.user",
]
security_analyst_group_org_roles = [
"roles/logging.viewer",
"roles/accesscontextmanager.policyReader",
"roles/cloudkms.viewer",
"roles/datacatalog.viewer",
"roles/networkmanagement.viewer",
"roles/orgpolicy.policyViewer",
"roles/securitycenter.adminViewer",
"roles/securitycenter.findingsEditor",
"roles/securitycenter.findingsMuteSetter",
"roles/securitycenter.findingsStateSetter",
"roles/securitycenter.findingsBulkMuteEditor"
]
network_administrator_group_org_roles = [
"roles/logging.viewer",
"roles/compute.networkAdmin"
]
security_administrator_group_org_roles = [
"roles/cloudkms.admin",
"roles/datacatalog.admin",
"roles/dlp.admin",
"roles/accesscontextmanager.policyAdmin",
"roles/orgpolicy.policyAdmin",
"roles/logging.admin",
"roles/cloudasset.viewer",
"roles/compute.securityAdmin",
"roles/iam.securityAdmin"
]
plaintext_reader_group_data_project_bigquery_roles = [
"roles/bigquery.dataViewer"
]
encrypted_data_reader_group_data_project_bigquery_roles = [
"roles/bigquery.user"
]
plaintext_reader_group_data_project_roles = [
"roles/cloudkms.viewer",
"roles/bigquery.jobUser",
"roles/bigquery.user"
]
encrypted_data_reader_group_data_project_roles = [
"roles/bigquery.jobUser"
]
}
resource "google_project_iam_member" "data-engineer-group-ingestion" {
for_each = toset(local.data_engineer_group_data_ingestion_project_roles)
project = var.data_ingestion_project_id
role = each.value
member = "group:${var.data_engineer_group}"
}
resource "google_project_iam_member" "data-engineer-group" {
for_each = toset(local.data_engineer_group_data_project_roles)
project = var.data_project_id
role = each.value
member = "group:${var.data_engineer_group}"
}
resource "google_project_iam_member" "data-analyst-group-ingestion" {
for_each = toset(local.data_analyst_group_data_ingestion_project_roles)
project = var.data_ingestion_project_id
role = each.value
member = "group:${var.data_analyst_group}"
}
resource "google_project_iam_member" "data-analyst-group" {
for_each = toset(local.data_analyst_group_data_project_roles)
project = var.data_project_id
role = each.value
member = "group:${var.data_analyst_group}"
}
resource "google_organization_iam_member" "security-analyst-group" {
for_each = toset(local.security_analyst_group_org_roles)
org_id = var.org_id
role = each.value
member = "group:${var.security_analyst_group}"
}
resource "google_organization_iam_member" "network-administrator-group" {
for_each = toset(local.network_administrator_group_org_roles)
org_id = var.org_id
role = each.value
member = "group:${var.network_administrator_group}"
}
resource "google_organization_iam_member" "security-administrator-group" {
for_each = toset(local.security_administrator_group_org_roles)
org_id = var.org_id
role = each.value
member = "group:${var.security_administrator_group}"
}
resource "google_project_iam_member" "plaintext_reader_group" {
for_each = toset(local.plaintext_reader_group_data_project_roles)
project = var.data_project_id
role = each.value
member = "group:${var.plaintext_reader_group}"
}
resource "google_project_iam_member" "encrypted_data_reader_group" {
for_each = toset(local.encrypted_data_reader_group_data_project_roles)
project = var.data_project_id
role = each.value
member = "group:${var.encrypted_data_reader_group}"
}
resource "google_bigquery_dataset_iam_member" "encrypted_data_reader_group" {
for_each = toset(local.encrypted_data_reader_group_data_project_bigquery_roles)
project = var.data_project_id
dataset_id = var.dataset_id
role = each.value
member = "group:${var.encrypted_data_reader_group}"
depends_on = [
module.bigquery_data
]
}
resource "google_bigquery_dataset_iam_member" "plaintext_data_reader_group" {
for_each = toset(local.plaintext_reader_group_data_project_bigquery_roles)
project = var.data_project_id
dataset_id = var.dataset_id
role = each.value
member = "group:${var.plaintext_reader_group}"
depends_on = [
module.bigquery_data
]
}