Información sobre los registros de auditoría

En esta página, se describen en detalle las entradas de registro de auditoría: su estructura, cómo leerlas y cómo interpretarlas.

Cloud Audit Logging mantiene los siguientes tres registros de auditoría por cada proyecto, carpeta y organización de Google Cloud:

  • Registros de auditoría de eventos del sistema
  • Registros de auditoría de actividad del administrador
  • Registros de auditoría de acceso a los datos

Para obtener una descripción general de Cloud Audit Logging, consulta Cloud Audit Logging.

Formato de las entradas de registro de auditoría

Una entrada de registro de auditoría es un tipo de entrada de registro de Cloud Logging. Al igual que todas las entradas de registro de Logging, se almacena en un objeto LogEntry. Lo que distingue una entrada de registro de auditoría de otras entradas de registro es el campo protoPayload. En las entradas de registro de auditoría, el campo protoPayload de la entrada de registro contiene un objeto AuditLog que almacena los datos.

En resumen, cada entrada de registro de auditoría se caracteriza por la siguiente información:

  • El proyecto o la organización que posee la entrada de registro
  • El recurso al que se aplica la entrada de registro. Esta información consiste en un tipo de recurso de la lista de recursos supervisados y valores adicionales que denotan una instancia específica. Por ejemplo, puedes ver las entradas de registro de auditoría de una sola instancia de VM de Compute Engine o de todas las instancias de VM
  • Una marca de tiempo
  • Un servicio: Los servicios son productos individuales de Google Cloud, como Compute Engine, Cloud SQL o Pub/Sub. Cada servicio se identifica por un nombre: Compute Engine es compute.googleapis.com, Cloud SQL es cloudsql.googleapis.com, etcétera. Esta información aparece en el campo protoPayload.serviceName de la entrada de registro de auditoría.

    Los tipos de recursos pertenecen a un solo servicio, pero un servicio puede tener varios tipos de recursos. Para obtener una lista de servicios y recursos, ve a la página sobre cómo asignar servicios a recursos.

  • Una carga útil, que es el tipo protoPayload. La carga útil de cada entrada de registro de auditoría es un objeto de tipo AuditLog, que define un conjunto de campos específicos del registro de auditoría, como serviceName y authenticationInfo. También tiene un campo opcional, serviceData, que algunos servicios de Google Cloud usan para enumerar información específica del servicio en la entrada de registro de auditoría. Consulta Datos de auditoría específicos del servicio para obtener una lista de los servicios de Google Cloud que usan este campo.

  • Nombre del registro: Las entradas de registro de auditoría pertenecen a registros dentro de proyectos, carpetas y organizaciones. A continuación, se enumeran los nombres de registros:

       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Factivity
       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Factivity
       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event
    

Dentro de un proyecto, una carpeta o una organización, estos nombres de registro suelen abreviarse como activity, data_access y system_event.

Ejemplo de entrada del registro de auditoría

En esta sección, se usa una entrada de registro de auditoría de muestra para explicar cómo encontrar la información más importante en las entradas de registro de auditoría.

La siguiente muestra es una entrada de registro de auditoría de la actividad del administrador escrita por Resource Manager a fin de registrar un cambio en la política de Cloud Identity and Access Management en un proyecto de Google Cloud llamado my-gcp-project-id. Por cuestiones de brevedad, se omitieron algunas partes de la entrada de registro y se destacaron algunos campos:

        {
          protoPayload: {
            @type: "type.googleapis.com/google.cloud.audit.AuditLog",
            status: {},
            authenticationInfo: {
              principalEmail: "user@example.com"
            },
            serviceName: "appengine.googleapis.com",
            methodName: "SetIamPolicy",
            authorizationInfo: [...],
            serviceData: {
              @type: "type.googleapis.com/google.appengine.legacy.AuditData",
              policyDelta: { bindingDeltas: [
                  action: "ADD",
                  role: "roles/logging.privateLogViewer",
                  member: "user:user@example.com"
              ], }
            },
            request: {
              resource: "my-gcp-project-id",
              policy: { bindings: [...], }
            },
            response: {
              bindings: [
                {
                  role: "roles/logging.privateLogViewer",
                  members: [ "user:user@example.com" ]
                }
              ],
            }
          },
          insertId: "53179D9A9B559.AD6ACC7.B40604EF",
          resource: {
            type: "gae_app",
            labels: { project_id: "my-gcp-project-id" }
          },
          timestamp: "2019-05-27T16:24:56.135Z",
          severity: "NOTICE",
          logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
        }
    

Esta es la consulta que se usó para seleccionar la muestra de entrada de registro de auditoría anterior. Se puede usar en el visor de registros avanzados, en la API de Logging o en el SDK de Cloud. El identificador de proyecto está en el nombre del registro, y la consulta es rápida porque el campo logName está indexado:

        resource.type = "gae_app"
        logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    

Si buscas registros de auditoría de una sola instancia de un tipo de recurso, como gce_instance, agrega un calificador de instancias:

        resource.type = "gce_instance"
        resource.instance_id = "[INSTANCE_ID]/
        logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    

Interpreta la entrada de registro de auditoría de muestra

En la muestra de entrada de registro de auditoría anterior, los campos protoPayload, insertId, resource, timestamp, severity y logName son parte del objeto LogEntry. El valor del campo protoPayload es un objeto AuditLog. Encapsula los datos de registro de auditoría.

Si observas el ejemplo de entrada de registro de auditoría anterior, podrías tener algunas preguntas:

  • ¿Es una entrada de registro de auditoría? Sí. Puedes distinguirla de estas dos formas:

    • El campo protoPayload.@type es type.googleapis.com/google.cloud.audit.AuditLog.

    • El campo logName incluye el dominio cloudaudit.googleapis.com.

  • ¿Qué servicio escribió el registro de auditoría? App Engine escribió el registro. Esta información aparece en el campo protoPayload.serviceName de la entrada de registro de auditoría.

  • ¿Qué operación se audita? Se audita SetIamPolicy, como se especifica en el campo protoPayload.methodName. Encontrarás más información sobre la operación auditada en el objeto AuditData de protoPayload.serviceData.

  • ¿Qué recurso se audita? Se audita una aplicación que se ejecuta en App Engine, asociada a un proyecto my-gcp-project-id de Google Cloud. Puedes determinarlo desde el campo resource, que especifica el tipo de recurso gae_app y el identificador del proyecto my-gcp-project-id. En este ejemplo, encontrarás detalles sobre los tipos de recursos en la lista de tipos de recursos supervisados.

Para obtener más información, consulta el tipo LogEntry, el tipo AuditLog y el tipo AuditData de IAM.

Entradas de registro de auditoría grandes o de larga duración

Una sola operación auditada se divide en varias entradas de registro si la operación se ejecuta de manera asíncrona o si genera un registro AuditLog grande. Cuando hay más de una entrada de registro para la misma operación, el objeto LogEntry contendrá un campo operation, y las entradas para la misma operación tendrán el mismo valor de LogEntry.operation.id y LogEntry.operation.producer.

En la muestra de entrada de registro de auditoría anterior, el campo operation no está presente, lo que significa que toda la información de auditoría se encuentra en una sola entrada de registro.

Datos de auditoría específicos del servicio

Para extender la información almacenada en su AuditLog, algunos servicios colocan una estructura de datos complementaria en el campo serviceData del registro de auditoría. En la siguiente tabla, se enumeran los servicios que usan el campo serviceData y se proporciona un vínculo al tipo AuditData.

Servicio Tipo de datos de servicio
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (heredado) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData

Ve registros de auditoría

Si quieres buscar y ver los registros de auditoría, debes conocer el identificador del proyecto, la carpeta o la organización de Google  Cloud para el que deseas ver la información del registro de auditoría. Además, puedes especificar otros campos LogEntry indexados, como resource.type. Para obtener más información, consulta Busca entradas de registro con rapidez.

Estos son los nombres de los registros de auditoría:

       projects/project-id/logs/cloudaudit.googleapis.com%2Factivity
       projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access
       projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_event

       folders/folder-id/logs/cloudaudit.googleapis.com%2Factivity
       folders/folder-id/logs/cloudaudit.googleapis.com%2Fdata_access
       folders/folder-id/logs/cloudaudit.googleapis.com%2Fsystem_event

       organizations/organization-id/logs/cloudaudit.googleapis.com%2Factivity
       organizations/organization-id/logs/cloudaudit.googleapis.com%2Fdata_access
       organizations/organization-id/logs/cloudaudit.googleapis.com%2Fsystem_event
    

En los siguientes ejemplos, se usan consultas a nivel de proyecto. Si deseas consultar los registros de auditoría a nivel de la organización o de la carpeta, reemplaza el nombre o los identificadores correspondientes del registro de auditoría a nivel de la carpeta o de la organización como aparecen en los nombres del registro de auditoría.

Tienes varias opciones para ver las entradas de los registros de auditoría:

Cloud Console

Puedes usar el visor de registros de Cloud Console para recuperar las entradas del registro de auditoría de tu proyecto de Google Cloud. Haz lo siguiente:

  1. Ve a la página del paquete de operaciones Logging de Google Cloud > Registros (Visor de registros) en Cloud Console:

    Ir a la página Visor de registros

  2. Selecciona un proyecto de Google Cloud existente en la parte superior de la página o crea un proyecto nuevo.

  3. En el primer menú desplegable, selecciona el tipo de recurso cuyos registros de auditoría deseas ver.

  4. En el segundo menú desplegable, selecciona el tipo de registro que deseas ver: activity para los registros de auditoría de la actividad del administrador, data_access en el caso de los registros de auditoría de acceso a los datos, y system_events si deseas ver los registros de eventos del sistema.

    Si no ves ninguna de esas opciones, no hay registros de auditoría de ese tipo disponibles en el proyecto.

Si deseas restringir una búsqueda existente para que solo se muestren los registros de auditoría, haz lo siguiente:

  1. En el cuadro de filtro de búsqueda, haz clic en la flecha desplegable (▾) y selecciona Convertir en filtro avanzado.

  2. En el cuadro de texto que aparece, agrega la siguiente consulta debajo de la línea resource.type. Ten en cuenta que el project-id que proporcionas debe referirse al proyecto de Google Cloud que se encuentra seleccionado; de lo contrario, la consulta no funcionará.

            logName = ("projects/project-id/logs/cloudaudit.googleapis.com%2Factivity"
                OR "projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_events"
                OR "projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access")
        

    Si deseas ver todos los registros de auditoría disponibles para tu proyecto, solo incluye lo anterior en tu consulta. Para obtener más información sobre las consultas, ve a Consultas de registros avanzadas.

API

Para ver las entradas del registro de auditoría con la API de Logging, haz lo siguiente:

  1. Ve a la sección Prueba esta API en la documentación del método entries.list.

  2. Ingresa lo siguiente en la sección Cuerpo de la solicitud del formulario Prueba esta API. Si haces clic en este formulario rellenado con anterioridad, se completará el cuerpo de la solicitud de manera automática, pero deberás proporcionar un project-id válido para cada nombre de registro.

              {
                "resourceNames": [
                  "projects/project-id"
                ],
                "pageSize": 5,
                "filter": "logName=(projects/project-id/logs/cloudaudit.googleapis.com%2Factivity OR projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access)"
              }
        
  3. Haz clic en Ejecutar.

Para obtener más información sobre las consultas, ve a Consultas de registros avanzadas.

GCLOUD

El SDK de Cloud tiene un grupo de comandos, gcloud logging, que proporcionan una interfaz de línea de comandos para la API de Cloud Logging. Para leer tus entradas de registro, ejecuta el siguiente comando. Proporciona un project-id válido en cada uno de los nombres de registro.

        gcloud logging read "logName=(projects/project-id/logs/cloudaudit.googleapis.com%2Factivity OR projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access)

Consulta Lee las entradas de registro para obtener más información sobre el uso de la herramienta de línea de comandos de gcloud.

Para obtener una entrada de registro de auditoría de muestra y conocer cómo buscar la información más importante en ella, consulta Información sobre los registros de auditoría.

Para obtener más información sobre cómo encontrar registros de auditoría con el visor de registros, además de sugerencias sobre la sintaxis de consulta, ve a la sección sobre cómo visualizar registros.