Última revisión: mayo de 2026
Crea los servicios de AWS del examen PCSE 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 simple, la línea base de seguridad PCSE más pequeña y realista: una restricción de Política de la Organización que evita la creación de redes predeterminadas, un llavero de Cloud KMS + una clave de cifrado gestionada por el cliente con rotación automática, un bucket de Cloud Storage cifrado con CMK y un destino de Cloud Audit Logs que enruta los eventos de IAM a un bucket de registro dedicado. Cinco bloques; el ciclo prevenir → cifrar → auditar de PCSE.
Coloca los fragmentos en un único archivo main.tf, ejecuta terraform init y luego terraform apply paso a paso.
>= 1.5 u OpenTofu >= 1.6.roles/orgpolicy.policyAdmin con alcance de proyecto. La versión a nivel de organización de la misma restricción existe, pero requiere un Administrador de la Organización.your-project-id en el bloque del proveedor.Casi gratuito en el alcance del laboratorio:
~$0–$1/mes. Barato para dejarlo en funcionamiento si quieres estudiar los paneles.
Habilita las API de Cloud KMS, Cloud Storage, Cloud Logging y Org Policy.
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
}El Servicio de Política de la Organización es la primitiva de barrera de seguridad de PCSE: establece restricciones una vez a nivel de organización/carpeta/proyecto, y los recursos que las violen nunca podrán crearse. El examen PCSE evalúa la distinción restricciones vs. IAM: IAM regula quién puede actuar; la Política de la Organización regula qué puede existir.
Aplicamos compute.skipDefaultNetworkCreation a nivel de proyecto: cuando este proyecto se inicializa por primera vez, GCP normalmente crea una VPC predeterminada con reglas de firewall demasiado permisivas. La restricción lo impide. La forma PCSE-canónica de prevenir por defecto.
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 es la primitiva CMK de PCSE: claves de cifrado gestionadas por el cliente para cada escenario de cifrado en reposo en GCS, BigQuery, discos de Compute Engine, Cloud SQL, Spanner, Secret Manager. El examen PCSE evalúa la rotación de CMK (siempre activa por defecto en CMEK; la rotación predeterminada de 90 días es la configuración recomendada) y la separación de llavero + clave (el llavero es el límite de IAM; las claves lo heredan).
Creamos un llavero regional + una clave SYMMETRIC_ENCRYPTION con rotación de 90 días. Conceder a la cuenta de servicio de Cloud Storage roles/cloudkms.cryptoKeyEncrypterDecrypter es necesario antes de que el bucket del Paso 4 pueda usar la clave; el Paso 4 incluye esa vinculación.
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
}
}Patrón de cifrado en reposo recomendado por PCSE: nunca uses el cifrado predeterminado gestionado por Google para datos sensibles; siempre configura una CMK. Concedemos al agente de servicio de Cloud Storage (una cuenta de servicio específica del proyecto service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com) el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en la CMK, luego aprovisionamos un bucket que hace referencia a la clave.
Cualquier objeto escrito en este bucket se envuelve con una clave de cifrado de datos (DEK), que a su vez es envuelta por la CMK. La rotación de la CMK rota la siguiente DEK; los objetos existentes se vuelven a cifrar en la siguiente escritura. El examen PCSE evalúa esta forma de cifrado de sobre.
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]
}Retención de registros de auditoría recomendada por PCSE: los buckets de registro predeterminados _Required y _Default tienen una retención de 30 días. Los eventos de auditoría sensibles (otorgamientos/revocaciones de IAM, ediciones de políticas) necesitan mucho más tiempo, a menudo 7 años para cumplir con SOX/HIPAA/FedRAMP.
Creamos un bucket de registro dedicado con 400 días de retención + un sumidero de registros que enruta los registros de auditoría relacionados con la política de IAM hacia él. El indicador unique_writer_identity = true genera una identidad de servicio por sumidero (preserva la cadena de auditoría: puedes concederle acceso de solo escritura sin exponer tu identidad de usuario).
Con cinco bloques implementados (proveedor+API, barrera de seguridad de Política de la Organización, llavero KMS+CMK, bucket CMK, sumidero de registros de auditoría), la línea base PCSE de prevenir → cifrar → auditar toma forma. Las implementaciones reales de PCSE añaden Security Command Center (SCC) Premium, perímetros de Controles de Servicio de VPC, Autorización Binaria, Cloud Armor WAF, Identity-Aware Proxy, Workforce Identity Federation y Sensitive Data Protection (DLP) sobre esta base.
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 desmantela todo. La clave KMS está programada para su destrucción (período de gracia de 24 horas; las claves de Cloud KMS nunca se eliminan inmediatamente). El bucket cifrado con CMK se destruye (force_destroy = true); los objetos existentes se vuelven a cifrar al salir (Cloud Storage gestiona esto de forma transparente). La restricción de Política de la Organización se elimina; la creación de redes predeterminadas se permite de nuevo en el proyecto. El destino + bucket de registros de auditoría se destruyen limpiamente.
PCSE cubre muchas superficies de seguridad que este laboratorio no puede abarcar: Security Command Center (SCC Premium/Enterprise, la superficie unificada de detección de amenazas + gestión de la postura), Controles de Servicio de VPC (perímetros de exfiltración de datos alrededor de BigQuery/Storage/etc.), Cloud Armor (WAF + DDoS + gestión de bots), Identity-Aware Proxy (IAP, autenticación de nivel de aplicación de confianza cero), Cloud HSM (KMS respaldado por hardware FIPS-140-2 Nivel 3), Cloud External Key Manager (EKM, claves mantenidas fuera de Google), VM confidenciales/Nodos GKE confidenciales (cifrado de memoria), Autorización Binaria (control de atestación de imágenes), Detección de Amenazas en Contenedores/Protección de Aplicaciones Web y API (WAAP), Protección de Datos Sensibles (DLP, descubrimiento + enmascaramiento de PII), Workforce Identity Federation, Workload Identity Federation, Access Context Manager (políticas de acceso sensible al contexto) y toda la superficie adquirida por Mandiant (inteligencia de amenazas, gestión de la superficie de ataque, análisis de infracciones).
Nos ceñimos a las primitivas de Org Policy + KMS + CMK Storage + Audit Logs porque son la base de PCSE sobre la que se componen todos los controles más avanzados. SCC lee de los mismos registros de auditoría. Los perímetros de VPC-SC envuelven los mismos buckets. Cloud HSM reemplaza a KMS como backend de claves. IAP se superpone a las mismas identidades de IAM. Domina el sustrato; luego añade controles especializados.
Para una cobertura conceptual servicio por servicio, consulta las secciones Buscar, Manual y Editorial de esta página de certificación.