Filtra notificaciones

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

  • parent
  • state
  • resource_name
  • category
  • source_properties
  • security_marks

También puedes usar operadores estándar como parte de la string de filtro:

  • AND para incluir campos que contengan todo un conjunto de valores
  • OR para incluir campos que contengan 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\"

Configura un filtro fuente

Cada resultado de Security Command Center incluye el ID de origen del proveedor de fuentes de seguridad. Por ejemplo, un resultado de las estadísticas del estado de la seguridad incluye un ID de origen que es único para ellas. El ID de fuente se usa en un filtro NotificationConfig para especificar los resultados del proveedor que deseas enviar al tema de notificaciones de Pub/Sub o al conjunto de datos de BigQuery.

Paso 1: Obtén el ID de la fuente

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

Consola

  1. Ve a la pestaña Resultados de Security Command Center en la consola de Google Cloud.
    Ir a la página Resultados
  2. Selecciona la organización para la que deseas 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 deseas usar para filtrar los resultados de las notificaciones.
  4. En la columna Category del panel Findings query results, para mostrar el panel de detalles del resultado, haz clic en el nombre de uno de ellos.
  5. En el panel de detalles de los resultados, haz clic en la pestaña JSON. Se mostrará el JSON completo para el resultado.
  6. En el JSON, copia el valor del atributo parent. Por ejemplo:

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

    Los IDs se representan de la siguiente manera:

    • ORGANIZATION_ID: Es el ID de la organización del proveedor de origen superior.
    • SOURCE_ID: Es el ID del proveedor de origen superior.

gcloud

Para recuperar un ID de la fuente, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • ORGANIZATION_ID: Es el ID de tu organización.
  • SOURCE_NAME: El nombre del servicio para el que deseas el ID de origen. Usa el nombre de cualquier proveedor de resultados, incluidos los servicios integrados de Security Command Center, las estadísticas del estado de la seguridad, Web Security Scanner, Event Threat Detection y Container Threat Detection.

El resultado del comando de la CLI de gcloud se parece al siguiente y también incluye el ID de origen:

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

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

Paso 2: Crea un filtro

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

Puedes agregar un filtro al archivo NotificationConfig para incluir o excluir una fuente específica:

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

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

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

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

Filtra los resultados por categoría y estado cuando usas temas de Pub/Sub

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

Si usas conjuntos de datos de BigQuery en lugar de temas de Pub/Sub, los resultados y los campos relacionados se describen en Exporta resultados a BigQuery para su análisis.

Security Health Analytics

En este ejemplo de las estadísticas del estado de seguridad, se usan los siguientes filtros:

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

Para obtener más información sobre los tipos de resultados que crea las estadísticas del estado de la seguridad, consulta la página Resultados de las estadísticas del estado de la seguridad.

El mensaje de Pub/Sub para las notificaciones de resultados de las estadísticas del estado de seguridad se ve de la siguiente manera:

{
   "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 crea la detección de anomalías, consulta la página Visualiza vulnerabilidades y amenazas.

El mensaje de Pub/Sub para la notificación de resultado filtrado de detección de anomalías se ve de la siguiente manera:

{
   "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": {                                                                                                                                                                                             "triage": "required",
         "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 hallazgos que crea la Detección de eventos de amenazas, consulta la página Cómo ver vulnerabilidades y amenazas.

El mensaje de Pub/Sub para la notificación del resultado filtrado 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"
  }
}

Seguridad de Foresti

Este ejemplo de Forseti usa los siguientes filtros:

category = \"FIREWALL_BLACKLIST_VIOLATION\" AND state = \"ACTIVE\"

Para obtener más información sobre los tipos de resultados que crea Forseti, visita el sitio web de Forseti).

El mensaje de Pub/Sub para la notificación de resultado filtrado de Forseti se ve de la siguiente manera:

{
  "notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/forseti-firewall-denylist-active-findings",
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "resourceName": "organization/ORGANIZATION_ID/project/PROJECT_ID/firewall/firewall-id/",
    "state": "ACTIVE",
    "category": "FIREWALL_BLACKLIST_VIOLATION",
    "sourceProperties": {
      "scanner_index_id": 6554388765422,
      "resource_id": "PROJECT_ID",
      "db_source": "table:violations/id:10127",
      "inventory_index_id": 1569189610158079,
      "resource_type": "firewall",
      "rule_index": 1,
      "source": "FORSETI",
      "resource_data": "{\"allowed\": [{\"IPProtocol\": \"ah\"}, {\"IPProtocol\": \"esp\"}, {\"IPProtocol\": \"icmp\"}, {\"IPProtocol\": \"sctp\"}, {\"IPProtocol\": \"tcp\"}, {\"IPProtocol\": \"udp\"}], \"direction\": \"INGRESS\", \"name\": \"gke-range-cluster-890sad\", \"network\": \"https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default\", \"priority\": 1000, \"sourceRanges\": [\"10.48.0.0/14\"], \"targetTags\": [\"gke-firing-range-cluster-73d1fcce-node\"]}",
      "rule_name": "disallow_all_ports",
      "violation_data": "{\"policy_names\": [\"gke-range-cluster-890sad\"], \"recommended_actions\": {\"DELETE_FIREWALL_RULES\": [\"gke-range-cluster-890sad\"]}}"
    },
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
      "marks": {
        "priority": "p1"
      }
    },
    "eventTime": "2019-09-22T22:03:58Z",
    "createTime": "2019-08-14T02:19:58.218Z"
  }
}

Sensitive Data Protection

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 hallazgos que crea la Detección de eventos de amenazas, consulta la página Cómo ver vulnerabilidades y amenazas.

El mensaje de Pub/Sub para la notificación de búsqueda filtrada de la protección de datos sensibles se ve de la siguiente manera:

{
   "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"
   }
 }

¿Qué sigue?