ESEN

← Letra chica por examen

Google Cloud · Professional

PCSE · Professional Cloud Security Engineer

Google Cloud Certified - Professional Cloud Security Engineer

Despliegue desde CI sin secretos (federación OIDC)

Seguridad● verificado hace 34 días◌ sin revisor externo

Sin attribute_condition, el issuer compartido de GitHub deja entrar a cualquier repo

GitHub usa un solo issuer para todos sus clientes, así que validar el issuer no alcanza. Google exige una condición que restrinja los tokens a tu organización o repositorio. En Terraform el campo figura como opcional y, sin condición, se acepta toda credencial válida del issuer. Además, todo claim que uses en la condición o en un principalSet tiene que estar mapeado en attribute_mapping.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

Condicioná sobre los IDs numéricos, no sobre los nombres de org y repo

Un nombre de organización o de repositorio se puede liberar y volver a registrar: si tu condición dice repository == 'org/repo', el próximo dueño de ese nombre hereda la confianza. Google recomienda atributos inmutables, y GitHub manda repository_id y repository_owner_id en cada token. Es la misma razón por la que GitHub cambió el formato del sub en los repos creados desde el 15/07/2026.

⚑ Reportar desactualizado

Ver en el patrón →

IAM● verificado hace 34 días◌ sin revisor externo

El acceso directo sin service account no funciona con todos los servicios

Se puede dar roles directamente al principal federado, sin service account. Pero algunas APIs tienen limitaciones con identidades federadas y para esas hay que impersonar una service account. Este módulo impersona: funciona con todo y deja un solo lugar donde auditar permisos. Para esa ruta Google pide habilitar cuatro APIs: IAM, Resource Manager, Service Account Credentials y Security Token Service.

⚑ Reportar desactualizado

Ver en el patrón →

Ingesta privada de objetos con expiración (TTL)

IAM● verificado hace 34 días◌ sin revisor externo

roles/storage.objectCreator no alcanza para sobrescribir

Sobrescribir un objeto existente requiere storage.objects.delete, que objectCreator no tiene. Para ingesta es una ventaja (un productor comprometido no puede pisar archivos), pero rompe clientes que reintentan con el mismo nombre. En S3, s3:PutObject sí sobrescribe.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

Uniform bucket-level access + public access prevention son el par a declarar

UBLA deshabilita las ACLs por objeto (equivalente a BucketOwnerEnforced en S3) y es requisito para usar IAM Conditions. Public access prevention "enforced" bloquea allUsers/allAuthenticatedUsers (equivalente a Block Public Access).

⚑ Reportar desactualizado

Ver en el patrón →

Web API privada Zero Trust con PostgreSQL sin contraseñas

IAM● verificado hace 34 días◌ sin revisor externo

A diferencia de Azure y AWS, el login IAM se crea por API, sin SQL

google_sql_user con type CLOUD_IAM_SERVICE_ACCOUNT crea el usuario desde Terraform, y además necesitás roles/cloudsql.client y roles/cloudsql.instanceUser en la SA. Lo que sigue siendo SQL son los permisos sobre tablas (GRANT), igual que en las otras nubes.

⚑ Reportar desactualizado

Ver en el patrón →

IAM● verificado hace 34 días◌ sin revisor externo

"Internal" es un control de red; la autenticación es IAM aparte

Con ingress internal, Cloud Run solo acepta requests de fuentes como las VPCs del mismo proyecto, un perímetro de VPC SC o un internal Application Load Balancer, y de productos como Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub o Workflows si están en el mismo proyecto o perímetro y usan la URL run.app por defecto. Las demás fuentes, incluida internet, no llegan. Pero la autenticación IAM sigue aplicando: el cliente tiene que presentar un ID token y su cuenta de servicio necesita roles/run.invoker.

⚑ Reportar desactualizado

Ver en el patrón →

Seguridad● verificado hace 34 días◌ sin revisor externo

Forzá el uso de connectors para que nadie se conecte "por fuera"

La autenticación IAM automática (sin manejar tokens a mano) la hacen Cloud SQL Auth Proxy o los Cloud SQL Language Connectors. connector_enforcement = REQUIRED rechaza toda conexión directa a la IP, así el único camino es con identidad y TLS gestionados.

⚑ Reportar desactualizado

Ver en el patrón →