En este documento, se describe cómo analizar los registros de auditoría de Cloud Logging con consultas de SQL estándar de BigQuery en la página de Log Analytics. Las consultas en SQL te permiten agregar y analizar tus registros de auditoría, que proporcionan información sobre las actividades administrativas y los accesos en tus recursos de Google Cloud .
Acerca de los registros de auditoría
Hay cuatro tipos de registros de auditoría que pueden escribir los servicios de Google Cloud:
Registros de auditoría de actividad del administrador: En estos registros, se registran las llamadas a la API y otras acciones que modifican la configuración o los metadatos de los recursos. Estos registros siempre se escriben; no puedes configurarlos, excluirlos ni inhabilitarlos.
Registros de auditoría de acceso a los datos: Estos registros graban las llamadas a la API que leen la configuración o los metadatos de los recursos, así como las llamadas a la API que controla el usuario y que crean, modifican o leen los datos de los recursos que proporciona el usuario. Dado que el acceso a los datos es una operación frecuente de la API, estos registros están inhabilitados 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 registro para lasGoogle Cloud acciones que modifican la configuración de los recursos. Los sistemas de Google generan estos registros, no las acciones del usuario. 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 Google Cloud servicio rechaza el acceso a un usuario o a una cuenta de servicio debido a un incumplimiento de la política de seguridad. Estos registros no se pueden inhabilitar, pero puedes usar filtros de exclusión para evitar que se almacenen en Logging.
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 registros de auditoría, consulta Google Cloud servicios con registros de auditoría.
Usa los registros de auditoría para identificar incumplimientos de políticas o actividad sospechosa
Puedes usar los registros de auditoría para identificar incumplimientos de políticas o actividad sospechosa:
Para identificar posibles elevación de privilegios con Identity and Access Management (IAM) o evasiones de defensas inhabilitando el registro, usa los registros de auditoría de actividad del administrador. Para ver un ejemplo de consulta que identifica esta situación, consulta ¿Se realizaron cambios en la configuración de registro?.
Para identificar posibles usos inadecuados 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 ver un ejemplo de consulta que identifica esta situación, consulta Cómo identificar el uso elevado de la API por parte de una principal.
Para identificar con qué frecuencia se accede a los datos y qué usuarios lo hacen, consulta todos los registros de auditoría. Para ver un ejemplo de consulta que identifica esta situación, consulta Cómo determinar las acciones más comunes que se realizaron en el último mes.
Antes de comenzar
Asegúrate de tener un Google Cloud proyecto, una carpeta o una organización que genere registros de auditoría.
Asegúrate de tener acceso a una vista en el bucket de registros al que se enrutan los registros de auditoría. El bucket de registros debe actualizarse para usar el Análisis de registros. Para obtener información sobre cómo crear un bucket de registros que se actualizó para usar el Análisis de registros, consulta Configura buckets de registros.
-
Para obtener los permisos que necesitas para crear receptores y ver registros, pídele a tu administrador que te otorgue 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 a través de roles personalizados o cualquier otro rol predefinido.
Según los registros de auditoría que quieras ver, es posible que necesites roles o permisos independientes. Para obtener información sobre cómo configurar roles de IAM, consulta la documentación de Logging sobre el control de acceso con IAM.
-
Escritor de configuración de registros (
Para usar las consultas de este documento en la página Análisis de registros, haz 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 de registro que deseas consultar.
Para identificar este nombre, ve a la lista Vistas de registros, busca la vista de registros y, luego, selecciona Consulta. El panel Consulta se completa con una consulta predeterminada que incluye el nombre de la tabla de la vista de registro que se consulta. El nombre de la tabla tiene el formato
project_ID.region.bucket_ID.view_ID
.Para obtener más información sobre cómo acceder a la consulta predeterminada, consulta Cómo consultar una vista de registro.
Reemplaza TABLE_NAME_OF_LOG_VIEW por el nombre de la tabla de la vista de registro que deseas consultar y, luego, 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 ejemplos de consultas en SQL para consultar los registros de auditoría.
Cambios realizados en la configuración de Logging
Para identificar cuándo se inhabilitan los registros de auditoría o cuándo se realizan cambios en la configuración de registro predeterminada, 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"
Determina las acciones más comunes que se realizaron en el último mes
Para identificar qué acciones se realizan con mayor frecuencia en los últimos 30 días, consulta 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 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
, el tipo de recurso y un contador de las acciones realizadas.
Detecta los roles otorgados en una cuenta de servicio
Para identificar el robo de identidad de cuentas de servicio o los roles otorgados en cuentas de servicio, consulta los registros de auditoría de la 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 que se otorgan a una principal en una cuenta de servicio. El rol de creador de tokens de cuentas de servicio permite que la principal suplante la identidad de la cuenta de servicio. La consulta también especifica un período de los últimos siete días y excluye a los beneficiarios aprobados (%@example.com
).
Identifica el uso elevado de la API por parte de una principal
Para identificar el 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 la cantidad promedio de llamadas a la API por día y la desviación estándar de esas llamadas.
Cuando la cantidad promedio de llamadas a la API es mayor que el promedio móvil más tres veces la desviación estándar, la búsqueda muestra la siguiente información:
- Es un contador de las acciones realizadas.
- Es el promedio calculado de las acciones realizadas por día.
- Son 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 obtener más ejemplos de consultas, consulta Ejemplos de consultas de SQL.
Para obtener más ejemplos de consultas que se usan para generar estadísticas de seguridad a partir de tus registros, consulta el repositorio de Estadísticas de seguridad de la comunidad.
Para obtener información sobre cómo habilitar, agregar y analizar tus registros con el Análisis de registros, consulta Análisis de registros de seguridad en Google Cloud.