En este documento, se describe cómo analizar los registros de auditoría de Cloud Logging con Consultas en SQL estándar de BigQuery en la página Análisis de registros. Las consultas en SQL te permiten agregar y analizar tus de auditoría, que proporcionan información sobre las actividades administrativas y accesos en tus recursos de Google Cloud.
Acerca de los registros de auditoría
Existen cuatro tipos de registros de auditoría que Google Cloud puede escribir servicios:
Registros de auditoría de actividad del administrador: Los registros de auditoría de actividad del administrador registran las llamadas a la API o que modifican la configuración o los metadatos de los recursos. Estos los registros siempre están escritos; no podrás configurarlos, excluirlos ni inhabilitarlos.
Registros de auditoría de acceso a los datos: Los registros de auditoría de acceso a los datos registran las llamadas a la API que leen la configuración o los metadatos de los recursos, además de las APIs llamadas que crean, modifican o leen datos de recursos proporcionados por el usuario. Porque acceder a los datos es una operación de API frecuente, estos registros se de forma predeterminada (excepto para BigQuery).
Registros de auditoría de eventos del sistema: Los registros de auditoría de eventos del sistema contienen entradas de Acciones de Google Cloud que modifican la configuración de los recursos. Estos los sistemas de Google generan los registros; el usuario no genera estos registros acciones. No puedes configurar, excluir ni inhabilitar los registros de auditoría de eventos del sistema.
Registros de auditoría de política denegada: Los registros de auditoría de política denegada se registran cuando un servicio de Google Cloud rechaza el acceso a un usuario o a una cuenta de servicio debido a un incumplimiento de una política de seguridad. Estos registros no se pueden inhabilitar, pero puedes usa filtros de exclusión para evitar que estos registros se almacenen en Registro.
Para obtener más información sobre los registros de auditoría, consulta Descripción general de los registros de auditoría. Para obtener una lista de los servicios integrados con los registros de auditoría, consulta Servicios de Google Cloud con registros de auditoría.
Usa registros de auditoría para identificar incumplimientos de políticas o actividad sospechosa
Puedes usar registros de auditoría para identificar incumplimientos de políticas o actividad sospechosa:
Para identificar la posible elevación de privilegios mediante Identity and Access Management (IAM), o evasión de defensas inhabilitando Logging, usa registros de auditoría de actividad del administrador. Para una consulta de muestra que identifica esta situación, consulta Cambios realizados en la configuración de Logging.
Para identificar el posible uso inadecuado de las APIs o de los datos alojados en servicios como Cloud Storage o BigQuery, usa los registros de auditoría de acceso a los datos. Para una consulta de muestra que identifica esta situación, lee Identifica un alto uso de la API por parte de una principal.
Para identificar con qué frecuencia se accede a los datos y qué usuarios los usan, realiza consultas sobre todos los registros de auditoría. Para ver una consulta de muestra que identifica esta situación, visita Determina las acciones más comunes realizadas durante el último mes.
Antes de comenzar
Asegúrate de tener un proyecto, una carpeta o una organización de Google Cloud que genere registros de auditoría de Cloud.
Asegúrate de tener acceso a una vista en el bucket de registros a la que los registros a los que se enrutan los usuarios. El bucket de registros debe actualizarse para usar el Análisis de registros. Para información sobre cómo crear un bucket de registros que se actualice para usar Para el Análisis de registros, consulta Configura buckets de registros.
-
A fin de obtener los permisos que necesitas para crear receptores y ver registros, solicita a tu administrador que te otorgue el los siguientes roles de IAM:
-
Escritor de configuración de registros (
roles/logging.configWriter
) en tu proyecto -
Visor de registros (
roles/logging.viewer
) en tu proyecto
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Según los registros de auditoría que quieras ver, es posible que necesites roles o permisos. Para obtener información sobre cómo configurar roles de IAM, consulta Control de acceso con la IAM de Logging en la documentación de Google Cloud.
-
Escritor de configuración de registros (
Para usar las consultas de este documento en la página Análisis de registros, sigue estos pasos: lo siguiente:
-
En la consola de Google Cloud, ve a la página Análisis de registros:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
Identifica el nombre de la tabla para la vista del registro que deseas consultar.
Para identificar este nombre, ve a la lista Vistas de registro. ubica la vista de registro y, luego, selecciona Consulta. El panel Consulta se propaga con una consulta predeterminada, que Incluye el nombre de la tabla de la vista del registro que se consulta. El nombre de la tabla tiene la formato
project_ID.region.bucket_ID.view_ID
.Para obtener más información sobre cómo acceder a la consulta predeterminada, visita Consulta una vista de registro.
Reemplaza TABLE_NAME_OF_LOG_VIEW por el nombre de la tabla para la vista de registro. que deseas consultar y, a continuación, copia la consulta.
Pega la consulta en el panel Consulta y, luego, haz clic en Ejecutar consulta.
-
Consultas de muestra
En esta sección, se proporcionan consultas en SQL de muestra para consultar los registros de auditoría.
Se realizaron cambios en la configuración de Logging
Para identificar cuándo se inhabilitan los registros de auditoría o cuándo se realizan cambios en los valores predeterminados En la configuración de registros, consulta los registros de auditoría de actividad del administrador:
SELECT
receive_timestamp, timestamp AS eventTimestamp,
proto_payload.audit_log.request_metadata.caller_ip,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
proto_payload.audit_log.service_name = "logging.googleapis.com"
AND log_id = "cloudaudit.googleapis.com/activity"
Determinar las acciones más comunes realizadas el mes pasado
Para identificar qué acciones se realizaron con más frecuencia en los últimos 30 días, consultar todos los registros de auditoría:
SELECT
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type,
COUNT(*) AS counter
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND log_id="cloudaudit.googleapis.com/data_access"
GROUP BY
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type
ORDER BY
counter DESC
LIMIT 100
La consulta anterior busca en todos los registros de auditoría de los últimos 30 días y devuelve
las 100 acciones más realizadas con información sobre method_name
service_name
, tipo de recurso y un contador de las acciones realizadas.
Detecta roles otorgados en una cuenta de servicio
Para identificar la suplantación de cuentas de servicio o los roles otorgados en cuentas de servicio, consultar los Registros de auditoría de actividad del administrador:
SELECT
timestamp,
proto_payload.audit_log.authentication_info.principal_email as grantor,
JSON_VALUE(bindingDelta.member) as grantee,
JSON_VALUE(bindingDelta.role) as role,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`,
UNNEST(JSON_QUERY_ARRAY(proto_payload.audit_log.service_data.policyDelta.bindingDeltas)) AS bindingDelta
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND log_id = "cloudaudit.googleapis.com/activity"
AND (
(resource.type = "service_account"
AND proto_payload.audit_log.method_name LIKE "google.iam.admin.%.SetIAMPolicy")
OR
(resource.type IN ("project", "folder", "organization")
AND proto_payload.audit_log.method_name = "SetIamPolicy"
AND JSON_VALUE(bindingDelta.role) LIKE "roles/iam.serviceAccount%")
)
AND JSON_VALUE(bindingDelta.action) = "ADD"
-- Principal (grantee) exclusions
AND JSON_VALUE(bindingDelta.member) NOT LIKE "%@example.com"
ORDER BY
timestamp DESC
La consulta anterior busca registros de auditoría que capturen los roles otorgados a un
principal en una cuenta de servicio. El rol de creador de tokens de cuentas de servicio le permite
principal a usar la identidad de la cuenta de servicio. La consulta también especifica una hora
rango de los últimos siete días y excluye a los beneficiarios aprobados (%@example.com
).
Identifica el alto uso de la API por parte de una principal
Para identificar un uso inusualmente alto de la API por parte de una principal, consulta todos los registros de auditoría:
SELECT
*
FROM (
SELECT
*,
AVG(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS avg,
STDDEV(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS stddev,
COUNT(*) OVER (
PARTITION BY principal_email
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS numSamples
FROM (
SELECT
proto_payload.audit_log.authentication_info.principal_email,
EXTRACT(DATE FROM timestamp) AS day,
ARRAY_AGG(DISTINCT proto_payload.audit_log.method_name IGNORE NULLS) AS actions,
COUNT(*) AS counter
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 DAY)
AND proto_payload.audit_log.authentication_info.principal_email IS NOT NULL
AND proto_payload.audit_log.method_name NOT LIKE "storage.%.get"
AND proto_payload.audit_log.method_name NOT LIKE "v1.compute.%.list"
AND proto_payload.audit_log.method_name NOT LIKE "beta.compute.%.list"
GROUP BY
proto_payload.audit_log.authentication_info.principal_email,
day
)
)
WHERE
counter > avg + 3 * stddev
AND day >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
ORDER BY
counter DESC
Para la principal especificada, principal_email
, la consulta calcula el promedio
la cantidad de llamadas a la API por día y el desvío estándar de esas llamadas.
Cuando la cantidad promedio de llamadas a la API es mayor que el promedio de ejecución
tres veces la desviación estándar, la consulta muestra
información:
- Un contador de las acciones realizadas.
- El promedio calculado de acciones realizadas por día.
- Las acciones específicas que se realizaron.
¿Qué sigue?
Para obtener una descripción general del Análisis de registros, consulta Análisis de registros.
Para ver más consultas de muestra, revisa la sección Consultas de SQL de muestra.
Si quieres ver más consultas de muestra usadas para generar estadísticas de seguridad a partir de tus registros, consulta el repositorio de Estadísticas de seguridad de la comunidad.
Para aprender a habilitar, agregar y analizar tus registros con El Análisis de registros, consulta Análisis de registros de seguridad en Google Cloud.