最終確認: 2026年5月
PCSE 試験の対象となる AWS サービスを、プレーンな Terraform を使用して構築します。1 ブロックずつ、それぞれ試験ドメインに関連付けられています。同じコードが OpenTofu でも動作します。
このラボを完了すると、プレーンなTerraformを使用して、最小限かつ現実的なPCSEセキュリティベースラインをプロビジョニングできます。これには、デフォルトネットワークの作成を防止する組織ポリシーの制約、自動ローテーションを備えたCloud KMSキーリングと顧客管理の暗号化キー、CMKで暗号化されたCloud Storageバケット、IAMイベントを専用のロギングバケットにルーティングするCloud Audit Logsシンクが含まれます。5つのブロックで構成され、PCSEの防止 → 暗号化 → 監査のループを形成します。
これらのスニペットを単一のmain.tfファイルに配置し、terraform initを実行した後、terraform applyをステップバイステップで実行してください。
>= 1.5 または OpenTofu >= 1.6。roles/orgpolicy.policyAdmin**が必要です。組織レベルの同じ制約も存在しますが、それには組織管理者が必要です。your-project-idを置き換えてください。ラボの範囲ではほぼ無料です。
月額およそ$0~$1。ダッシュボードを研究したい場合は、実行したままでも安価です。
Cloud KMS、Cloud Storage、Cloud 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-pcse"
managed_by = "terraform"
}
}
data "google_project" "current" {}
resource "google_project_service" "cloudkms" {
service = "cloudkms.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "logging" {
service = "logging.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "orgpolicy" {
service = "orgpolicy.googleapis.com"
disable_on_destroy = false
}組織ポリシーサービスはPCSEのガードレールプリミティブです。組織/フォルダー/プロジェクトのスコープで一度制約を設定すると、それに違反するリソースは作成されなくなります。PCSE試験では、制約とIAMの違いが問われます。IAMは誰が行動できるかを制御し、組織ポリシーは何が存在できるかを制御します。
このプロジェクトのスコープでcompute.skipDefaultNetworkCreationを適用します。プロジェクトが新しく初期化されると、GCPは通常、過度に緩いファイアウォールルールを持つデフォルトVPCを作成しますが、この制約はそれを防止します。PCSEで典型的なデフォルトでの防止の形です。
resource "google_project_organization_policy" "skip_default_network" {
project = data.google_project.current.project_id
constraint = "compute.skipDefaultNetworkCreation"
boolean_policy {
enforced = true
}
depends_on = [google_project_service.orgpolicy]
}Cloud KMSはPCSEのCMKプリミティブです。GCS、BigQuery、Compute Engineディスク、Cloud SQL、Spanner、Secret Managerなど、あらゆる保存時暗号化シナリオ向けの顧客管理暗号化キーを提供します。PCSE試験では、CMKのローテーション(CMEKではデフォルトで常にオン。デフォルトの90日ローテーションが推奨設定)とキーリングとキーの分離(キーリングがIAM境界であり、キーはそれを継承する)が問われます。
ここでは、90日ローテーションのリージョナルキーリングとSYMMETRIC_ENCRYPTIONキーを作成します。ステップ4のバケットがこのキーを使用するには、Cloud Storageサービスアカウントにroles/cloudkms.cryptoKeyEncrypterDecrypterを付与する必要があります。ステップ4にはそのバインディングが含まれています。
resource "google_kms_key_ring" "main" {
name = "certlabpro-pcse-keyring"
location = "us-central1"
depends_on = [google_project_service.cloudkms]
}
resource "google_kms_crypto_key" "storage_cmk" {
name = "storage-cmk"
key_ring = google_kms_key_ring.main.id
purpose = "ENCRYPT_DECRYPT"
rotation_period = "7776000s" # 90 days
lifecycle {
prevent_destroy = false # lab-only
}
}PCSEが推奨する保存時暗号化パターン:機密データにはデフォルトのGoogle管理暗号化を絶対に使用せず、常にCMKを接続します。Cloud Storageサービスエージェント(プロジェクト固有のサービスアカウントservice-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)にCMKに対するroles/cloudkms.cryptoKeyEncrypterDecrypterを付与し、次にそのキーを参照するバケットをプロビジョニングします。
このバケットに書き込まれるすべてのオブジェクトは、データ暗号化キー(DEK)でラップされ、そのDEK自体はCMKでラップされます。CMKをローテーションすると、次のDEKがローテーションされ、既存のオブジェクトは次回の書き込み時に再暗号化されます。PCSE試験では、このエンベロープ暗号化の形が問われます。
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_project_service_account" "gcs_account" {}
resource "google_kms_crypto_key_iam_member" "gcs_kms" {
crypto_key_id = google_kms_crypto_key.storage_cmk.id
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
member = "serviceAccount:${google_storage_project_service_account.gcs_account.email_address}"
}
resource "google_storage_bucket" "secure" {
name = "certlabpro-pcse-secure-${random_id.suffix.hex}"
location = "us-central1"
uniform_bucket_level_access = true
force_destroy = true # lab-only
encryption {
default_kms_key_name = google_kms_crypto_key.storage_cmk.id
}
labels = local.labels
depends_on = [google_kms_crypto_key_iam_member.gcs_kms]
}PCSEが推奨する監査ログの保持期間:デフォルトの_Requiredおよび_Defaultログバケットは30日間の保持期間を持ちます。機密性の高い監査イベント(IAMの付与/取り消し/ポリシー編集など)は、はるかに長い期間(SOX / HIPAA / FedRAMPコンプライアンスでは7年間など)の保持が必要です。
ここでは、400日間の保持期間を持つ専用のロギングバケットと、IAMポリシー関連の監査ログをそこにルーティングするログシンクを作成します。unique_writer_identity = trueフラグは、シンクごとのサービスIDを生成し(監査チェーンを維持するため、ユーザーIDを公開せずに書き込み専用アクセスを許可できます)。
5つのブロック(プロバイダー+API、組織ポリシーのガードレール、KMSキーリング+CMK、CMKバケット、監査ログシンク)が配置され、PCSEの防止 → 暗号化 → 監査のベースラインが形成されました。実際のPCSEデプロイメントでは、この基盤の上にSecurity Command Center (SCC) Premium、VPC Service Controlsペリメーター、Binary Authorization、Cloud Armor WAF、Identity-Aware Proxy、Workforce Identity Federation、Sensitive Data Protection (DLP) などがレイヤーされます。
resource "google_logging_project_bucket_config" "audit" {
project = data.google_project.current.project_id
location = "global"
retention_days = 400
bucket_id = "audit-events"
depends_on = [google_project_service.logging]
}
resource "google_logging_project_sink" "audit_sink" {
name = "certlabpro-pcse-audit-sink"
destination = "logging.googleapis.com/${google_logging_project_bucket_config.audit.id}"
filter = "logName:\"cloudaudit.googleapis.com\" AND (protoPayload.serviceName=\"iam.googleapis.com\" OR protoPayload.serviceName=\"cloudkms.googleapis.com\")"
unique_writer_identity = true
}
# Required so the sink can write to the bucket.
resource "google_project_iam_member" "audit_sink_writer" {
project = data.google_project.current.project_id
role = "roles/logging.bucketWriter"
member = google_logging_project_sink.audit_sink.writer_identity
}terraform destroyはすべてを削除します。KMSキーは破棄がスケジュールされます(24時間の猶予期間 — Cloud KMSキーは即座に削除されることはありません)。CMKで暗号化されたバケットは破棄されます(force_destroy = true)。既存のオブジェクトは削除時に再暗号化されます — Cloud Storageがこれを透過的に処理します。組織ポリシーの制約は削除され、プロジェクトでのデフォルトネットワークの作成が再度許可されます。監査ログシンクとバケットはきれいに削除されます。
PCSEは、このラボではカバーしきれない多くのセキュリティ領域を扱います。例えば、Security Command Center(SCC Premium / Enterprise — 脅威検出と姿勢管理の統合プラットフォーム)、VPC Service Controls(BigQuery / Storageなどのデータ流出ペリメーター)、Cloud Armor(WAF + DDoS + ボット管理)、Identity-Aware Proxy(IAP — ゼロトラストのアプリケーションレベル認証)、Cloud HSM(FIPS-140-2 レベル3ハードウェアベースのKMS)、Cloud External Key Manager(EKM — Google外でキーを保持)、Confidential VMs / Confidential GKE Nodes(メモリ暗号化)、Binary Authorization(イメージアテステーションゲート)、Container Threat Detection / Web App and API Protection(WAAP)、Sensitive Data Protection(DLP — PII検出 + マスキング)、Workforce Identity Federation、Workload Identity Federation、Access Context Manager(コンテキストアウェアアクセスポリシー)、そしてMandiant買収によって得られた脅威インテリジェンス、アタックサーフェスマネジメント、侵害分析といった全領域です。
本ラボでは、より高度な制御がすべて構築されるPCSEの基盤である組織ポリシー + KMS + CMKストレージ + 監査ログのプリミティブに焦点を当てています。SCCは同じ監査ログからデータを読み取ります。VPC-SCペリメーターは同じバケットをラップします。Cloud HSMはKMSをキーのバックエンドとして置き換えます。IAPは同じIAMアイデンティティ上にオーバーレイされます。基盤を習得し、その上に専門的な制御をレイヤー化しましょう。
サービスごとの概念的な内容については、この認定ページの閲覧、プレイブック、およびEditorialセクションを参照してください。