Última revisão: maio de 2026
Construa os serviços da AWS do exame PCSE com Terraform puro — um bloco de cada vez, cada um vinculado a um domínio do exame. O mesmo código funciona no OpenTofu.
Ao final deste laboratório, você terá provisionado, com Terraform simples, a menor linha de base de segurança PCSE realista — uma restrição de Política da Organização que impede a criação de rede padrão, um keyring do Cloud KMS + chave de criptografia gerenciada pelo cliente com rotação automática, um bucket do Cloud Storage criptografado com CMK, e um sink do Cloud Audit Logs que roteia eventos IAM para um bucket de registro dedicado. Cinco blocos; o ciclo PCSE de prevenir → criptografar → auditar.
Solte os snippets em um único main.tf, execute terraform init, depois terraform apply passo a passo.
>= 1.5 ou OpenTofu >= 1.6.roles/orgpolicy.policyAdmin no escopo do projeto. A versão em nível de organização da mesma restrição existe, mas exige o Administrador da Organização.your-project-id no bloco do provedor.Quase gratuito no escopo do laboratório:
~$0–$1/mês. Barato para manter em execução se você quiser estudar os painéis.
Habilite as APIs do Cloud KMS, Cloud Storage, Cloud Logging e 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
}O Serviço de Política da Organização é o primitivo de barreira de proteção do PCSE — defina restrições uma vez no escopo da organização / pasta / projeto, e recursos que as violarem nunca poderão ser criados. O exame PCSE testa a distinção restrições vs. IAM: o IAM controla quem pode agir; a Política da Organização controla o que pode existir.
Aplicamos compute.skipDefaultNetworkCreation no escopo do projeto — quando este projeto é recém-inicializado, o GCP normalmente cria uma VPC padrão com regras de firewall excessivamente permissivas. A restrição impede isso. O formato impedir por padrão canônico do 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]
}O Cloud KMS é o primitivo CMK do PCSE — chaves de criptografia gerenciadas pelo cliente para cada cenário de criptografia em repouso em GCS, BigQuery, discos do Compute Engine, Cloud SQL, Spanner, Secret Manager. O exame PCSE testa a rotação de CMK (sempre ativa por padrão no CMEK; a rotação padrão de 90 dias é a configuração recomendada) e a separação de keyring + chave (o keyring é o limite do IAM; as chaves o herdam).
Criamos um keyring regional + uma chave SYMMETRIC_ENCRYPTION com rotação de 90 dias. Conceder à conta de serviço do Cloud Storage roles/cloudkms.cryptoKeyEncrypterDecrypter é necessário antes que o bucket no Passo 4 possa usar a chave — o Passo 4 inclui essa vinculação.
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
}
}Padrão de criptografia em repouso recomendado pelo PCSE: nunca use a criptografia gerenciada pelo Google padrão para dados sensíveis; sempre conecte uma CMK. Concedemos ao agente de serviço do Cloud Storage (uma conta de serviço específica do projeto service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com) roles/cloudkms.cryptoKeyEncrypterDecrypter na CMK, então provisionamos um bucket que referencia a chave.
Qualquer objeto gravado neste bucket é envolvido com uma chave de criptografia de dados (DEK), que por sua vez é envolvida pela CMK. A rotação da CMK rotaciona a próxima DEK; objetos existentes são recriptografados na próxima gravação. O exame PCSE testa esse formato de criptografia de envelope.
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]
}Retenção de logs de auditoria recomendada pelo PCSE: os buckets de log padrão _Required e _Default têm retenção de 30 dias. Eventos de auditoria sensíveis (concessões / revogações de IAM / edições de política) precisam de muito mais tempo — frequentemente 7 anos para conformidade com SOX / HIPAA / FedRAMP.
Criamos um bucket de registro dedicado com retenção de 400 dias + um sink de log que roteia logs de auditoria relacionados à política de IAM para ele. O sinalizador unique_writer_identity = true gera uma identidade de serviço por sink (preserva a cadeia de auditoria — você pode conceder acesso somente de gravação sem expor sua identidade de usuário).
Com cinco blocos implementados (provedor+APIs, barreira de proteção de Org Policy, keyring+CMK do KMS, bucket CMK, sink de log de auditoria), a linha de base PCSE de prevenir → criptografar → auditar é formada. Implantações PCSE reais sobrepõem Security Command Center (SCC) Premium, perímetros de VPC Service Controls, Binary Authorization, Cloud Armor WAF, Identity-Aware Proxy, Workforce Identity Federation e 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 derruba tudo. A chave KMS é agendada para destruição (período de carência de 24 horas — as chaves do Cloud KMS nunca são excluídas imediatamente). O bucket criptografado com CMK é destruído (force_destroy = true); os objetos existentes são recriptografados na saída — o Cloud Storage lida com isso de forma transparente. A restrição da Política da Organização é removida; a criação de rede padrão é permitida novamente no projeto. O sink + bucket de logs de auditoria são destruídos de forma limpa.
O PCSE cobre muitas superfícies de segurança que este laboratório não pode abranger — Security Command Center (SCC Premium / Enterprise — a superfície unificada de detecção de ameaças + gerenciamento de postura), VPC Service Controls (perímetros de exfiltração de dados em torno de BigQuery / Storage / etc.), Cloud Armor (WAF + DDoS + gerenciamento de bots), Identity-Aware Proxy (IAP — autenticação em nível de aplicativo com confiança zero), Cloud HSM (KMS com suporte de hardware FIPS-140-2 Nível 3), Cloud External Key Manager (EKM — chaves mantidas fora do Google), VMs Confidenciais / Nós GKE Confidenciais (criptografia de memória), Binary Authorization (gate de atestação de imagem), Container Threat Detection / Web App and API Protection (WAAP), Sensitive Data Protection (DLP — descoberta + mascaramento de PII), Workforce Identity Federation, Workload Identity Federation, Access Context Manager (políticas de Acesso Sensível ao Contexto), e toda a superfície adquirida pela Mandiant (inteligência de ameaças, gerenciamento de superfície de ataque, análise de violações).
Nos limitamos aos primitivos de Org Policy + KMS + CMK Storage + Audit Logs porque eles são a fundação do PCSE sobre a qual cada controle mais avançado se compõe. O SCC lê dos mesmos logs de auditoria. Os perímetros de VPC-SC envolvem os mesmos buckets. O Cloud HSM substitui o KMS como backend de chave. O IAP se sobrepõe às mesmas identidades IAM. Domine o substrato; adicione camadas de controles especializados.
Para cobertura conceitual serviço a serviço, consulte as seções Navegar, Guia e Editorial desta página de certificação.