3-networks-dual-svpc/modules/restricted_shared_vpc/service_control.tf (73 lines of code) (raw):
/**
* Copyright 2021 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 {
prefix = "${var.environment_code}_shared_restricted"
access_level_name = "alp_${local.prefix}_members_${random_id.random_access_level_suffix.hex}"
perimeter_name = "sp_${local.prefix}_default_perimeter_${random_id.random_access_level_suffix.hex}"
}
resource "random_id" "random_access_level_suffix" {
byte_length = 2
}
module "access_level_members" {
source = "terraform-google-modules/vpc-service-controls/google//modules/access_level"
version = "~> 4.0"
description = "${local.prefix} Access Level"
policy = var.access_context_manager_policy_id
name = local.access_level_name
members = var.members
}
resource "time_sleep" "wait_vpc_sc_propagation" {
create_duration = "60s"
destroy_duration = "60s"
depends_on = [
module.main,
google_compute_global_address.private_service_access_address,
google_service_networking_connection.private_vpc_connection,
module.region1_router1,
module.region1_router2,
module.region2_router1,
module.region2_router2,
module.private_service_connect,
google_dns_policy.default_policy,
module.peering_zone,
google_compute_firewall.deny_all_egress,
google_compute_firewall.allow_restricted_api_egress,
google_compute_firewall.allow_all_egress,
google_compute_firewall.allow_all_ingress,
google_compute_router.nat_router_region1,
google_compute_address.nat_external_addresses1,
google_compute_router_nat.nat_external_addresses_region1,
google_compute_router.nat_router_region2,
google_compute_address.nat_external_addresses_region2,
google_compute_router_nat.egress_nat_region2,
]
}
module "regular_service_perimeter" {
source = "terraform-google-modules/vpc-service-controls/google//modules/regular_service_perimeter"
version = "~> 4.0"
policy = var.access_context_manager_policy_id
perimeter_name = local.perimeter_name
description = "Default VPC Service Controls perimeter"
resources = distinct(concat([var.project_number], var.perimeter_projects))
access_levels = [module.access_level_members.name]
restricted_services = var.restricted_services
vpc_accessible_services = ["RESTRICTED-SERVICES"]
ingress_policies = var.ingress_policies
egress_policies = var.egress_policies
depends_on = [
time_sleep.wait_vpc_sc_propagation
]
}