Skip to content

Esta herramienta no está afiliada a Google LLC ni está respaldada ni patrocinada por Google LLC. Google Cloud y Google Cloud Platform son marcas comerciales de Google LLC. Los demás nombres son marcas comerciales de sus respectivos propietarios.

Tipos de Cloud Audit Logs explicados y cómo exportarlos

Registros Admin Activity, Data Access, System Event y Policy Denied: qué registra cada uno, retención, campos clave y cuatro formas de exportarlos.

Publicado el 7 min de lectura

En resumen. Google Cloud escribe cuatro registros de auditoría por proyecto, carpeta y organización: Admin Activity (cambios de configuración, siempre activo, 400 días), System Event (cambios iniciados por Google, siempre activo, 400 días), Data Access (lecturas y escrituras de datos, desactivado por defecto salvo algunos servicios de BigQuery, 30 días) y Policy Denied (denegaciones por políticas de seguridad, activo por defecto, 30 días). Para una investigación, exporte los cuatro en JSON: Logs Explorer para periodos cortos, gcloud logging read para periodos más largos, o copie el bucket del sink si lo tiene.

Los Cloud Audit Logs son el registro de «quién hizo qué, dónde y cuándo» del plano de control de Google Cloud. Toda investigación de un proyecto de Google Cloud se apoya en ellos, así que saber exactamente qué captura cada tipo, y qué no, ahorra horas.

Los cuatro tipos de registros de auditoría

Google documenta cuatro tipos en la descripción general de Cloud Audit Logs. El nombre del registro le dice cuál está leyendo: projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2F<type>.

TipoSufijo del nombreRegistraPor defectoRetención por defecto
Admin ActivityactivityLlamadas a la API que modifican configuración o metadatos: políticas de IAM, VM, firewalls, sinks, clavesSiempre activo, no se puede desactivar400 días (_Required)
System Eventsystem_eventCambios hechos por sistemas de Google, por ejemplo la migración en vivo de una VMSiempre activo400 días (_Required)
Data Accessdata_accessLecturas de configuración (ADMIN_READ), lecturas de datos de usuario (DATA_READ), escrituras de datos de usuario (DATA_WRITE)Desactivado, salvo algunos servicios de BigQuery30 días (_Default)
Policy DeniedpolicyAccesos denegados por una política de seguridad, como VPC Service ControlsActivo; se puede excluir pero no desactivar30 días (_Default)

La retención depende de los buckets de registros: el bucket _Required conserva sus registros 400 días y su sink no se puede modificar ni borrar; el bucket _Default conserva 30 días por defecto (descripción general del enrutamiento, cuotas y límites).

Dos consecuencias para la respuesta a incidentes:

  • Todo lo que cambia el proyecto (una clave nueva, un Owner nuevo, un script de inicio, un sink borrado) está en Admin Activity durante más de un año, sea cual sea la configuración.
  • Todo lo que lee datos (un bucket descargado objeto a objeto, un secreto consultado, un token emitido para una cuenta de servicio) solo existe si el registro Data Access estaba habilitado antes del incidente, y solo durante 30 días por defecto. El artículo sobre las limitaciones de Data Access trata este punto ciego.

Anatomía de una entrada de auditoría

Cada entrada es un LogEntry con un protoPayload de tipo google.cloud.audit.AuditLog (referencia de AuditLog). Estos son los campos que un investigador lee primero:

CampoPor qué importa
timestampCuándo ocurrió la llamada (UTC)
protoPayload.methodNameQué se hizo, por ejemplo SetIamPolicy, v1.compute.instances.setMetadata
protoPayload.serviceNameQué API, por ejemplo iam.googleapis.com
protoPayload.authenticationInfo.principalEmailQuién: un usuario, una cuenta de servicio, una cuenta de Gmail
protoPayload.authenticationInfo.serviceAccountKeyNameAparece cuando una cuenta de servicio se autenticó con una clave gestionada por el usuario; termina con el ID de la clave
protoPayload.authenticationInfo.serviceAccountDelegationInfoAparece cuando se suplantó la cuenta de servicio; indica quién llamó realmente
protoPayload.requestMetadata.callerIp / callerSuppliedUserAgentDesde dónde y con qué cliente (gcloud, Terraform, un navegador)
protoPayload.resourceName, resource.labelsSobre qué
protoPayload.status.codeVacío si hubo éxito; 7 es PERMISSION_DENIED
protoPayload.serviceData.policyDelta / metadataLa diferencia: bindingDeltas de IAM, auditConfigDeltas, claves de metadatos añadidas o eliminadas

El user agent está infravalorado. Una cuenta de servicio que siempre llama desde Terraform/… y de repente llama desde google-cloud-sdk gcloud/… en una IP desconocida es por sí sola una pista sólida.

Cómo exportar los registros de auditoría para analizarlos

Exporte pronto. La guía de exportación de la página de la herramienta recoge los mismos pasos en versión corta; aquí está el razonamiento de cada vía.

Descarga desde Logs Explorer

Adecuada para unos días de un proyecto pequeño. En Logging → Logs Explorer, consulte:

logName:"cloudaudit.googleapis.com"

Añada OR logName:"vpc_flows" si también quiere los registros de flujo, elija el intervalo de tiempo y luego Actions → Download → JSON. Google documenta un límite de 10.000 entradas por descarga (interfaz de Logs Explorer): divida el periodo en varias descargas y conserve cada archivo. Elija JSON, no CSV; el CSV pierde la estructura anidada que necesitan las detecciones.

gcloud logging read

La vía más fiable para exportaciones grandes (referencia de gcloud logging):

gcloud logging read 'logName:"cloudaudit.googleapis.com"' \
  --project=PROJECT_ID --freshness=30d --format=json > audit.json
gzip audit.json

Use --organization=ORG_ID o --folder=FOLDER_ID cuando un sink agregado a nivel de organización o los registros de carpeta entren en el alcance. Haga una segunda exportación para logName:"vpc_flows".

Copiar el bucket de un sink

Si un sink de registros ya enruta los registros de auditoría a Cloud Storage, tiene la mejor prueba posible: archivos organizados como cloudaudit.googleapis.com/activity/YYYY/MM/DD/…json, un objeto JSON por línea, que se remontan hasta la creación del sink. Cópielo con gcloud storage cp -r gs://BUCKET . y conserve la estructura de carpetas. Los sinks no rellenan el pasado: solo contienen entradas escritas después de su creación (configurar sinks). Para entradas más antiguas que aún estén en un bucket de registros, Google documenta cómo copiar entradas de registro a Cloud Storage.

Sink de BigQuery

Con un sink de BigQuery, consulte las tablas cloudaudit_googleapis_com_activity y cloudaudit_googleapis_com_data_access del periodo y guarde el resultado como JSON delimitado por saltos de línea. El analizador vuelve a mapear las columnas protopayload_auditlog a la forma de un LogEntry. No lee exportaciones Avro ni Parquet.

¿Y VPC Flow Logs?

VPC Flow Logs no son registros de auditoría: son registros muestreados de flujos de red (compute.googleapis.com/vpc_flows) que solo se escriben en las subredes donde se habilitaron. Expórtelos igual y analícelos junto con los registros de auditoría para poder cruzar las IP de origen con el tráfico. Vea el análisis de VPC Flow Logs.

Lista de comprobación antes de analizar

  • El periodo cubre la intrusión sospechada más una referencia de actividad normal (una semana o más).
  • Están los cuatro tipos de auditoría, de cada proyecto implicado, más los registros de la organización si las políticas de IAM o de organización pudieron cambiar.
  • Los formatos son JSON o JSON lines, comprimidos con gzip o no. Deje intactos los archivos originales y trabaje con copias.
  • Ha anotado si los registros Data Access estaban habilitados y para qué servicios. La ausencia de pruebas de lectura no significa nada sin esa nota.

Después, suelte los archivos en el analizador, como se describe en la guía paso a paso.

Preguntas frecuentes

¿Qué Cloud Audit Logs están habilitados por defecto?

Los registros de auditoría Admin Activity, System Event y Policy Denied se escriben siempre y no se pueden desactivar. Los registros Data Access están desactivados por defecto en todos los servicios, salvo algunos servicios de BigQuery (configurar los registros de auditoría Data Access).

¿Cómo exporto más de 10.000 entradas de registro?

La descarga de Logs Explorer se detiene en 10.000 entradas. Use gcloud logging read con --format=json, copie el bucket de Cloud Storage en el que escribe un sink o exporte desde un sink de BigQuery como JSON delimitado por saltos de línea.

Lecturas recomendadas

Artículos relacionados

Esta herramienta no está afiliada a Google LLC ni está respaldada ni patrocinada por Google LLC. Google Cloud y Google Cloud Platform son marcas comerciales de Google LLC. Los demás nombres son marcas comerciales de sus respectivos propietarios.