Recopila registros de Cloud Run

Compatible con:

En esta guía, se explica cómo exportar registros de Cloud Run a Google Security Operations con Cloud Storage. El analizador extrae campos de los registros JSON y los transforma en el modelo de datos unificado (UDM). Controla varios formatos de registro, incluidos los datos de solicitudes HTTP y los registros de auditoría del sistema, asignando campos relevantes a la UDM y, al mismo tiempo, enriqueciendo los datos con etiquetas y metadatos específicos de Cloud Run.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de que Cloud Run esté configurado y activo en tu Google Cloud entorno.
  • Asegúrate de tener acceso con privilegios a Google Cloud.

Crea un bucket de Google Cloud Storage.

  1. Accede a la consola de Google Cloud.
  2. Ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  3. Haz clic en Crear.

  4. En la página Crear un bucket, ingresa la información de tu bucket. Después de cada uno de los siguientes pasos, haz clic en Continuar para avanzar al siguiente:

    1. En la sección Primeros pasos, haz lo siguiente:

      1. Ingresa un nombre único que cumpla con los requisitos de nombres de bucket, por ejemplo, cloudrun-logs.
      2. Para habilitar el espacio de nombres jerárquico, haz clic en la flecha de expansión para expandir la sección Optimizar las cargas de trabajo orientadas a archivos y con uso intensivo de datos y, luego, selecciona Habilitar el espacio de nombres jerárquico en este bucket.

      3. Para agregar una etiqueta de bucket, haz clic en la flecha de expansión para expandir la sección Etiquetas.

      4. Haz clic en Agregar etiqueta y especifica una clave y un valor para tu etiqueta.

    2. En la sección Eligir dónde almacenar tus datos, haz lo siguiente:

      1. Selecciona un tipo de ubicación
      2. Usa el menú de tipo de ubicación para seleccionar una Ubicación en la que se almacenarán de forma permanente los datos de objetos de tu bucket.

      3. Para configurar la replicación entre buckets, expande la sección Configurar la replicación entre buckets.

    3. En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Autoclass para la administración automática de clases de almacenamiento de los datos de tu bucket.

    4. En la sección Elige cómo controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos de tu bucket.

    5. En la sección Elige cómo proteger los datos de objetos, haz lo siguiente:

      1. Selecciona cualquiera de las opciones de Protección de datos que desees configurar para tu bucket.
      2. Para elegir cómo se encriptarán los datos de tus objetos, haz clic en la flecha desplegable etiquetada como Encriptación de datos y selecciona un método de encriptación de datos.
  5. Haz clic en Crear.

Configura la exportación de registros en Cloud Run

  1. En la página Google Cloud Welcome, haz clic en el ícono de Cloud Run.
  2. Busca Registro en la barra de búsqueda de la parte superior y haz clic en Intro.
  3. En el Explorador de registros, filtra los registros eligiendo Cloud Run en Nombre del registro y haz clic en Aplicar.
  4. Haz clic en Más acciones > Crear un receptor en el menú.
  5. Proporciona la siguiente configuración:
    1. Detalles del receptor: Ingresa un nombre y una descripción.
    2. Haz clic en Siguiente.
    3. Destino del receptor: Selecciona Bucket de Cloud Storage.
    4. Bucket de Cloud Storage: Selecciona el bucket que creaste antes o crea uno nuevo.
    5. Haz clic en Siguiente.
    6. Elige los registros que deseas incluir en el receptor: Se propaga un registro predeterminado cuando seleccionas una opción en el bucket de Cloud Storage.
    7. Haz clic en Siguiente.
    8. Opcional: Elige registros para filtrar fuera del receptor: Selecciona los registros que no deseas enviar al receptor.
  6. Haz clic en Crear receptor.

Configura un feed en Google SecOps para transferir registros de Cloud Run

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de Cloud Run.
  4. Selecciona Google Cloud Storage como el Tipo de fuente.
  5. Selecciona GCP Cloud Run como el Tipo de registro.
  6. Haz clic en Obtener cuenta de servicio como la cuenta de servicio de Chronicle.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • URI del bucket de almacenamiento: Google Cloud URL del bucket de almacenamiento en formato gs://my-bucket/<value>.
    • URI Is A: Selecciona Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.

    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.

    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.

  9. Haz clic en Siguiente.

  10. Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
httpRequest.latency target.resource.attribute.labels.[] El valor de httpRequest.latency del registro sin procesar se usa como el valor de una etiqueta con la clave http_request_latency dentro de target.resource.attribute.labels.
httpRequest.protocol network.application_protocol Si httpRequest.protocol contiene HTTP, el campo UDM se establece en HTTP.
httpRequest.remoteIp principal.asset.ip Se usa el valor de httpRequest.remoteIp del registro sin procesar.
httpRequest.remoteIp principal.ip Se usa el valor de httpRequest.remoteIp del registro sin procesar.
httpRequest.requestMethod network.http.method Se usa el valor de httpRequest.requestMethod del registro sin procesar.
httpRequest.requestSize network.sent_bytes El valor de httpRequest.requestSize del registro sin procesar se convierte en un número entero sin firma y se usa.
httpRequest.requestUrl target.url Se usa el valor de httpRequest.requestUrl del registro sin procesar.
httpRequest.responseSize network.received_bytes El valor de httpRequest.responseSize del registro sin procesar se convierte en un número entero sin firma y se usa.
httpRequest.serverIp target.asset.ip Se usa el valor de httpRequest.serverIp del registro sin procesar.
httpRequest.serverIp target.ip Se usa el valor de httpRequest.serverIp del registro sin procesar.
httpRequest.status network.http.response_code El valor de httpRequest.status del registro sin procesar se convierte en un número entero y se usa.
httpRequest.userAgent network.http.parsed_user_agent El valor de httpRequest.userAgent del registro sin procesar se analiza como una cadena de usuario-agente.
httpRequest.userAgent network.http.user_agent Se usa el valor de httpRequest.userAgent del registro sin procesar.
insertId metadata.product_log_id Se usa el valor de insertId del registro sin procesar.
labels.instanceId additional.fields.[] El valor de labels.instanceId se usa como el valor de una etiqueta con la clave instanceId dentro de additional.fields.
labels.run.googleapis.com_execution_name additional.fields.[] El valor de labels.run.googleapis.com_execution_name se usa como el valor de una etiqueta con la clave execution_name dentro de additional.fields.
labels.run.googleapis.com_task_attempt additional.fields.[] El valor de labels.run.googleapis.com_task_attempt se usa como el valor de una etiqueta con la clave task_attempt dentro de additional.fields.
labels.run.googleapis.com_task_index additional.fields.[] El valor de labels.run.googleapis.com_task_index se usa como el valor de una etiqueta con la clave task_index dentro de additional.fields.
logName metadata.product_event_type Se usa el valor de logName del registro sin procesar.
resource.labels.configuration_name target.resource.attribute.labels.[] El valor de resource.labels.configuration_name se usa como el valor de una etiqueta con la clave configuration_name dentro de target.resource.attribute.labels.
resource.labels.job_name additional.fields.[] El valor de resource.labels.job_name se usa como el valor de una etiqueta con la clave job_name dentro de additional.fields.
resource.labels.location target.location.name Se usa el valor de resource.labels.location del registro sin procesar.
resource.labels.project_id target.resource.attribute.labels.[] El valor de resource.labels.project_id se usa como el valor de una etiqueta con la clave project_id dentro de target.resource.attribute.labels.
resource.labels.revision_name target.resource.attribute.labels.[] El valor de resource.labels.revision_name se usa como el valor de una etiqueta con la clave revision_name dentro de target.resource.attribute.labels.
resource.labels.service_name target.resource.attribute.labels.[] El valor de resource.labels.service_name se usa como el valor de una etiqueta con la clave service_name dentro de target.resource.attribute.labels.
resource.type target.resource.resource_subtype Se usa el valor de resource.type del registro sin procesar.
severity security_result.severity Si el valor de severity coincide con Info (sin distinción entre mayúsculas y minúsculas), el campo de la UDM se establece en INFORMATIONAL.
textPayload additional.fields.[] El valor de textPayload se usa como el valor de una etiqueta con la clave Textpayload dentro de additional.fields.
timestamp metadata.event_timestamp El valor de timestamp del registro sin procesar se analiza como una marca de tiempo.
timestamp timestamp El valor de timestamp del registro sin procesar se analiza como una marca de tiempo. Se determina según la lógica del analizador en función de la presencia de ciertos campos. La configuración predeterminada es GENERIC_EVENT. Si has_principal_ip, has_target_ip y httpRequest.protocol coinciden con HTTP, se establece en NETWORK_HTTP. Se codifica en GCP_RUN. Se codifica en GCP_RUN. Se codifica en Google Cloud Platform. Se codifica en GOOGLE_CLOUD_PLATFORM.

Cambios

2024-01-22

Mejora:

  • Se agregó la asignación para los registros en los que logName es projects/1234/logs/run.googleapis.com%2Fstderr, projects/1234/logs/run.googleapis.com%2Fstdout, projects/1234/logs/run.googleapis.com%2Frequests y projects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem.
  • Se asignó httpRequest.latency a target.resource.attribute.labels.
  • Se asignó resource.labels.configuration_name a target.resource.attribute.labels.
  • Se asignó resource.labels.revision_name a target.resource.attribute.labels.
  • Se asignó resource.labels.service_name a target.resource.attribute.labels.
  • Se asignó httpRequest.protocol a network.application_protocol.
  • Se asignó httpRequest.requestMethod a network.http.method.
  • Se asignó httpRequest.requestSize a network.sent_bytes.
  • Se asignó httpRequest.requestUrl a target.url.
  • Se asignó httpRequest.responseSize a network.received_bytes.
  • Se asignó httpRequest.remoteIp a principal.ip y principal.asset.ip.
  • Se asignó httpRequest.serverIp a target.ipandtarget.asset.ip`.
  • Se asignó httpRequest.status a network.http.response_code.
  • Se asignó httpRequest.userAgent a network.http.user_agent.
  • Se asignó logName a metadata.product_event_type.
  • Se asignó textPayload a additional.fields.
  • Se asignó labels.run.googleapis.com_execution_name a additional.fields.
  • Se asignó labels.run.googleapis.com_task_attempt a additional.fields.
  • Se asignó labels.run.googleapis.com_task_index a additional.fields.
  • Se asignó labels.instanceId a additional.fields.
  • Se asignó resource.labels.job_name a additional.fields.

2023-04-13

Mejora:

  • Establece target.resource.attribute.cloud.environment en GOOGLE_CLOUD_PLATFORM.
  • Establece target.resource.name en el valor del nombre completo del recurso.

2022-07-13

  • Analizador creado recientemente.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.