Información sobre los registros de auditoría

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

Los registros de auditoría de Cloud brindan los siguientes registros de auditoría para cada proyecto, carpeta y organización de Google Cloud:

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

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, la carpeta 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 del 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 de los registros de auditoría de Cloud, como serviceName y authenticationInfo. También tiene un campo opcional, metadata, que los servicios de Google Cloud usan para enumerar información específica del servicio en la entrada de registro de auditoría. Algunos servicios de Google Cloud aún usan el campo serviceData anterior para mostrar información específica del servicio. Para obtener una lista de los servicios que usan el campo serviceData, consulta Datos de auditoría específicos del servicio.

  • Nombre del registro: Las entradas de registro de auditoría pertenecen a registros dentro de cuentas de facturación, proyectos, carpetas y organizaciones. En la siguiente tabla, se enumeran los nombres de los 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
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

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

Ejemplo de entrada de 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 App Engine para registrar un cambio en una política de Identity and Access Management (IAM) con PROJECT_ID 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. La consulta se puede usar en el Explorador de registros, la API de Logging o Google Cloud CLI. El identificador de proyecto está en el nombre del registro:

    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 el ejemplo 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, 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.

Registros de auditoría para operaciones de larga duración

Las APIs que son operaciones de larga duración emiten dos registros de auditoría: uno cuando se llama a la API y se inicia la operación, y uno cuando se completa la operación.

En este caso, el objeto LogEntry contiene un campo operation. Las entradas de registro de la misma operación tienen el mismo valor para LogEntry.operation.id y LogEntry.operation.producer. La primera entrada de registro que se escribió tiene LogEntry.operation.first=true y la entrada de registro de finalización tiene LogEntry.operation.last=true.

En los casos en que la operación se completa de inmediato, solo hay una entrada de registro que contiene LogEntry.operation.first=true y LogEntry.operation.last=true.

Estas APIs implementan el servicio Operations. Por lo general, este servicio emite entradas de registro de auditoría cuando se lo llama. Según a qué APIs se llame, protoPayload.methodName es una de las siguientes opciones:

  • google.longrunning.Operations.ListOperations
  • google.longrunning.Operations.GetOperation
  • google.longrunning.Operations.CancelOperation
  • google.longrunning.Operations.WaitOperation
  • google.longrunning.Operations.DeleteOperation

En este caso, no se especifica LogEntry.operation, ya que esta API muestra metadatos sobre operaciones de larga duración, pero no es una operación de larga duración.

Consulta Servicios de Google Cloud con registros de auditoría para obtener detalles sobre qué APIs se auditan, ya que puede variar según el servicio.

Registros de auditoría de las APIs de transmisión

Al igual que las operaciones de larga duración, las APIs de transmisión emiten dos entradas de registro de auditoría: una cuando se llama a la API por primera vez y otra cuando finaliza la conexión de transmisión.

En este caso, el objeto LogEntry contiene un campo operation, y las entradas de registro de la misma operación tienen el mismo valor para LogEntry.operation.id y LogEntry.operation.producer. El primer registro escrito tiene LogEntry.operation.first=true, y el registro de finalización tendrá LogEntry.operation.last=true.

Esta API también puede emitir entradas de registro de Continuation sin LogEntry.operation.first ni LogEntry.operation.last establecidas para indicar que la transmisión permanece abierta.

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 de la entrada de 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.

ServicioTipo 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
IAM type.googleapis.com/google.iam.v1.logging.AuditData

Consultar registros de auditoría

Puedes consultar todos los registros de auditoría o puedes consultar los registros por su nombre de registro de auditoría. El nombre del registro de auditoría incluye el identificador de recursos del proyecto de Google Cloud, la carpeta, la cuenta de facturación o la organización cuya información de registro de auditoría deseas ver. Tus consultas pueden especificar campos LogEntry indexados. Para obtener más información sobre cómo consultar tus registros, consulta Crea consultas en el Explorador de registros.

El Explorador de registros te permite ver y filtrar entradas de registro individuales. Si deseas usar SQL para analizar grupos de entradas de registro, usa la página Análisis de registros. Para obtener más información, consulte:

La mayoría de los registros de auditoría se pueden ver en Cloud Logging a través de la consola de Google Cloud, Google Cloud CLI o la API de Logging. Sin embargo, para los registros de auditoría relacionados con la facturación, solo puedes usar Google Cloud CLI o la API de Logging.

Console

En la consola de Google Cloud, puedes usar el Explorador de registros para recuperar las entradas de registro de auditoría de tu carpeta, organización o proyecto de Google Cloud:

  1. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. Selecciona una organización, una carpeta o un proyecto existente de Google Cloud.

  3. Para mostrar todos los registros de auditoría, ingresa cualquiera de las siguientes consultas en el campo de editor de consultas y, luego, haz clic en Ejecutar consulta:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Para mostrar los registros de auditoría de un recurso específico y un tipo de registro de auditoría, en el panel Compilador de consultas, haz lo siguiente:

    • En Tipo de recurso, selecciona el recurso de Google Cloud cuyos registros de auditoría deseas ver.

    • En Nombre del registro, selecciona el tipo de registro de auditoría que deseas ver:

      • En el caso de los registros de auditoría de la actividad del administrador, selecciona activity.
      • En los registros de auditoría de acceso a los datos, selecciona data_access.
      • En el caso de los registros de auditoría de eventos del sistema, selecciona system_event.
      • En el caso de los registros de auditoría de política denegada, selecciona policy.
    • Haz clic en Ejecutar consulta.

    Si no ves estas opciones, significa que no hay registros de auditoría de ese tipo disponibles en la carpeta, la organización o el proyecto de Google Cloud.

    Si tienes problemas cuando intentas ver registros en el Explorador de registros, consulta la información acerca de la solución de problemas.

    Para obtener más información de las consultas con el Explorador de registros, visita Compila consultas en el Explorador de registros.

gcloud

Google Cloud CLI proporciona una interfaz de línea de comandos para la API de Logging. Proporciona un identificador de recurso válido en cada uno de los nombres de registro. Por ejemplo, si tu consulta incluye un PROJECT_ID, el identificador del proyecto que proporciones debe hacer referencia al proyecto de Google Cloud que se encuentra seleccionado.

Para leer las entradas de registro de auditoría a nivel de proyecto de Google Cloud, ejecuta el siguiente comando:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Para leer las entradas del registro de auditoría a nivel de las carpetas, ejecuta el siguiente comando:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Para leer las entradas del registro de auditoría a nivel de organización, ejecuta el siguiente comando:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Para leer las entradas del registro de auditoría a nivel de la cuenta de Facturación de Cloud, ejecuta el siguiente comando:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Agrega la marca --freshness a tu comando para leer los registros que tienen más de 1 día de antigüedad.

Para obtener más información del uso de gcloud CLI, consulta gcloud logging read.

REST

Cuando compiles tus consultas, proporciona un identificador de recurso válido en cada uno de los nombres de registro. Por ejemplo, si tu consulta incluye un PROJECT_ID, el identificador del proyecto que proporciones debe hacer referencia al proyecto de Google Cloud que se encuentra seleccionado.

Por ejemplo, si quieres usar la API de Logging para ver las entradas del registro de auditoría a nivel de proyecto, 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 el cuerpo de la solicitud del formulario Prueba esta API. Si haces clic en este formulario prepropagado, 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"
    }
    
  3. Haz clic en Ejecutar.