Filtrer les notifications

Cette page présente des exemples de filtres que vous pouvez utiliser avec la fonctionnalité de notifications de l'API Security Command Center, ainsi que les messages qu'elle exporte vers Pub/Sub ou BigQuery. Vous pouvez filtrer les notifications en fonction de n'importe quel champ de résultat, y compris :

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

Vous pouvez également utiliser des opérateurs standards dans la chaîne de filtre :

  • AND pour inclure des champs contenant un ensemble de valeurs entier
  • OR pour inclure des champs contenant un des ensembles de valeurs entier
  • - pour exclure les champs contenant une valeur spécifique
  • Les parenthèses permettent de regrouper un ensemble de valeurs, par exemple :

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

Configurer un filtre source

Chaque résultat de Security Command Center inclut l'ID source du fournisseur de source de sécurité. Par exemple, un résultat de Security Health Analytics inclut un ID source propre à cette analyse. L'ID source est utilisé dans un filtre NotificationConfig pour spécifier les résultats du fournisseur que vous souhaitez envoyer au sujet Pub/Sub des notifications ou à l'ensemble de données BigQuery.

Étape 1 : Obtenir l'ID source

Utilisez Google Cloud Console ou Google Cloud CLI pour obtenir l'ID source d'un fournisseur.

Console

  1. Accédez à la page Résultats de Security Command Center dans Google Cloud Console.
    Accéder à la page Résultats
  2. Sélectionnez l'organisation pour laquelle vous souhaitez créer un filtre de notifications. La page Résultats s'ouvre.
  3. Dans le panneau QuickFilters (Filtres rapides), faites défiler la page jusqu'à la section Source display name (Nom à afficher de la source), puis sélectionnez le nom du fournisseur que vous souhaitez utiliser pour filtrer les résultats des notifications.
  4. Dans la colonne Catégorie du panneau Résultats de la requête de résultats, affichez le panneau des détails du résultat en cliquant sur le nom de l'un des résultats.
  5. Dans le panneau des détails des résultats, cliquez sur l'onglet JSON. Le fichier JSON complet du résultat s'affiche.
  6. Dans le fichier JSON, copiez la valeur de l'attribut parent. Exemple :

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

    Les ID sont représentés par les éléments suivants:

    • ORGANIZATION_ID: ID de l'organisation du fournisseur source parent.
    • SOURCE_ID: ID du fournisseur source parent.

gcloud

Pour récupérer un ID source, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • ORGANIZATION_ID : ID de votre organisation
  • SOURCE_NAME : nom du service pour lequel vous souhaitez obtenir l'ID source. Utilisez le nom de n'importe quel fournisseur de résultats, y compris les services intégrés de Security Command Center, Security Health Analytics, Web Security Scanner, Event Threat Detection et Container Threat Detection.

Le résultat de la commande de gcloud CLI ressemble à ce qui suit et inclut l'ID source :

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

Ensuite, utilisez l'ID de l'organisation et l'ID source pour créer un filtre de notifications.

Étape 2 : Créer un filtre

Pour créer un filtre de notifications, créez un objet NotificationConfig.

Vous pouvez ajouter un filtre au fichier NotificationConfig pour inclure ou exclure une source spécifique :

  • Filtrez les résultats pour envoyer des notifications de la source spécifiée uniquement :

      state = \"ACTIVE\" AND parent = \"organizations/$ORGANIZATION_ID/sources/$SOURCE_ID\"
    
  • Filtrez les résultats pour envoyer des notifications à partir de toutes les sources, à l'exception de la source spécifiée :

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

Pour plus d'exemples de filtres que vous pouvez utiliser, consultez la section Répertorier les résultats de sécurité à l'aide de l'API Security Command Center.

Filtrer les résultats par catégorie et par état lors de l'utilisation de sujets Pub/Sub

Les sections suivantes fournissent des exemples de création de filtre pour des sources et des types de résultats spécifiques, ainsi que le message de notification envoyé à votre thème Pub/Sub.

Si vous utilisez des ensembles de données BigQuery au lieu de sujets Pub/Sub, les résultats et les champs associés sont décrits dans l'article Exporter les résultats vers BigQuery pour l'analyse.

Security Health Analytics

Cet exemple Security Health Analytics utilise les filtres suivants :

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

Pour en savoir plus sur les types de résultats générés par Security Health Analytics, consultez la page Résultats de Security Health Analytics.

Le message Pub/Sub associé à la notification de résultat filtré Security Health Analytics se présente comme suit :

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

Détection d'anomalies

Cet exemple de notification de détection d'anomalies utilise les filtres suivants :

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

Pour en savoir plus sur les types de résultats créés par la détection d'anomalies, consultez la page Afficher les failles et les menaces.

Le message Pub/Sub associé à la notification de résultat filtré Détection d'anomalies se présente comme suit :

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

Cet exemple Event Threat Detection utilise les filtres suivants :

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

Pour plus d'informations sur les types de résultats créés par Cloud DLP, consultez la page Afficher les failles et les menaces.

Le message Pub/Sub de la notification de résultat filtré Event Threat Detection se présente comme suit :

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

Forseti Security

Cet exemple Forseti utilise les filtres suivants :

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

Pour plus d'informations sur les types de résultats créés par Forseti, consultez le site Web de Forseti.

Le message Pub/Sub de la notification de résultats filtrés Forseti se présente comme suit :

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

Protection des données sensibles

Cet exemple de protection des données sensibles utilise les filtres suivants:

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

Pour plus d'informations sur les types de résultats créés par Cloud DLP, consultez la page Afficher les failles et les menaces.

Le message Pub/Sub de la notification de résultat filtrée pour la protection des données sensibles se présente comme suit:

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

Étapes suivantes