Comprender los registros de auditoría

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

Cloud Audit Logs proporciona los siguientes registros de auditoría para cada Google Cloud proyecto, carpeta y organización:

  • Registros de auditoría de la actividad administrativa
  • Registros de auditoría de acceso a los datos
  • Registros de auditoría de los eventos del sistema
  • Registros de auditoría de denegación de acceso por infracción de las políticas

Para obtener una descripción general de los registros de auditoría de Cloud, consulta Registros de auditoría de Cloud.

Formato de las entradas del 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, las entradas de registro de auditoría se almacenan 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 del registro de auditoría, el campo protoPayload de la entrada del registro contiene un objeto AuditLog que almacena los datos del registro de auditoría.

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 consta de un tipo de recurso de la lista de recursos supervisados y de valores adicionales que denotan una instancia específica. Por ejemplo, puede 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, como Compute Engine, Cloud SQL o Pub/Sub. Google Cloud Cada servicio se identifica por su nombre: Compute Engine es compute.googleapis.com, Cloud SQL es cloudsql.googleapis.com, etc. Esta información se indica en el campo protoPayload.serviceName de la entrada del registro de auditoría.

    Los tipos de recursos pertenecen a un solo servicio, pero un servicio puede tener varios tipos de recursos. Para ver una lista de servicios y recursos, consulta 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 Cloud Audit Logs, como serviceName y authenticationInfo. También tiene un campo opcional, metadata, que los servicios Google Cloud usan para enumerar información específica del servicio en la entrada del registro de auditoría. Algunos Google Cloud servicios siguen usando el campo serviceData antiguo para mostrar información específica de cada servicio. Para ver una lista de los servicios que usan el campo serviceData, consulta Datos de auditoría específicos del servicio.

  • Nombre de un registro: las entradas del registro de auditoría pertenecen a registros 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

En 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.

Entrada de registro de auditoría de ejemplo

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

El siguiente ejemplo es una entrada de registro de auditoría de actividad de administrador escrita por App Engine para registrar un cambio en una política de gestión de identidades y accesos (IAM) con PROJECT_ID my-gcp-project-id. Para mayor brevedad, se han omitido algunas partes de la entrada de registro y se han destacado 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 ha usado para seleccionar la muestra de entrada de registro de auditoría anterior. La consulta se puede usar en el Explorador de registros, la API Logging o la CLI de Google Cloud. El identificador del proyecto se encuentra 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, añade un calificador de instancia:

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

Interpretar la entrada de registro de auditoría de ejemplo

En el ejemplo de entrada de registro de auditoría anterior, los campos protoPayload, insertId, resource, timestamp, severity y logName que se muestran forman parte del objeto LogEntry. El valor del campo protoPayload es un objeto AuditLog. Encapsula los datos de registro de auditoría.

Al examinar el ejemplo de entrada del registro de auditoría, puede que te surjan algunas dudas:

  • ¿Es una entrada del registro de auditoría? Sí, y puedes comprobarlo de 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 ha escrito el registro. Esta información se indica en el campo protoPayload.serviceName de la entrada del registro de auditoría.

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

  • ¿Qué recurso se está auditando? Se está auditando una aplicación que se ejecuta en App Engine y que está asociada a un Google Cloud proyecto my-gcp-project-id. Puedes determinarlo a partir del 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 el tipo de recurso en la lista de tipos de recursos supervisados.

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

Registros de auditoría de 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 otro 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 los que la operación se completa inmediatamente o falla, solo hay una entrada de registro que contiene tanto LogEntry.operation.first=true como LogEntry.operation.last=true.

Algunos servicios no rellenan el campo LogEntry.operation cuando falla la operación. Sin embargo, puedes determinar qué operaciones son de larga duración consultando la documentación de registro de auditoría del servicio.

Estas APIs implementan el servicio Operations. Este servicio suele emitir entradas de registro de auditoría cuando se llama. En función de las APIs a las que se llame, protoPayload.methodName será una de las siguientes:

  • 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 devuelve metadatos sobre operaciones de larga duración, pero no es una operación de larga duración en sí.

Consulta los Google Cloud servicios con registros de auditoría para obtener más información sobre las APIs auditadas, ya que puede variar según el servicio.

Registros de auditoría de las APIs de streaming

Al igual que las operaciones de larga duración, las APIs de streaming 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 streaming.

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 continuación sin que se haya definido LogEntry.operation.first ni LogEntry.operation.last para indicar que el flujo sigue abierto.

Datos de auditoría específicos del servicio

Algunos servicios amplían la información almacenada en su AuditLog colocando una estructura de datos complementaria en el campo serviceData de la entrada del registro de auditoría. En la siguiente tabla se enumeran los servicios que usan el campo serviceData y se proporciona un enlace a su tipo AuditData.

ServicioTipo de datos de servicio
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (Legacy) 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

Ver registros de auditoría

Puede consultar todos los registros de auditoría o buscar registros por su nombre. El nombre del registro de auditoría incluye el identificador de recurso del Google Cloud proyecto, la carpeta, la cuenta de facturación o la organización de los que quieras ver la información del registro de auditoría. En tus consultas puedes especificar campos LogEntry indexados. Para obtener más información sobre cómo consultar tus registros, consulta el artículo Crear consultas en el Explorador de registros.

Explorador de registros te permite ver y filtrar entradas de registro concretas. Si quieres usar SQL para analizar grupos de entradas de registro, utiliza la página Analíticas de registros. Para obtener más información, consulta estos artículos:

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

Consola

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

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

    Ve al Explorador de registros.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.

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

  3. Para mostrar todos los registros de auditoría, introduce una de las siguientes consultas en el campo del editor de consultas y 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 y un tipo de registro de auditoría específicos, haz lo siguiente en el panel Generador de consultas:

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

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

      • En el caso de los registros de auditoría de actividad de administración, selecciona activity.
      • En el caso de los registros de auditoría de acceso a datos, selecciona data_access.
      • En el caso de los registros de auditoría de los eventos del sistema, selecciona system_event.
      • En Registros de auditoría de denegación de acceso por infracción de las políticas, selecciona policy.
    • Haz clic en Realizar una consulta.

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

    Si tienes problemas para ver los registros en el Explorador de registros, consulta la información sobre solución de problemas.

    Para obtener más información sobre cómo hacer consultas con el Explorador de registros, consulta el artículo Crear consultas en el Explorador de registros.

gcloud

La CLI de Google Cloud proporciona una interfaz de línea de comandos a la API Logging. Indica 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 de proyecto que proporciones debe hacer referencia al proyectoGoogle Cloud seleccionado.

Para leer las entradas del 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 carpeta, 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 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

Añade la marca --freshness al comando para leer los registros que tengan más de un día.

Para obtener más información sobre el uso de la herramienta de línea de comandos gcloud, consulta gcloud logging read.

REST

Cuando cree sus consultas, proporcione 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 de proyecto que proporciones debe hacer referencia al proyectoGoogle Cloud seleccionado.

Por ejemplo, para usar la API Logging y ver las entradas de registro de auditoría de tu proyecto, haz lo siguiente:

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

  2. Incluye lo siguiente en la parte Cuerpo de la solicitud del formulario Probar esta API. Si haces clic en este formulario rellenado automáticamente, se rellenará automáticamente el cuerpo de la solicitud, pero debes proporcionar un PROJECT_ID válido en cada uno de los nombres de registro.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Haz clic en la opción para ejecutar.