Usa gcloud logging read con un filtro en cloudaudit.googleapis.com, o ejecuta la misma consulta en Logs Explorer y descarga los resultados como JSON:
gcloud logging read 'logName:"cloudaudit.googleapis.com" AND timestamp>="2026-10-19T00:00:00Z" AND timestamp<"2026-10-20T00:00:00Z"'
--project=my-project --format=json > gcp_audit_1019.json
Los registros de auditoría de actividad administrativa siempre están activados y se conservan durante 400 días. Los registros de acceso a datos están desactivados por defecto, excepto para BigQuery, y se conservan durante 30 días una vez habilitados.
Cloud Audit Logs registra quién cambió qué en tus proyectos de Google Cloud: concesiones de IAM, nuevas claves de cuenta de servicio, cambios de firewall, máquinas virtuales lanzadas en regiones inusuales. Prime Core tiene 140 reglas de detección para los registros de auditoría de Google Cloud, mapeadas a 74 técnicas MITRE ATT&CK. Entre ellas: abuso de cuentas en la nube (T1078.004), credenciales adicionales como nuevas claves de cuenta de servicio (T1098.001) y manipulación del propio registro (T1562.008).
Antes de empezar
Conoce qué registro de auditoría necesitas.
| Tipo | ¿Por defecto activado? | Retención | Qué contiene |
|---|---|---|---|
| Actividad administrativa | Siempre, no puede deshabilitarse | 400 días | Cambios de configuración e IAM |
| Evento del sistema | Siempre | 400 días | Acciones que los sistemas de Google tomaron en tus recursos |
| Acceso a datos | No (excepto BigQuery) | 30 días | Lecturas de datos y metadatos |
| Política denegada | Yes | 30 días | Solicitudes bloqueadas por políticas de seguridad |
Si la pregunta es “¿quién leyó este bucket?” y los registros de acceso a datos nunca se habilitaron, la respuesta no está en Cloud Logging.
Permisos. Logs Viewer (roles/logging.viewer) cubre Actividad administrativa, Evento del sistema y Política denegada. Los registros de Acceso a datos requieren Private Logs Viewer (roles/logging.privateLogViewer).
Alcance. Los registros de auditoría viven por proyecto. La actividad a nivel de organización y carpeta tiene sus propios registros. Consulta esos con –organization=<ORG_ID> o –folder=<FOLDER_ID> en lugar de –project.
Opción 1: Logs Explorer
En la consola, abre Logging → Logs Explorer, ingresa logName:»cloudaudit.googleapis.com», establece el rango de tiempo, ejecuta la consulta, luego descarga los resultados como JSON. La descarga está limitada. Para rangos más grandes, usa gcloud.
Opción 2: gcloud logging read
El comando en la parte superior es la forma básica. Tres detalles ahorran tiempo.
Siempre coloca la ventana de tiempo en el filtro. Sin una condición de marca de tiempo, gcloud logging read se limita silenciosamente al último día (–freshness predetermina a 1d). Eso sorprende a casi todos una vez.
Aumenta el límite cuando sea necesario. Agrega –limit=100000 (o lo que ajuste) para ventanas grandes.
Aplanar para cargar. La salida es un solo array JSON. Conviértelo en una entrada por línea:
jq -c '.[]' gcp_audit_1019.json > gcp_audit_1019.jsonl
Filtros más útiles y específicos:
# Solo actividad administrativa
logName="projects/my-project/logs/cloudaudit.googleapis.com/activity"
# nuevas claves de cuenta de servicio
protoPayload.methodName="google.iam.admin.v1.CreateServiceAccountKey"
# todo lo que hizo una identidad
protoPayload.authenticationInfo.principalEmail="suspicious-sa@my-project.iam.gserviceaccount.com"
Opción 3: Historial masivo desde sinks
Si tu organización envía registros de auditoría a través de un sink a Cloud Storage o BigQuery, esa copia puede ir más atrás que los buckets anteriores. Descarga los archivos con gcloud storage cp, o consulta BigQuery y exporta el resultado como JSON.
Qué buscar
| Método o campo | Por qué importa |
|---|---|
| CreateServiceAccountKey | Credenciales de larga duración que un atacante puede llevarse |
| SetIamPolicy | Concesiones de roles; vigila roles/owner, roles/editor y allUsers |
| UpdateSink, DeleteSink, nuevas exclusiones | Alguien redirigiendo o silenciando registros |
| v1.compute.instances.insert en regiones inusuales | La clásica huella de minería de criptomonedas |
| Ráfagas con status.code: 7 (PERMISSION_DENIED) | Credenciales robadas viendo lo que pueden hacer |
Carga, sanitiza y revisa en LogTotal
- Carga. Abre logtotal.com y arrastra el archivo .jsonl.
- Sanitiza. [what gets masked: principal emails, project IDs, IPs, resource names]. Look it over before you continue.
- Revisa.
Cuando las cosas salen mal
| Síntoma | Probable causa | Fix |
|---|---|---|
| Solo las últimas 24 horas regresan | No hay marca de tiempo en el filtro, por lo que –freshness=1d se aplica | Pon la ventana en el filtro |
| No hay entradas de Acceso a Datos | Los registros de acceso a datos nunca se habilitaron | Esperado; habilítalos para el futuro |
| PERMISSION_DENIED al leer registros | Falta Private Logs Viewer para Acceso a Datos | Solicita roles/logging.privateLogViewer |
| Los resultados se detienen | Se alcanzó el límite predeterminado o explícito | Aumenta –limit, o divide la ventana |
| Faltan cambios a nivel de organización | Consultaste un proyecto | Usa –organization |
FAQ
¿Los registros de Google Workspace están aquí?
Solo si tu organización comparte datos de Workspace con Google Cloud, y luego a nivel de organización.
¿Qué hay de GKE?
GKE también escribe sus registros de auditoría de Kubernetes en Cloud Audit Logs