fast/addons/2-networking-ngfw/tls-inspection.tf (98 lines of code) (raw):

/** * Copyright 2025 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. */ # tfdoc:file:description TLS inspection policies and supporting resources. locals { ca_pool_ids = merge( { for k, v in var.certificate_authority_pools : k => v.id }, { for k, v in module.cas : k => v.ca_pool_id } ) trust_config_ids = { for k, v in google_certificate_manager_trust_config.default : k => v.id } } module "cas" { source = "../../../modules/certificate-authority-service" for_each = var.certificate_authorities project_id = local.project_id ca_configs = each.value.ca_configs ca_pool_config = ( each.value.ca_pool_config != null ? each.value.ca_pool_config : { create_pool = { name = each.key } } ) iam = each.value.iam iam_bindings = each.value.iam_bindings iam_bindings_additive = merge( each.value.iam_bindings_additive, var._fast_debug.skip_datasources == true ? {} : { nsec_certificate_manager = { member = module.project[0].service_agents["networksecurity"].iam_email role = "roles/privateca.certificateManager" } } ) iam_by_principals = each.value.iam_by_principals location = each.value.location } resource "google_certificate_manager_trust_config" "default" { for_each = var.trust_configs project = local.project_id name = each.key description = each.value.description location = each.value.location dynamic "allowlisted_certificates" { for_each = each.value.allowlisted_certificates content { pem_certificate = file(allowlisted_certificates.value) } } dynamic "trust_stores" { for_each = each.value.trust_stores content { dynamic "intermediate_cas" { for_each = trust_stores.value.intermediate_cas content { pem_certificate = file(intermediate_cas.value) } } dynamic "trust_anchors" { for_each = trust_stores.value.trust_anchors content { pem_certificate = file(trust_anchors.value) } } } } } resource "google_network_security_tls_inspection_policy" "default" { for_each = var.tls_inspection_policies project = local.project_id name = each.key location = each.value.location exclude_public_ca_set = each.value.exclude_public_ca_set ca_pool = lookup( local.ca_pool_ids, each.value.ca_pool_id, each.value.ca_pool_id ) trust_config = lookup( local.trust_config_ids, each.value.trust_config, each.value.trust_config ) custom_tls_features = each.value.tls.custom_features tls_feature_profile = each.value.tls.feature_profile min_tls_version = each.value.tls.min_version }