Filtrar notificaciones

En esta página se muestran filtros de ejemplo que puede usar con la función de notificaciones de la API de Security Command Center, así como los mensajes que exporta a Pub/Sub o BigQuery. Puede filtrar las notificaciones por cualquier campo de resultados, incluidos los siguientes:

  • parent
  • state
  • resource_name
  • category
  • source_properties (solo en la API v1)
  • security_marks

También puede usar operadores estándar como parte de su cadena de filtro:

  • AND para incluir los campos que contengan todos los valores de un conjunto
  • OR para incluir campos que contengan uno de un conjunto de valores
  • - para excluir los campos que contengan un valor específico
  • Paréntesis para agrupar un conjunto de valores. Por ejemplo:

    (category = \"BUCKET_LOGGING_DISABLED\" OR category = \"CLUSTER_LOGGING_DISABLED\") AND state = \"ACTIVE\"

Configurar un filtro de origen

Todos los resultados de Security Command Center incluyen el ID de origen del proveedor de la fuente de seguridad. Por ejemplo, un resultado de Security Health Analytics incluye un ID de origen único para Security Health Analytics. El ID de la fuente se usa en un filtro NotificationConfig para especificar los resultados del proveedor que quieres enviar al tema de Pub/Sub o al conjunto de datos de BigQuery de las notificaciones.

Paso 1: Obtener el ID de origen

Usa la Google Cloud consola o Google Cloud CLI para obtener el ID de origen de un proveedor.

Consola

  1. Ve a la página Resultados de Security Command Center en la Google Cloud consola.
    Ve a la página Resultados
  2. Selecciona la organización para la que quieras crear un filtro de notificaciones. Se abrirá la página Resultados.
  3. En el panel Filtros rápidos, desplázate hacia abajo hasta la sección Nombre visible de la fuente y selecciona el nombre del proveedor que quieras usar para filtrar los resultados de las notificaciones.
  4. En la columna Categoría del panel Resultados de la consulta de detecciones, muestra el panel de detalles de la detección haciendo clic en el nombre de una de las detecciones.
  5. En el panel de detalles de los resultados, haga clic en la pestaña JSON. Se muestra el JSON completo del hallazgo.
  6. En el JSON, copie el valor del atributo parent. Por ejemplo:

    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID"

    Los IDs se representan de la siguiente manera:

    • ORGANIZATION_ID: el ID de la organización del proveedor de la fuente principal.
    • SOURCE_ID: el ID del proveedor de la fuente principal.

gcloud

Para obtener un ID de origen, ejecuta el siguiente comando:

  gcloud scc sources describe ORGANIZATION_ID --source-display-name="SOURCE_NAME"

Haz los cambios siguientes:

  • ORGANIZATION_ID: el ID de tu organización.
  • SOURCE_NAME: el nombre del servicio del que quieres obtener el ID de origen. Usa el nombre de cualquier proveedor de resultados, incluidos los servicios integrados de Security Command Center, Security Health Analytics, Web Security Scanner, Event Threat Detection y Container Threat Detection.

El resultado del comando de gcloud CLI es similar al siguiente e incluye el ID de la fuente:

 {
   "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
   "displayName": "example-source",
   "description": "A source that creates findings."
 }

A continuación, usa el ID de organización y el ID de fuente para crear un filtro de notificaciones.

Paso 2: Crear un filtro

Para crear un filtro de notificaciones, crea un nuevo NotificationConfig.

Puede añadir un filtro al archivo NotificationConfig para incluir o excluir una fuente específica:

  • Filtra los resultados para enviar notificaciones solo de la fuente especificada:

      state = \"ACTIVE\" AND parent = \"organizations/$ORGANIZATION_ID/sources/$SOURCE_ID\"
    
  • Filtra los resultados para enviar notificaciones de todas las fuentes excepto la fuente especificada:

      state = \"ACTIVE\" AND -parent = \"organizations/$ORGANIZATION_ID/sources/$SOURCE_ID\"
    

Para ver más ejemplos de filtros que puedes usar, consulta Listar resultados de seguridad con la API de Security Command Center.

Filtrar resultados por categoría y estado al usar temas de Pub/Sub

En las siguientes secciones se muestran ejemplos de cómo crear un filtro para fuentes y tipos de detecciones específicos, así como el mensaje de notificación que envía al tema de Pub/Sub.

Si usa conjuntos de datos de BigQuery en lugar de temas de Pub/Sub, las detecciones y los campos relacionados se describen en el artículo Exportar detecciones a BigQuery para analizarlas.

Security Health Analytics

En este ejemplo de Security Health Analytics se usan los siguientes filtros:

category = \"OPEN_FIREWALL\" AND state = \"ACTIVE\"

Para obtener más información sobre los tipos de resultados que genera Security Health Analytics, consulta la página Resultados de Security Health Analytics.

El mensaje de Pub/Sub de la notificación de resultados filtrados de Security Health Analytics tiene el siguiente aspecto:

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/security-health-analytics-active-findings",
   "finding": {
     "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
     "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
     "resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/,
     "state": "ACTIVE",
     "category": "OPEN_FIREWALL",
     "externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-icmp?project\u003PROJECT_ID",
     "sourceProperties": {
       "ReactivationCount": 0.0,
       "Allowed": "[{\"ipProtocol\":\"icmp\"}]",
       "WhitelistInstructions": "Add the security mark \"allow_open_firewall_rule\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
       "Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-icmp?project\u003PROJECT_ID",
       "AllowedIpRange": "All",
       "ActivationTrigger": "Allows all IP addresses",
       "SourceRange": "[\"0.0.0.0/0\"]",
       "ScanRunId": "2019-04-06T08:50:58.832-07:00",
       "SeverityLevel": "High",
       "ProjectId": "PROJECT_ID",
       "AssetCreationTime": "2019-03-28t17:58:54.409-07:00",
       "ScannerName": "FIREWALL_SCANNER",
       "Explanation": "Firewall rules that allow connections from all IP addresses or on all ports may expose resources to attackers."
     },
     "securityMarks": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
       "marks": {
         "sccquery152cd5aa66ea4bc8a672d8186a125580": "true",
         "sccquerya3cf2270123f4e91b84a3e613d2cac67": "true"
       }
     },
     "eventTime": "2019-09-22T21:26:57.189Z",
     "createTime": "2019-03-29T15:51:26.435Z"
   }
 }

Detección de anomalías

En este ejemplo de notificación de detección de anomalías se usan los siguientes filtros:

category = \"resource_involved_in_coin_mining\" AND state = \"ACTIVE\"

Para obtener más información sobre los tipos de resultados que genera Detección de anomalías, consulta la página Ver vulnerabilidades y amenazas.

El mensaje de Pub/Sub de la notificación de resultados filtrados de detección de anomalías tiene el siguiente aspecto:

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/cloud-anomaly-detection-active-findings",
   "finding": {
     "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
     "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
     "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
     "state": "ACTIVE",
     "category": "resource_involved_in_coin_mining",
     "sourceProperties": {
       "vm_ips": "35.231.191.191",
       "end_time_usec": "1569003180000000",
       "abuse_target_ips": "54.38.176.231",
       "end_datetime_UTC": "2019-09-20 18:13:00 UTC",
       "urls": "swap2.luckypool.io, bitcash.luckypool.io",
       "vm_host_and_zone_names": "ubuntu-1804-tp100-gminer:us-east1-b",
       "finding_type": "Abuse originating from a resource in your organization.",
       "start_time_usec": "1569002700000000",
       "action_taken": "Notification sent",
       "summary_message": "We have recently detected activity on your Google Cloud Platform/APIs project that violates our Terms of Service or Acceptable Use Policy.",
       "start_datetime_UTC": "2019-09-20 18:05:00 UTC"
     },
     "securityMarks": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
       "marks": {
         "teste123": "true",
         "sccquery94c23b35ea0b4f8388268415a0dc6c1b": "true"
       }
     },
     "eventTime": "2019-09-20T18:59:00Z",
     "createTime": "2019-05-16T14:16:35.674Z"
   }
 }

Event Threat Detection

En este ejemplo de Event Threat Detection se usan los siguientes filtros:

category = \"Persistence: Iam Anomalous Grant\" AND state = \"ACTIVE\"

Para obtener más información sobre los tipos de detecciones que crea Event Threat Detection, consulta la página Ver vulnerabilidades y amenazas.

El mensaje de Pub/Sub de la notificación de resultados filtrados de Event Threat Detection tiene el siguiente aspecto:

{
  "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/event-threat-detection-active-findings",
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "resourceName": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
    "state": "ACTIVE",
    "category": "Persistence: IAM Anomalous Grant",
    "sourceProperties": {
      "sourceId": {
        "organizationNumber": "ORGANIZATION_ID",
        "customerOrganizationNumber": "ORGANIZATION_ID"
      },
      "detectionCategory": {
        "technique": "persistence",
        "indicator": "audit_log",
        "ruleName": "iam_anomalous_grant",
        "subRuleName": "external_member_added_to_policy"
      },
      "detectionPriority": "HIGH",
      "evidence": [{
        "sourceLogId": {
          "timestamp": {
            "seconds": "1601066317",
            "nanos": 4.63E8
          },
          "insertId": "INSERT_ID"
        }
      }],
      "properties": {
        "sensitiveRoleGrant": {
          "principalEmail": "PRINCIPAL_EMAIL@gmail.com",
          "bindingDeltas": [{
            "action": "ADD",
            "role": "roles/owner",
            "member": "user:USER_EMAIL@gmail.com"
          }, {
            "action": "REMOVE",
            "role": "roles/viewer",
            "member": "user:USER_EMAIL@gmail.com"
          }],
          "members": ["USER_EMAIL@gmail.com"]
        }
      },
      "findingId": "FINDING_ID"
    },
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "2020-09-25T20:38:39.441Z",
    "createTime": "2020-09-25T20:38:40.667Z"
  }
}

Protección de datos sensibles

En este ejemplo de Protección de Datos Sensibles se usan los siguientes filtros:

category = \"CREDIT_CARD_NUMBER\" AND state = \"ACTIVE\"

Para obtener más información sobre los tipos de detecciones que crea Event Threat Detection, consulta la página Ver vulnerabilidades y amenazas.

El mensaje de Pub/Sub de la notificación de hallazgo filtrado de Protección de Datos Sensibles tiene el siguiente aspecto:

{
   "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/dlp-data-discovery-active-findings",
   "finding": {
     "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
     "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
     "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
     "state": "ACTIVE",
     "category": "CREDIT_CARD_NUMBER",
     "externalUri": "https://console.cloud.google.com/dlp/projects/PROJECT_ID/dlpJobs/i-7536622736814356939;source\u003d5",
     "sourceProperties": {
       "COUNT": 2.0,
       "JOB_NAME": "projects/PROJECT_ID/dlpJobs/i-7536622736814356939",
       "FULL_SCAN": false
     },
     "securityMarks": {
       "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
       "marks": {
         "priority": "p1",
         "sccquerya3cf2270123f4e91b84a3e613d2cac67": "true"
       }
     },
     "eventTime": "2019-09-16T23:21:19.650Z",
     "createTime": "2019-04-22T23:18:17.731Z"
   }
 }

Siguientes pasos