Última revisión: mayo de 2026
Crea los servicios de AWS del examen PCNE con Terraform puro: bloque a bloque, cada uno vinculado a un dominio del examen. El mismo código funciona en OpenTofu.
Al final de este laboratorio, habrás aprovisionado, con Terraform puro, un sustrato de red con forma PCNE: habilitación del proyecto host de VPC compartida, una VPC personalizada con una subred regional que utiliza Acceso privado a Google, un Cloud Router + Cloud NAT para salida solo saliente, dos reglas de firewall con Registros de flujo de VPC en la subred y una zona privada de Cloud DNS para resolución interna de nombres. Cinco bloques; la forma de referencia VPC-hub + salida + DNS de PCNE.
Copia los fragmentos en un único main.tf, ejecuta terraform init y luego terraform apply paso a paso.
Nota: este laboratorio de un solo proyecto demuestra la habilitación del proyecto host de VPC compartida, pero en realidad no comparte la VPC con otro proyecto de servicio (eso requiere Org Admin + dos proyectos, fuera del alcance de un laboratorio rápido).
>= 1.5 u OpenTofu >= 1.6.roles/compute.xpnAdmin en el ámbito de la organización. Sin derechos a nivel de organización, el recurso google_compute_shared_vpc_host_project fallará. Omite el Paso 2 y elimínalo de main.tf si solo tienes derechos a nivel de proyecto.your-project-id en el bloque del proveedor.Casi gratuito:
~$0/mes. Barato de dejar en funcionamiento.
Habilita las APIs de Compute, DNS y Logging.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-pcne"
managed_by = "terraform"
}
}
resource "google_project_service" "compute" {
service = "compute.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "dns" {
service = "dns.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "logging" {
service = "logging.googleapis.com"
disable_on_destroy = false
}Shared VPC es el patrón de red multiproyecto canónico de PCNE: un proyecto host posee la VPC, múltiples proyectos de servicio la consumen a través de adjuntos. Las cargas de trabajo en los proyectos de servicio obtienen IPs de las subredes de la VPC host sin que el proyecto host posea los recursos de la capa de carga de trabajo. El examen PCNE evalúa esta separación host vs servicio como el patrón de escala fundamental.
Habilitamos el modo de proyecto host en el proyecto actual (google_compute_shared_vpc_host_project), luego creamos una subred /20 con Acceso privado a Google habilitado (permite que las VMs sin IPs externas lleguen a *.googleapis.com) y VPC Flow Logs activados.
data "google_project" "current" {}
resource "google_compute_shared_vpc_host_project" "host" {
project = data.google_project.current.project_id
depends_on = [google_project_service.compute]
}
resource "google_compute_network" "main" {
name = "certlabpro-pcne-vpc"
auto_create_subnetworks = false
routing_mode = "REGIONAL"
depends_on = [google_project_service.compute]
}
resource "google_compute_subnetwork" "main" {
name = "certlabpro-pcne-subnet"
ip_cidr_range = "10.10.0.0/20"
region = "us-central1"
network = google_compute_network.main.id
private_ip_google_access = true
log_config {
aggregation_interval = "INTERVAL_5_SEC"
flow_sampling = 0.5
metadata = "INCLUDE_ALL_METADATA"
}
}Cloud NAT proporciona a las subredes acceso saliente a internet sin IPs externas por VM, el patrón de salida privado por defecto canónico de PCNE. La forma: un Cloud Router es la primitiva del plano de control BGP (utilizada por NAT, VPN, Interconnect); un Cloud NAT se adjunta a él y proporciona el plano de datos.
Habilitamos NAT con asignación de IP NAT AUTO_ONLY (Google elige las direcciones; las implementaciones de producción se fijan a IPs reservadas específicas para las listas de permitidos del firewall ascendente). El registro solo se activa en caso de errores; el modo de registro completo genera un volumen sustancial de Cloud Logging.
resource "google_compute_router" "nat_router" {
name = "certlabpro-pcne-router"
region = "us-central1"
network = google_compute_network.main.id
}
resource "google_compute_router_nat" "nat" {
name = "certlabpro-pcne-nat"
router = google_compute_router.nat_router.name
region = "us-central1"
nat_ip_allocate_option = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
subnetwork {
name = google_compute_subnetwork.main.id
source_ip_ranges_to_nat = ["ALL_IP_RANGES"]
}
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}Postura de firewall recomendada por PCNE: denegar el tráfico de entrada por defecto (el predeterminado de GCP), permitir solo lo necesario. Agregamos una regla de permiso interno (cualquier TCP/UDP/ICMP entre VMs en la subred) + permiso IAP SSH (TCP/22 desde el rango de la puerta de enlace IAP de Google, para que las VMs sin IPs públicas sigan siendo accesibles por SSH a través de gcloud compute ssh --tunnel-through-iap).
Este es el mismo patrón de dos reglas que el laboratorio ACE. PCNE lo profundiza con políticas de firewall en el ámbito de la organización/carpeta (firewalls jerárquicos que se componen con reglas a nivel de proyecto; fuera del alcance aquí).
resource "google_compute_firewall" "allow_internal" {
name = "certlabpro-pcne-allow-internal"
network = google_compute_network.main.name
direction = "INGRESS"
source_ranges = ["10.10.0.0/20"]
allow {
protocol = "tcp"
}
allow {
protocol = "udp"
}
allow {
protocol = "icmp"
}
}
resource "google_compute_firewall" "allow_iap_ssh" {
name = "certlabpro-pcne-allow-iap-ssh"
network = google_compute_network.main.name
direction = "INGRESS"
source_ranges = ["35.235.240.0/20"]
allow {
protocol = "tcp"
ports = ["22"]
}
}Patrón canónico de PCNE: los nombres de host internos se resuelven a través de una zona privada de Cloud DNS adjunta a la VPC. Las VMs en la VPC ven los registros de esta zona; las VMs externas no. Caso de uso: nombres de host estables y legibles para servicios (api.internal.acme.com, db.internal.acme.com) que se resuelven a la IP privada de la VM.
Creamos la zona internal.acme.com + un registro A de ejemplo. Las implementaciones de producción a menudo combinan esto con el reenvío de DNS de Cloud DNS para configuraciones híbridas (las consultas DNS locales se reenvían a la zona de la nube y viceversa a través de políticas de servidor entrantes). Con cinco bloques implementados (proveedor+APIs, Shared VPC + subred + registros de flujo, Cloud NAT, firewalls, zona privada de Cloud DNS), el sustrato de PCNE está completo.
resource "google_dns_managed_zone" "internal" {
name = "certlabpro-pcne-internal"
dns_name = "internal.acme.com."
description = "PCNE lab private DNS zone"
visibility = "private"
private_visibility_config {
networks {
network_url = google_compute_network.main.id
}
}
labels = local.labels
depends_on = [google_project_service.dns]
}
resource "google_dns_record_set" "api_example" {
managed_zone = google_dns_managed_zone.internal.name
name = "api.${google_dns_managed_zone.internal.dns_name}"
type = "A"
ttl = 300
rrdatas = ["10.10.0.10"]
}terraform destroy desmantela todo. El proyecto host de Shared VPC se deshabilita (primero se deben eliminar los adjuntos del proyecto de servicio, ninguno en este laboratorio). Cloud NAT + router se desvinculan limpiamente. VPC + subred + firewalls se destruyen. La zona privada de Cloud DNS se destruye (el registro de ejemplo se elimina con ella). Los VPC Flow Logs dejan de ingerir.
PCNE cubre muchas superficies de red que este laboratorio no puede abarcar: Cloud VPN (HA/Clásico), Cloud Interconnect (Dedicado/Socio), Network Connectivity Center (NCC – el plano de control de tipo hub-and-spoke), Cross-Cloud Interconnect, Private Service Connect (PSC para patrones de servicio/endpoint/editor), VPC Peering entre VPCs (separado de Shared VPC), Cloud Load Balancing (toda la familia de LB – HTTP(S) global, interno regional, LB de red, LB de red proxy), Cloud CDN, Cloud Armor (WAF/DDoS), Identity-Aware Proxy (IAP), reenvío de DNS de Cloud DNS / políticas de servidor entrantes (la forma de DNS híbrido), Cloud DNS DNSSEC, la postura de Default Firewall Rules heredada, políticas de firewall jerárquicas a nivel de organización/carpeta, Network Intelligence Center (Pruebas de conectividad / Panel de rendimiento / Información de firewall / Topología de red), y perímetros de Controles de servicio de VPC (cubiertos en [[gcp-pcse]] desde el ángulo de exfiltración de datos).
Nos ceñimos a las primitivas de Shared VPC + subred + NAT + firewall + DNS privado porque son la fundación de PCNE sobre la que se componen todos los patrones de red más avanzados. Cloud VPN/Interconnect se conectan al mismo Cloud Router. Los balanceadores de carga se sitúan delante de las mismas VMs protegidas por firewall. PSC publica servicios en la misma VPC. Los firewalls jerárquicos se superponen a las reglas a nivel de proyecto. Domina el sustrato.
Para una cobertura conceptual servicio por servicio, consulta las secciones Buscar, Manual y Editorial de esta página de certificación.