알림 필터링

이 페이지에서는 Security Command Center API 알림 기능에 사용할 수 있는 필터의 예시와 Pub/Sub 또는 BigQuery로 내보내는 메시지에 대해 설명합니다. 다음을 포함한 발견 항목 필드로 알림을 필터링할 수 있습니다.

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

표준 연산자를 필터 문자열의 일부로 사용할 수도 있습니다.

  • 모든 값 집합을 포함한 필드를 포함하기 위한 AND
  • 값 집합 중 하나를 포함한 필드를 포함하기 위한 OR
  • 특정 값을 포함한 필드를 제외하기 위한 -
  • 값 집합을 그룹화하는 괄호로 예를 들면 다음과 같습니다.

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

소스 필터 설정

모든 Security Command Center 발견 항목에는 보안 소스 제공업체의 소스 ID가 포함됩니다. 예를 들어 Security Health Analytics의 발견 항목에는 Security Health Analytics의 고유한 소스 ID가 포함됩니다. 소스 ID는 NotificationConfig 필터에서 알림 Pub/Sub 주제나 BigQuery 데이터 세트로 전송하려는 제공업체 발견 항목을 지정하는 데 사용됩니다.

1단계: 소스 ID 가져오기

Google Cloud Console 또는 Google Cloud CLI를 사용하여 제공업체의 소스 ID를 가져옵니다.

콘솔

  1. Google Cloud 콘솔에서 Security Command Center 발견 항목 페이지로 이동합니다.
    발견 항목 페이지로 이동
  2. 알림 필터를 만들려는 조직을 선택합니다. 발견 항목 페이지가 열립니다.
  3. 빠른 필터 패널에서 소스 표시 이름 섹션까지 아래로 스크롤하여 알림 결과를 필터링하는 데 사용할 제공업체의 이름을 선택합니다.
  4. 발견 항목 쿼리 결과 패널의 카테고리 열에서 발견 항목 중 하나의 이름을 클릭하여 발견 항목 세부정보 패널을 표시합니다.
  5. 발견 항목 세부정보 패널에서 JSON 탭을 클릭합니다. 발견 항목의 전체 JSON이 표시됩니다.
  6. 대화상자에서 parent 속성 값을 복사합니다. 예를 들면 다음과 같습니다.

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

    ID는 다음과 같이 표시됩니다.

    • ORGANIZATION_ID: 상위 소스 제공업체의 조직의 ID
    • SOURCE_ID: 상위 소스 제공업체의 ID

gcloud

소스 ID를 검색하려면 다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 ID입니다.
  • SOURCE_NAME: 소스 ID를 가져올 서비스의 이름입니다. Security Command Center의 기본 제공 서비스, Security Health Analytics, Web Security Scanner, Event Threat Detection, Container Threat Detection를 포함하여 모든 발견 항목 공급업체의 이름을 사용합니다.

gcloud CLI 명령어 출력은 다음과 비슷하고 소스 ID를 포함합니다.

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

그런 다음 조직 ID와 소스 ID를 사용하여 알림 필터를 만듭니다.

2단계: 필터 만들기

알림 필터를 만들려면 새 NotificationConfig만듭니다.

NotificationConfig 파일에 필터를 추가하여 특정 소스를 포함하거나 제외할 수 있습니다.

  • 지정된 소스에서만 알림을 보내려면 발견 항목을 필터링합니다.

      state = \"ACTIVE\" AND parent = \"organizations/$ORGANIZATION_ID/sources/$SOURCE_ID\"
    
  • 지정된 소스를 제외한 모든 소스의 알림을 보내기 위해 발견 항목을 필터링합니다.

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

사용할 수 있는 필터의 추가 예시는 Security Command Center API를 사용하여 보안 발견 항목 나열을 참조하세요.

Pub/Sub 주제를 사용할 때 카테고리와 상태를 기준으로 발견 항목 필터링

다음 섹션에서는 특정 소스 및 발견 항목 유형에 대한 필터를 만드는 방법과 Pub/Sub 주제로 전송하는 알림 메시지를 예시로 보여줍니다.

Pub/Sub 주제 대신 BigQuery 데이터 세트를 사용하는 경우 발견 항목과 관련 필드는 분석을 위해 BigQuery로 결과 내보내기에 설명되어 있습니다.

Security Health Analytics

이 Security Health Analytics 예시에서는 다음 필터를 사용합니다.

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

Security Health Analytics가 생성하는 발견 항목 유형에 대한 자세한 내용은 Security Health Analytics 발견 항목 페이지를 참조하세요.

Security Health Analytics 필터링된 발견 항목 알림의 Pub/Sub 메시지는 다음과 같습니다.

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

이상 감지

이 이상 감지 알림 예시에서는 다음 필터를 사용합니다.

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

이상 감지로 생성되는 발견 항목의 유형에 대한 자세한 내용은 취약점 및 위협 보기 페이지를 참조하세요.

이상 감지 필터링된 발견 항목 알림의 Pub/Sub 메시지는 다음과 같습니다.

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

Event Threat Detection 예시에서는 다음 필터를 사용합니다.

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

Event Threat Detection으로 생성되는 발견 항목의 유형에 대한 자세한 내용은 취약점 및 위협 보기 페이지를 참조하세요.

Event Threat Detection 필터링된 발견 항목 알림의 Pub/Sub 메시지는 다음과 같습니다.

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

이 Forseti 예시에서는 다음 필터를 사용합니다.

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

Forseti가 만드는 발견 항목의 유형에 대한 자세한 내용은 Forseti 웹사이트를 참조하세요.)

Forseti 필터링된 발견 항목 알림의 Pub/Sub 메시지는 다음과 같습니다.

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

민감한 정보 보호

이 민감한 정보 보호 예시에서는 다음 필터를 사용합니다.

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

Event Threat Detection으로 생성되는 발견 항목의 유형에 대한 자세한 내용은 취약점 및 위협 보기 페이지를 참조하세요.

민감한 정보 보호 필터링 발견 항목 알림의 Pub/Sub 메시지는 다음과 같습니다.

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

다음 단계