google_permissions/other_roles.tf (208 lines of code) (raw):

/* // This file is used to add additional roles to the project. The idea is that // there are a set of pre-cleared roles available for use, and that we can // add them to the project as needed by adding them to the appropriate list // for the env targeted (prod or nonprod). // */ resource "google_folder_iam_binding" "bq_job_user" { // // NOTE: this uses bq_data_viewer as well as the next resource block so that those we grant data viewer // also have to execute jobs so paired with .dataViewer count = contains(var.folder_roles, "roles/bigquery.jobUser") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/bigquery.jobUser" members = setunion( module.viewers_workgroup.members, module.developers_workgroup.members ) } resource "google_folder_iam_binding" "bq_data_viewer" { count = contains(var.folder_roles, "roles/bigquery.dataViewer") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/bigquery.dataViewer" members = setunion( module.viewers_workgroup.members, module.developers_workgroup.members ) } resource "google_folder_iam_binding" "bq_resource_viewer" { count = contains(var.folder_roles, "roles/bigquery.resourceViewer") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/bigquery.resourceViewer" members = module.developers_workgroup.members } # roles/cloudtasks.queueAdmin as folder_role resource "google_folder_iam_binding" "cloudtasks_queue_admin" { count = contains(var.folder_roles, "roles/cloudtasks.queueAdmin") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/cloudtasks.queueAdmin" members = module.developers_workgroup.members } # roles/cloudtasks.taskRunner as folder_role resource "google_folder_iam_binding" "cloudtasks_task_runner" { count = contains(var.folder_roles, "roles/cloudtasks.taskRunner") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/cloudtasks.taskRunner" members = module.developers_workgroup.members } # roles/redis.admin as folder_role resource "google_folder_iam_binding" "developers_redis_admin" { count = contains(var.folder_roles, "roles/redis.admin") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/redis.admin" members = module.developers_workgroup.members } # roles/logging.admin as folder_role resource "google_folder_iam_binding" "developers_logging_admin" { count = contains(var.folder_roles, "roles/logging.admin") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/logging.admin" members = module.developers_workgroup.members } # roles/monitoring.alertPolicyEditor as folder_role resource "google_folder_iam_binding" "developers_monitoring_alertPolicyEditor" { count = contains(var.folder_roles, "roles/monitoring.alertPolicyEditor") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/monitoring.alertPolicyEditor" members = module.developers_workgroup.members } # roles/monitoring.notificationChannelEditor in as folder_role resource "google_folder_iam_binding" "developers_monitoring_notificationChannelEditor" { count = contains(var.folder_roles, "roles/monitoring.notificationChannelEditor") && !var.admin_only ? 1 : 0 folder = var.google_folder_id role = "roles/monitoring.notificationChannelEditor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "editor_nonprod" { count = contains(var.nonprod_roles, "roles/editor") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/editor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "automl_editor_prod" { count = contains(var.prod_roles, "roles/automl.editor") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/automl.editor" members = module.developers_workgroup.members } resource "google_project_iam_member" "cloudtranslate_editor_prod" { for_each = contains(var.prod_roles, "roles/cloudtranslate.editor") && !var.admin_only && var.google_prod_project_id != "" ? toset(module.developers_workgroup.members) : toset([]) project = var.google_prod_project_id role = "roles/cloudtranslate.editor" member = each.key } resource "google_project_iam_binding" "storage_objectadmin_prod" { count = contains(var.prod_roles, "roles/storage.objectAdmin") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/storage.objectAdmin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "translationhub_admin_prod" { count = contains(var.prod_roles, "roles/translationhub.admin") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/translationhub.admin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "bucket_admin" { count = contains(var.nonprod_roles, "roles/storage.admin") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/storage.admin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_bucket_admin" { count = contains(var.prod_roles, "roles/storage.admin") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/storage.admin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_db_admin" { count = contains(var.prod_roles, "roles/cloudsql.admin") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/cloudsql.admin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_db_admin" { count = contains(var.nonprod_roles, "roles/cloudsql.admin") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/cloudsql.admin" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_monitoring_uptimecheckconfigeditor" { count = contains(var.prod_roles, "roles/monitoring.uptimeCheckConfigEditor") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/monitoring.uptimeCheckConfigEditor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_monitoring_uptimecheckconfigeditor" { count = contains(var.nonprod_roles, "roles/monitoring.uptimeCheckConfigEditor") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/monitoring.uptimeCheckConfigEditor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_pubsub_editor" { count = contains(var.prod_roles, "roles/pubsub.editor") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/pubsub.editor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_pubsub_editor" { count = contains(var.nonprod_roles, "roles/pubsub.editor") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/pubsub.editor" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_colabEnterpriseUser" { count = contains(var.prod_roles, "roles/aiplatform.colabEnterpriseUser") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/aiplatform.colabEnterpriseUser" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_colabEnterpriseUser" { count = contains(var.nonprod_roles, "roles/aiplatform.colabEnterpriseUser") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/aiplatform.colabEnterpriseUser" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_cloudsql_viewer" { count = contains(var.prod_roles, "roles/cloudsql.viewer") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/cloudsql.viewer" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_cloudsql_viewer" { count = contains(var.nonprod_roles, "roles/cloudsql.viewer") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/cloudsql.viewer" members = module.developers_workgroup.members } resource "google_project_iam_binding" "prod_developer_objectUser" { count = contains(var.prod_roles, "roles/storage.objectUser") && !var.admin_only && var.google_prod_project_id != "" ? 1 : 0 project = var.google_prod_project_id role = "roles/storage.objectUser" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_objectUser" { count = contains(var.nonprod_roles, "roles/storage.objectUser") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/storage.objectUser" members = module.developers_workgroup.members } resource "google_project_iam_binding" "nonprod_developer_secretmanager_admin" { count = contains(var.nonprod_roles, "roles/secretmanager.admin") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/secretmanager.admin" members = module.developers_workgroup.members } resource "google_project_iam_member" "prod_developer_secretmanager_secretAccessor" { for_each = contains(var.prod_roles, "roles/secretmanager.secretAccessor") && !var.admin_only && var.google_prod_project_id != "" ? toset(module.developers_workgroup.members) : toset([]) project = var.google_prod_project_id role = "roles/secretmanager.secretAccessor" member = each.value } resource "google_project_iam_member" "prod_developer_secretmanager_secretVersionAdder" { for_each = contains(var.prod_roles, "roles/secretmanager.secretVersionAdder") && !var.admin_only && var.google_prod_project_id != "" ? toset(module.developers_workgroup.members) : toset([]) project = var.google_prod_project_id role = "roles/secretmanager.secretVersionAdder" member = each.value } resource "google_project_iam_binding" "nonprod_developer_oath_config_editor" { count = contains(var.nonprod_roles, "roles/oauthconfig.editor") && !var.admin_only && var.google_nonprod_project_id != "" ? 1 : 0 project = var.google_nonprod_project_id role = "roles/oauthconfig.editor" members = module.developers_workgroup.members }