Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена PCNE с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы развернете с помощью чистого Terraform сетевую подложку в формате PCNE — включение хост-проекта Shared VPC, настраиваемую VPC с одной региональной подсетью, использующей Частный доступ Google (Private Google Access), Cloud Router + Cloud NAT для исходящего трафика, два правила брандмауэра с журналами потоков VPC (VPC Flow Logs) для подсети и частную зону Cloud DNS для внутреннего разрешения имен. Пять блоков; эталонная конфигурация PCNE: hub-VPC + исходящий трафик + DNS.
Поместите фрагменты кода в один файл main.tf, запустите terraform init, затем terraform apply пошагово.
Примечание: эта однопроектная лабораторная работа демонстрирует включение хост-проекта Shared VPC, но фактически не делится VPC с другим проектом-службой (что требует администратора организации и двух проектов, и выходит за рамки быстрой лабораторной работы).
>= 1.5 или OpenTofu >= 1.6.roles/compute.xpnAdmin на уровне организации — без прав уровня организации ресурс google_compute_shared_vpc_host_project завершится ошибкой. Пропустите Шаг 2 и удалите его из main.tf, если у вас есть права только на уровне проекта.your-project-id в блоке провайдера.Практически бесплатно:
~0 долл. США/месяц. Дешево оставлять запущенным.
Включите API Compute, DNS и 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 — это канонический для PCNE шаблон многопроектной сети: один хост-проект владеет VPC, несколько проектов-служб используют его через подключения. Рабочие нагрузки в проектах-службах получают IP-адреса из подсетей хост-VPC без владения хост-проектом ресурсами уровня рабочей нагрузки. Экзамен PCNE проверяет это разделение хоста и службы как несущий шаблон масштабирования.
Мы включаем режим хост-проекта для текущего проекта (google_compute_shared_vpc_host_project), затем выделяем подсеть /20 с включенным Частным доступом Google (Private Google Access) (позволяет ВМ без внешних IP-адресов обращаться к *.googleapis.com) и включенными Журналами потоков VPC (VPC Flow Logs).
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 предоставляет подсетям исходящий доступ в интернет без внешних IP-адресов для каждой ВМ — это канонический для PCNE шаблон исходящего трафика приватный по умолчанию. Конфигурация: Cloud Router является примитивом плоскости управления BGP (используется NAT, VPN, Interconnect); Cloud NAT подключается к нему и обеспечивает плоскость данных.
Мы включаем NAT с выделением IP-адресов NAT AUTO_ONLY (Google выбирает адреса; в производственных развертываниях они привязываются к определенным зарезервированным IP-адресам для списков разрешений брандмауэра). Ведение журнала только ошибок — режим полного журнала генерирует значительный объем 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"
}
}Рекомендованная для PCNE политика брандмауэра: запрет по умолчанию для входящего трафика (по умолчанию в GCP), разрешено только необходимое. Мы добавляем внутреннее разрешение всего (любой TCP / UDP / ICMP между ВМ в подсети) + разрешение IAP SSH (TCP/22 из диапазона шлюза IAP Google, чтобы ВМ без публичных IP-адресов все еще были доступны по SSH через gcloud compute ssh --tunnel-through-iap).
Это тот же шаблон из двух правил, что и в лабораторной работе ACE — PCNE углубляет его с помощью политик брандмауэра на уровне организации/папки (иерархические брандмауэры, которые сочетаются с правилами уровня проекта; здесь это выходит за рамки).
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"]
}
}Канонический для PCNE шаблон: внутренние имена хостов разрешаются через частную зону Cloud DNS, прикрепленную к VPC. ВМ в VPC видят записи этой зоны; ВМ вне ее — нет. Вариант использования: стабильные, удобочитаемые имена хостов для служб (api.internal.acme.com, db.internal.acme.com), которые разрешаются в частный IP-адрес ВМ.
Мы создаем зону internal.acme.com + одну примерную запись A. Производственные развертывания часто сочетают это с пересылкой DNS Cloud DNS для гибридных настроек (локальные DNS-запросы пересылаются в облачную зону и наоборот через политики входящих серверов). С пятью готовыми блоками (провайдер+API, Shared VPC + подсеть + журналы потоков, Cloud NAT, брандмауэры, частная зона Cloud DNS) подложка PCNE завершена.
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 удаляет все. Хост-проект Shared VPC отключается (сначала необходимо удалить все подключения проектов-служб — в этой лабораторной работе их нет). Cloud NAT + маршрутизатор отключаются без проблем. VPC + подсеть + брандмауэры уничтожаются. Частная зона Cloud DNS удаляется (примерная запись удаляется вместе с ней). Журналы потоков VPC прекращают прием данных.
PCNE охватывает множество сетевых аспектов, которые эта лабораторная работа не может вместить — Cloud VPN (HA / Classic), Cloud Interconnect (Dedicated / Partner), Network Connectivity Center (NCC — плоскость управления по схеме "звезда"), Cross-Cloud Interconnect, Private Service Connect (PSC для паттернов службы / конечной точки / издателя), VPC Peering между VPC (отдельно от Shared VPC), Cloud Load Balancing (все семейство балансировщиков — глобальный HTTP(S), региональный внутренний, сетевой LB, прокси-сетевой LB), Cloud CDN, Cloud Armor (WAF / DDoS), Identity-Aware Proxy (IAP), пересылка DNS Cloud DNS / политики входящих серверов (гибридная форма DNS), Cloud DNS DNSSEC, устаревшая политика Default Firewall Rules, иерархические политики брандмауэра на уровне организации / папки, Network Intelligence Center (тесты подключения / панель производительности / аналитика брандмауэра / топология сети) и периметры VPC Service Controls (рассмотрены в [[gcp-pcse]] с точки зрения предотвращения утечки данных).
Мы придерживаемся примитивов Shared VPC + подсеть + NAT + брандмауэр + частный DNS, потому что они являются основой PCNE, на которой строятся все более продвинутые сетевые шаблоны. Cloud VPN / Interconnect подключаются к тому же Cloud Router. Балансировщики нагрузки находятся перед теми же ВМ, защищенными брандмауэром. PSC публикует службы в ту же VPC. Иерархические брандмауэры накладываются поверх правил уровня проекта. Освойте эту основу.
Для концептуального обзора по каждой службе см. разделы Просмотр, Справочник и Editorial этой страницы сертификата.