ESEN

← Fine print by exam

Google Cloud · Associate

ACE · Associate Cloud Engineer

Google Cloud Certified - Associate Cloud Engineer

Secretless CI/CD deployments (OIDC federation)

Operations● verified 34 days ago◌ no external reviewer

A deleted pool locks its ID for about 30 days

Pools and providers are soft-deleted and only permanently removed after ~30 days. Meanwhile you can't create another with the same ID, so a terraform destroy followed by apply with the same pool_id fails. The way out is to restore it (undelete) and import it, or use a different ID. For ephemeral environments, generate the ID with a suffix.

⚑ Report outdated

See it in the pattern →

IAM● verified 34 days ago◌ no external reviewer

Direct access without a service account doesn't work with every service

You can grant roles directly to the federated principal, without a service account. But some APIs have limitations with federated identities, and for those you have to impersonate a service account. This module impersonates: it works with everything and leaves a single place to audit permissions. For that path Google asks you to enable four APIs: IAM, Resource Manager, Service Account Credentials and Security Token Service.

⚑ Report outdated

See it in the pattern →

Reliability● verified 34 days ago◌ no external reviewer

Principals use the project number, and permissions take minutes to propagate

When granting roles to external identities you use the project number, not the project ID: the principalSet is principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/.... Also, an IAM change usually applies within 2 minutes but can take 7 or more.

⚑ Report outdated

See it in the pattern →

Hybrid private DNS (on-premises ↔ cloud)

Networking● verified 34 days ago◌ no external reviewer

The inbound policy takes one IP from every subnet, not one per region or two per endpoint

There are no endpoints to size: the policy reserves one internal IP from the primary range of every subnet in the VPC (except special-purpose ones), so a VPC with many subnets has many entry IPs. What matters for the response is the region of the tunnel or attachment the query arrived on, not the subnet's region. Put the policy on the VPC that has the VPN or Interconnect.

⚑ Report outdated

See it in the pattern →

Private object ingestion with expiration (TTL)

Cost● verified 34 days ago◌ no external reviewer

Soft delete is on by default (7 days) and makes ephemeral data more expensive

Every bucket has soft delete with 7-day retention unless you change it. An object that lives one hour is billed for that hour plus 7 days of soft delete. In a TTL ingestion bucket that can multiply cost. The module sets it to 0 (disabled) by default and exposes it as an explicit variable.

⚑ Report outdated

See it in the pattern →

See it in the pattern →

IAM● verified 34 days ago◌ no external reviewer

roles/storage.objectCreator is not enough to overwrite

Overwriting an existing object requires storage.objects.delete, which objectCreator lacks. For ingestion that's a feature (a compromised producer can't clobber files), but it breaks clients that retry with the same name. In S3, s3:PutObject does overwrite.

⚑ Report outdated

See it in the pattern →

Security● verified 34 days ago◌ no external reviewer

Uniform bucket-level access + public access prevention is the pair to declare

UBLA disables per-object ACLs (equivalent to BucketOwnerEnforced in S3) and is required for IAM Conditions. Public access prevention "enforced" blocks allUsers/allAuthenticatedUsers (equivalent to Block Public Access).

⚑ Report outdated

See it in the pattern →

Zero Trust private web API with passwordless PostgreSQL

IAM● verified 34 days ago◌ no external reviewer

In Postgres, a Service Account's IAM user drops ".gserviceaccount.com"

The database user name is the SA email without the .gserviceaccount.com suffix (e.g. api@project.iam), due to PostgreSQL's name length limit. If you create it with the full email, login fails with an error that looks like a permissions problem.

⚑ Report outdated

See it in the pattern →

IAM● verified 34 days ago◌ no external reviewer

Unlike Azure and AWS, the IAM login is created via API, without SQL

google_sql_user with type CLOUD_IAM_SERVICE_ACCOUNT creates the user from Terraform, and you also need roles/cloudsql.client and roles/cloudsql.instanceUser on the SA. What remains SQL are table permissions (GRANT), same as on the other clouds.

⚑ Report outdated

See it in the pattern →