最終確認: 2026年5月
PCNE 試験の対象となる AWS サービスを、プレーンな Terraform を使用して構築します。1 ブロックずつ、それぞれ試験ドメインに関連付けられています。同じコードが OpenTofu でも動作します。
このラボの終了までに、素のTerraformを使用して、PCNE型のネットワーク基盤をプロビジョニングします。具体的には、Shared VPCホストプロジェクトの有効化、Private Google Accessを使用する単一のリージョンサブネットを持つカスタムVPC、アウトバウンド専用のCloud Router + Cloud NAT、サブネット上でVPCフローログを持つ2つのファイアウォールルール、および内部名前解決のためのCloud DNSプライベートゾーンです。5つのブロックからなる、PCNEのハブVPC + 送出 + DNSの参照形状です。
これらのスニペットを単一のmain.tfに記述し、terraform initを実行し、その後terraform applyをステップバイステップで実行します。
注:この単一プロジェクトのラボでは、Shared VPCホストプロジェクトの有効化を示しますが、実際には別のサービスプロジェクトとVPCを共有しません(これには組織管理者権限と2つのプロジェクトが必要であり、迅速なラボの範囲外です)。
>= 1.5 または OpenTofu >= 1.6。roles/compute.xpnAdmin が必要です。組織レベルの権限がない場合、google_compute_shared_vpc_host_projectリソースは失敗します。プロジェクトレベルの権限しかない場合は、ステップ2をスキップし、main.tfから削除してください。your-project-idを置き換えてください。ほぼ無料:
約0ドル/月。実行したままでも安価です。
Compute、DNS、およびLogging APIを有効にします。
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で標準的なマルチプロジェクトネットワーキングパターンです。1つのホストプロジェクトがVPCを所有し、複数のサービスプロジェクトがアタッチメントを介してそれを利用します。サービスプロジェクト内のワークロードは、ホストプロジェクトがワークロード層のリソースを所有することなく、ホストVPCのサブネットからIPを取得します。PCNE試験では、このホストとサービスの分離が、負荷分散スケーリングパターンとして問われます。
現在のプロジェクトでホストプロジェクトモード(google_compute_shared_vpc_host_project)を有効にし、次にPrivate Google Accessが有効(外部IPを持たないVMが*.googleapis.comに到達できるようにする)でVPCフローログがオンになっている/20サブネットを構成します。
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は、サブネットにVMごとの外部IPなしでアウトバウンドインターネットアクセスを提供します。これはPCNEで標準的なプライベート・バイ・デフォルトの送出パターンです。その構成は、Cloud RouterがBGPコントロールプレーンプリミティブ(NAT、VPN、Interconnectで使用)であり、Cloud NATがそれにアタッチしてデータプレーンを提供します。
AUTO_ONLY NAT IP割り当て(Googleがアドレスを選択します。本番環境のデプロイでは、アップストリームのファイアウォール許可リストのために特定の予約済みIPに固定します)でNATを有効にします。ロギングはエラー時のみに設定します。フルログモードは大量の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のデフォルト)、必要なもののみを許可します。内部からのすべて許可(サブネット内のVM間の任意のTCP / UDP / ICMP)と、IAP SSH許可(GoogleのIAPゲートウェイ範囲からのTCP/22。これにより、パブリックIPを持たないVMでもgcloud compute ssh --tunnel-through-iap経由でSSHアクセス可能になります)を追加します。
これはACEラボと同じ2つのルールパターンですが、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で標準的なパターン:VPCにアタッチされたCloud DNSのプライベートゾーンを介して内部ホスト名が解決されます。VPC内のVMはこのゾーンのレコードを参照できますが、外部のVMはできません。ユースケース:VMのプライベートIPに解決される、サービス用の安定した人間が読めるホスト名(api.internal.acme.com、db.internal.acme.com)です。
ゾーンinternal.acme.comと1つの例のAレコードを作成します。本番環境のデプロイでは、ハイブリッド設定のためにCloud DNS DNS転送(オンプレミスのDNSクエリはクラウドゾーンに転送され、インバウンドサーバーポリシーを介して逆方向も可能)と組み合わせることがよくあります。5つのブロック(プロバイダー+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(専用 / パートナー)、Network Connectivity Center(NCC — ハブアンドスポークのコントロールプレーン)、Cross-Cloud Interconnect、Private Service Connect(サービス / エンドポイント / パブリッシャーパターン用のPSC)、VPC間のVPC Peering(Shared VPCとは別)、Cloud Load Balancing(グローバルHTTP(S)、リージョン内部、ネットワークLB、プロキシネットワークLBなどのLBファミリー全体)、Cloud CDN、Cloud Armor(WAF / DDoS)、Identity-Aware Proxy(IAP)、Cloud DNS 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に接続します。ロードバランサーは同じファイアウォールで保護されたVMの前面に配置されます。PSCは同じVPCにサービスを公開します。階層型ファイアウォールはプロジェクトレベルのルールの上に層をなします。この基盤を習得しましょう。
サービスごとの概念的な内容は、この認定試験ページの閲覧、プレイブック、およびEditorialセクションを参照してください。