From bdd0bc07e420f69c51de8d288ace53a8333e61e7 Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Thu, 10 Jul 2025 17:13:38 +0530 Subject: [PATCH 1/7] Google Cloud Security Command Center (Apps) --- blog-service/2025-07-14-apps.md | 12 + cid-redirects.json | 1 + .../google/cloud-security-command-center.md | 536 ++++++++++++++++++ docs/integrations/google/index.md | 6 + .../product-list/product-list-a-l.md | 2 +- .../zimperium-mtd-source.md | 104 ++++ sidebars.ts | 1 + .../google-cloud-security-command-center.png | Bin 0 -> 104410 bytes 8 files changed, 661 insertions(+), 1 deletion(-) create mode 100644 blog-service/2025-07-14-apps.md create mode 100644 docs/integrations/google/cloud-security-command-center.md create mode 100644 docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/zimperium-mtd-source.md create mode 100644 static/img/integrations/google/google-cloud-security-command-center.png diff --git a/blog-service/2025-07-14-apps.md b/blog-service/2025-07-14-apps.md new file mode 100644 index 0000000000..285d2581da --- /dev/null +++ b/blog-service/2025-07-14-apps.md @@ -0,0 +1,12 @@ +--- +title: Google Cloud Security Command Center (Apps) +image: https://help.sumologic.com/img/sumo-square.png +keywords: + - apps + - cloud-security-command-center +hide_table_of_contents: true +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +We're excited to introduce the new Google Cloud Security Command Center app for Sumo Logic. This app enables you to analyze, monitor, and respond effectively to security issues, helping you to improve cloud security, reduce risk, and maintain compliance. [Learn more](/docs/integrations/google/cloud-security-command-center/). diff --git a/cid-redirects.json b/cid-redirects.json index 8899a1528a..13a0789f68 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -2899,6 +2899,7 @@ "/cid/21035": "/docs/integrations/google/cloud-traffic-director", "/cid/21036": "/docs/integrations/google/cloud-vertex-ai", "/cid/21037": "/docs/integrations/google/cloud-vpn", + "/cid/21039": "/docs/integrations/google/cloud-security-command-center", "/cid/21097": "/docs/integrations/saas-cloud/confluent-cloud", "/cid/21040": "/docs/manage/manage-subscription/create-and-manage-orgs/create-manage-orgs-service-providers", "/cid/21038": "/docs/integrations/containers-orchestration/vmware-tanzu-application-service", diff --git a/docs/integrations/google/cloud-security-command-center.md b/docs/integrations/google/cloud-security-command-center.md new file mode 100644 index 0000000000..c6104cb541 --- /dev/null +++ b/docs/integrations/google/cloud-security-command-center.md @@ -0,0 +1,536 @@ +--- +id: cloud-security-command-center +title: Google Cloud Security Command Center +sidebar_label: Google Cloud Security Command Center +description: The Sumo Logic app for Google Cloud Security Command Center helps you to monitor, investigate, and respond effectively to security issues, helping you to improve cloud security, reduce risk, and maintain compliance. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +thumbnail icon + +The Sumo Logic App for Google Cloud Security Command Center (SCC) provides real-time visibility into cloud risks, including misconfigurations, threats, and vulnerabilities in Google Cloud environments. It features dashboards that highlight high-priority security findings, such as privileged account issues, API misuse, software vulnerabilities, severity breakdowns, resource and project-level filtering, and detailed summaries to streamline triage and remediation workflows. This enables you to monitor, investigate, and respond effectively to improve cloud security, reduce risk, and maintain compliance. + +:::info +This app includes [built-in monitors](#google-cloud-security-command-center-alerts). For details on creating custom monitors, refer to [Create monitors for Google Cloud Security Command Center app](#create-monitors-for-google-cloud-security-command-center-app). +::: + +## Log types + +This App uses [Findings](https://cloud.google.com/security-command-center/docs/finding-classes) generated by [Security Command Center](https://cloud.google.com/security-command-center/docs/security-command-center-overview). + +### Sample log message + +
+Misconfigurations + +```json +{ + "message": { + "data": { + "notificationConfigName": "projects/175089404040/locations/global/notificationConfigs/Sumo-export", + "finding": { + "name": "organizations/175089404094/sources/1750894040375988750/locations/global/findings/1750894040375598723", + "canonicalName": "projects/175089404040/sources/1750894040375988750/locations/global/findings/1750894040375598723", + "parent": "organizations/175089404094/sources/1750894040375988750/locations/global", + "resourceName": "//container.googleapis.com/projects/prod-backend-infra/locations/europe-west3-a/clusters/k8sng-79-gke1-32-otc-dev-v4-a2a460d400a0", + "state": "ACTIVE", + "category": "GKE_PRIVILEGE_ESCALATION", + "externalUri": "https://provides-homeland.gl.at.ply.gg/kubernetes/security/dashboard?project=prod-backend-infra", + "securityMarks": { + "name": "organizations/175089404094/sources/1750894040375988750/locations/global/findings/1750894040375598723/securityMarks" + }, + "eventTime": "2025-06-25T16:27:20-070003055Z", + "createTime": "2025-06-25T16:27:20.375Z", + "severity": "MEDIUM", + "mute": "UNDEFINED", + "findingClass": "MISCONFIGURATION", + "muteUpdateTime": "2025-06-25T16:27:20Z", + "parentDisplayName": "GKE Security Posture", + "description": "A container can be explicitly configured to allow privilege escalation on execution. This permits a process created within the container by executing a set-user-id, set-group-id, or file capability executable to gain the privileges specified by the executable. The lack of preventive security control increases the risk of container escape.", + "nextSteps": "**Apply the following steps to your affected workloads:**\n1. Open the manifest for each affected workload.\n2. Set the following restricted fields to one of the allowed values:\n\n**Restricted Fields**\n- spec.containers[*].securityContext.allowPrivilegeEscalation\n- spec.initContainers[*].securityContext.allowPrivilegeEscalation\n- spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation\n\n**Allowed Values**\n- false\n", + "kubernetes": { + "objects": [ + { + "kind": "StatefulSet", + "ns": "demo-nginx-docker", + "name": "nginx" + } + ] + }, + "muteInfo": { + "staticMute": { + "state": "UNDEFINED", + "applyTime": "2025-06-25T16:27:20Z" + } + } + }, + "resource": { + "name": "//container.googleapis.com/projects/prod-backend-infra/locations/europe-west3-a/clusters/k8sng-79-gke1-32-otc-dev-v4-a2a460d400a0", + "displayName": "k8sng-79-gke1-32-otc-dev-v4-a2a460d400a0", + "type": "google.container.Cluster", + "cloudProvider": "GOOGLE_CLOUD_PLATFORM", + "service": "container.googleapis.com", + "location": "europe-west3-a", + "gcpMetadata": { + "project": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "projectDisplayName": "prod-backend-infra", + "parent": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "parentDisplayName": "prod-backend-infra", + "folders": [ + { + "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/175089404055", + "resourceFolderDisplayName": "Product Team" + } + ], + "organization": "organizations/175089404094" + }, + "resourcePath": { + "nodes": [ + { + "nodeType": "GCP_PROJECT", + "id": "projects/175089404040", + "displayName": "prod-backend-infra" + }, + { + "nodeType": "GCP_FOLDER", + "id": "folders/175089404055", + "displayName": "Product Team" + }, + { + "nodeType": "GCP_ORGANIZATION", + "id": "organizations/175089404094" + } + ] + }, + "resourcePathString": "organizations/175089404094/folders/175089404055/projects/175089404040" + } + }, + "messageId": "17508940403752739", + "message_id": "17508940403752739", + "publishTime": "2025-06-25T16:27:20.375Z", + "publish_time": "2025-06-25T16:27:20.375Z" + }, + "subscription": "projects/prod-backend-infra/subscriptions/scc" +} +``` +
+ +
+Threat + +```json +{ + "message": { + "data": { + "notificationConfigName": "projects/175089404040/locations/global/notificationConfigs/Sumo-export", + "finding": { + "name": "organizations/175089404094/sources/1750894040330370653/locations/global/findings/bb7f1949a4044d38a5b1dd7e47676113", + "canonicalName": "projects/175089404040/sources/1750894040330370653/locations/global/findings/bb7f1949a4044d38a5b1dd7e47676113", + "parent": "organizations/175089404094/sources/1750894040330370653/locations/global", + "resourceName": "//container.googleapis.com/projects/prod-backend-infra/locations/europe-west2-a/clusters/devclust-gke-otc-rel-v4-ac141583d8a4", + "state": "ACTIVE", + "category": "Persistence: New API Method", + "sourceProperties": { + "sourceId": { + "projectNumber": "175089404040", + "customerOrganizationNumber": "175089404094" + }, + "detectionCategory": { + "technique": "persistence", + "indicator": "audit_log", + "ruleName": "anomalous_behavior", + "subRuleName": "new_api_method" + }, + "detectionPriority": "LOW", + "affectedResources": [ + { + "gcpResourceName": "//k8s.io/rbac.authorization.k8s.io/v1/namespaces/kube-system/roles/container-watcher-status-reporter" + }, + { + "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/175089404040" + } + ], + "evidence": [ + { + "sourceLogId": { + "projectId": "prod-backend-infra", + "resourceContainer": "projects/prod-backend-infra", + "timestamp": { + "seconds": 1750894040, + "nanos": 5.33346E8 + }, + "insertId": "c4bc72fe-2e35-4c1d-a188-fcc812ab3822", + "logId": "cloudaudit.googleapis.com/activity" + } + } + ], + "properties": { + "newApiMethod": { + "newApiMethod": { + "serviceName": "k8s.io", + "methodName": "io.k8s.authorization.rbac.v1.roles.delete" + }, + "principalEmail": "service-project-175089404040@gcp-sa-ktd-hpsa.iam.gserviceaccount.com", + "callerIp": "147.45.44.104", + "callerUserAgent": "Google-KTD-Control", + "resourceContainer": "projects/175089404040" + } + }, + "findingId": "bb7f1949a4044d38a5b1dd7e47676113", + "contextUris": { + "mitreUri": { + "displayName": "MITRE Link", + "url": "https://rofl13.no-ip.biz/tactics/TA0003/" + }, + "cloudLoggingQueryUri": [ + { + "displayName": "Cloud Logging Query Link", + "url": "https://rofl13.no-ip.biz/logs/query;query=timestamp%3D%222025-06-25T16:27:20-070046Z%22%0AinsertId%3D%22c4bc72fe-2e35-4c1d-a188-fcc812ab3822%22?project=prod-backend-infra" + } + ], + "relatedFindingUri": { + + } + } + }, + "securityMarks": { + "name": "organizations/175089404094/sources/1750894040330370653/locations/global/findings/bb7f1949a4044d38a5b1dd7e47676113/securityMarks" + }, + "eventTime": "2025-06-25T16:27:20-070057Z", + "createTime": "2025-06-25T16:27:20.329Z", + "severity": "CRITICAL", + "mute": "UNDEFINED", + "findingClass": "THREAT", + "muteUpdateTime": "2025-06-25T16:27:20Z", + "mitreAttack": { + "primaryTactic": "PERSISTENCE" + }, + "access": { + "principalEmail": "service-project-175089404040@gcp-sa-ktd-hpsa.iam.gserviceaccount.com", + "callerIp": "147.45.44.104", + "callerIpGeo": { + + }, + "userAgent": "Google-KTD-Control", + "serviceName": "k8s.io", + "methodName": "io.k8s.authorization.rbac.v1.roles.delete" + }, + "parentDisplayName": "Event Threat Detection", + "logEntries": [ + { + "cloudLoggingEntry": { + "insertId": "c4bc72fe-2e35-4c1d-a188-fcc812ab3822", + "logId": "cloudaudit.googleapis.com/activity", + "resourceContainer": "projects/prod-backend-infra", + "timestamp": "2025-06-25T16:27:20-070046Z" + } + } + ], + "muteInfo": { + "staticMute": { + "state": "UNDEFINED", + "applyTime": "2025-06-25T16:27:20Z" + } + } + }, + "resource": { + "name": "//container.googleapis.com/projects/prod-backend-infra/locations/europe-west2-a/clusters/devclust-gke-otc-rel-v4-ac141583d8a4", + "displayName": "devclust-gke-otc-rel-v4-ac141583d8a4", + "type": "google.container.Cluster", + "cloudProvider": "GOOGLE_CLOUD_PLATFORM", + "service": "container.googleapis.com", + "location": "europe-west2-a", + "gcpMetadata": { + "project": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "projectDisplayName": "prod-backend-infra", + "parent": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "parentDisplayName": "prod-backend-infra", + "folders": [ + { + "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/175089404055", + "resourceFolderDisplayName": "Product Team" + } + ], + "organization": "organizations/175089404094" + }, + "resourcePath": { + "nodes": [ + { + "nodeType": "GCP_PROJECT", + "id": "projects/175089404040", + "displayName": "prod-backend-infra" + }, + { + "nodeType": "GCP_FOLDER", + "id": "folders/175089404055", + "displayName": "Product Team" + }, + { + "nodeType": "GCP_ORGANIZATION", + "id": "organizations/175089404094" + } + ] + }, + "resourcePathString": "organizations/175089404094/folders/175089404055/projects/175089404040" + } + }, + "messageId": "17508940403301574", + "message_id": "17508940403301574", + "publishTime": "2025-06-25T16:27:20.329Z", + "publish_time": "2025-06-25T16:27:20.329Z" + }, + "subscription": "projects/prod-backend-infra/subscriptions/scc" +} +``` +
+ +
+Vulnerability + +```json +{ + "message": { + "data": { + "notificationConfigName": "projects/175089404040/locations/global/notificationConfigs/Sumo-export", + "finding": { + "name": "organizations/175089404094/sources/1750894040384815997/locations/global/findings/20ffcd76a0dd9628d7fe8d27c1b55c19", + "canonicalName": "projects/175089404040/sources/1750894040384815997/locations/global/findings/20ffcd76a0dd9628d7fe8d27c1b55c19", + "parent": "organizations/175089404094/sources/1750894040384815997/locations/global", + "resourceName": "//compute.googleapis.com/projects/prod-backend-infra/zones/us-central1-a/instances/dgarbacz-linux", + "state": "ACTIVE", + "category": "SOFTWARE_VULNERABILITY", + "securityMarks": { + "name": "organizations/175089404094/sources/1750894040384815997/locations/global/findings/20ffcd76a0dd9628d7fe8d27c1b55c19/securityMarks" + }, + "eventTime": "2025-06-25T16:27:20-070077141Z", + "createTime": "2025-06-25T16:27:20.384Z", + "severity": "HIGH", + "mute": "UNDEFINED", + "findingClass": "VULNERABILITY", + "vulnerability": { + "cve": { + "id": "CVE-2023-33953", + "references": [ + { + "source": "More Info", + "uri": "https://world-training.gl.at.ply.gg/tracker/CVE-2023-33953" + }, + { + "source": "More Info", + "uri": "https://world-training.gl.at.ply.gg/vuln/detail/CVE-2023-33953" + }, + { + "source": "More Info", + "uri": "https://world-training.gl.at.ply.gg/security/cve/CVE-2023-33953" + } + ], + "cvssv3": { + "baseScore": 7.5, + "attackVector": "ATTACK_VECTOR_NETWORK", + "attackComplexity": "ATTACK_COMPLEXITY_LOW", + "privilegesRequired": "PRIVILEGES_REQUIRED_NONE", + "userInteraction": "USER_INTERACTION_NONE", + "scope": "SCOPE_UNCHANGED", + "confidentialityImpact": "IMPACT_NONE", + "integrityImpact": "IMPACT_NONE", + "availabilityImpact": "IMPACT_HIGH" + }, + "upstreamFixAvailable": true, + "impact": "MEDIUM", + "exploitationActivity": "NO_KNOWN", + "exploitReleaseDate": "2025-06-25T16:27:20Z", + "firstExploitationDate": "2025-06-25T16:27:20Z" + }, + "offendingPackage": { + "packageName": "grpcio", + "cpeUri": "cpe:/a:ghsa:pip", + "packageType": "PYPI", + "packageVersion": "1.54.0" + }, + "fixedPackage": { + "packageName": "grpcio", + "cpeUri": "cpe:/a:ghsa:pip", + "packageType": "PYPI", + "packageVersion": "1.54.3" + }, + "securityBulletin": { + "submissionTime": "2025-06-25T16:27:20Z" + } + }, + "muteUpdateTime": "2025-06-25T16:27:20Z", + "parentDisplayName": "Vulnerability Assessment", + "description": "gRPC contains a vulnerability that allows hpack table accounting errors could lead to unwanted disconnects between clients and servers in exceptional cases/ Three vectors were found that allow the following DOS attacks:\n\n- Unbounded memory buffering in the HPACK parser\n- Unbounded CPU consumption in the HPACK parser\n\nThe unbounded CPU consumption is down to a copy that occurred per-input-block in the parser, and because that could be unbounded due to the memory copy bug we end up with an O(n^2) parsing loop, with n selected by the client.\n\nThe unbounded memory buffering bugs:\n\n- The header size limit check was behind the string reading code, so we needed to first buffer up to a 4 gigabyte string before rejecting it as longer than 8 or 16kb.\n- HPACK varints have an encoding quirk whereby an infinite number of 0\u2019s can be added at the start of an integer. gRPC\u2019s hpack parser needed to read all of them before concluding a parse.\n- gRPC\u2019s metadata overflow check was performed per frame, so that the following sequence of frames could cause infinite buffering: HEADERS: containing a: 1 CONTINUATION: containing a: 2 CONTINUATION: containing a: 3 etc\u2026", + "files": [ + { + "diskPath": { + "partitionUuid": "72d18f0c-ddaf-4b73-b512-56102153f78f", + "relativePath": "usr/lib/google-cloud-sdk/platform/bundledpythonunix/lib/python3.9/site-packages/grpcio-1.54.0.dist-info/METADATA" + } + } + ], + "muteInfo": { + "staticMute": { + "state": "UNDEFINED", + "applyTime": "2025-06-25T16:27:20Z" + } + } + }, + "resource": { + "name": "//compute.googleapis.com/projects/prod-backend-infra/zones/us-central1-a/instances/dgarbacz-linux", + "displayName": "dgarbacz-linux", + "type": "google.compute.Instance", + "cloudProvider": "GOOGLE_CLOUD_PLATFORM", + "service": "compute.googleapis.com", + "location": "us-central1-a", + "gcpMetadata": { + "project": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "projectDisplayName": "prod-backend-infra", + "parent": "//cloudresourcemanager.googleapis.com/projects/175089404040", + "parentDisplayName": "prod-backend-infra", + "folders": [ + { + "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/175089404055", + "resourceFolderDisplayName": "Product Team" + } + ], + "organization": "organizations/175089404094" + }, + "resourcePath": { + "nodes": [ + { + "nodeType": "GCP_PROJECT", + "id": "projects/175089404040", + "displayName": "prod-backend-infra" + }, + { + "nodeType": "GCP_FOLDER", + "id": "folders/175089404055", + "displayName": "Product Team" + }, + { + "nodeType": "GCP_ORGANIZATION", + "id": "organizations/175089404094" + } + ] + }, + "resourcePathString": "organizations/175089404094/folders/175089404055/projects/175089404040" + } + }, + "messageId": "17508940403846729", + "message_id": "17508940403846729", + "publishTime": "2025-06-25T16:27:20.384Z", + "publish_time": "2025-06-25T16:27:20.384Z" + }, + "subscription": "projects/prod-backend-infra/subscriptions/scc" +} +``` +
+ +### Sample log queries + +```sql title="Misconfiguration" +_sourceCategory=Labs/googleCloudSCC MISCONFIGURATION +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" +| dedup 1 by finding_id +| json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name +| where findingClass = "MISCONFIGURATION" +| count by finding_id,description, category, severity,findingClass, resource_name, location, folder_name, project_name, state +``` + +```sql title="Threat" +sourceCategory=Labs/googleCloudSCC THREAT +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" +| dedup 1 by finding_id +| json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name +| where findingClass = "THREAT" +| count by finding_id, category, severity,findingClass, resource_name, location, folder_name, project_name, state +``` + +```sql title="Vulnerability" +_sourceCategory=Labs/googleCloudSCC VULNERABILITY +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" +| dedup 1 by finding_id +| json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name +| where findingClass = "VULNERABILITY" +| count by finding_id,description, category, severity,findingClass, resource_name, location, folder_name, project_name, state +``` + +## Configure the data collection from Google Cloud Security Command Center + +This section describes the Sumo Logic pipeline for collecting the data from Google Cloud Security Command Center (SCC). + +### Integrating the Google Cloud Security Command Center app + +Follow the steps below to integrate the Google Cloud Security Command Center (SCC) app: + +1. [Enable Security Command Center](https://cloud.google.com/security-command-center/docs/activate-scc-overview) (SCC) at the GCP console. +1. In Sumo Logic, [configure the Google Cloud Platform source](https://help.sumologic.com/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/#configure-agoogle-cloud-platform-source). +1. In the GCP console, configure a Pub/Sub Topic for [GCP](https://help.sumologic.com/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/#configure-a-pubsub-topicfor-gcp). This Topic will be used to send SCC findings from GCP to Sumo Logic +1. In the SCC blade of the GCP console, click **Continuous Exports**.
Google Cloud Storage dashboards +1. In the GCP console, export the findings from SCC to the [Pub/Sub Topic](https://cloud.google.com/security-command-center/docs/how-to-export-data?_gl=1*1dt4zsw*_ga*ODU1MTc4OTQ1LjE3Mzg3ODM5NzI.*_ga_WH2QY8WWF5*czE3NDY2Mzc3MzQkbzMkZzEkdDE3NDY2MzgxNDUkajYwJGwwJGgw#configure-pubsub-exports) created above. + +### Testing the integration + +1. Refer to this [link](https://cloud.google.com/security-command-center/docs/how-to-export-data?_gl=1*1nrezew*_ga*ODU1MTc4OTQ1LjE3Mzg3ODM5NzI.*_ga_WH2QY8WWF5*czE3NDY3MjYwNjEkbzUkZzEkdDE3NDY3MjY2OTQkajMzJGwwJGgw#test_continuous_exports) to test the continuous exports created above.
Google Cloud Storage dashboards +1. Live Tail at Sumo Logic to see the findings from SCC. + +## Installing the Google Cloud Security Command Center app +Now that you have set up the collection for Google Cloud Security Command Center (SCC), install the Sumo Logic App to use the pre-configured searches and dashboards that provide visibility into your environment for real-time analysis of overall usage. + +import AppInstall2 from '../../reuse/apps/app-install-v2.md'; + + + +## Viewing Google Cloud Security Command Center dashboards + +import ViewDashboards from '../../reuse/apps/view-dashboards.md'; + + + +### Misconfigurations + +The **Google Cloud - Security Command Center - Misconfigurations** dashboard provides you with a comprehensive view of misconfigurations across Google Cloud. It shows the total numner of misconfigurations by severity, category, project, and resource type, helping identify high-risk issues like over-privileged accounts or insecure Kubernetes settings. You can quickly identify high-risk issues like over-privileged accounts or insecure Kubernetes settings and pinpoint the most affected resources. The dashboard supports rapid investigation and proactive remediation, enhancing overall cloud security posture. + +Google Cloud Storage dashboards + +### Threats + +The **Google Cloud - Security Command Center - Threats** dashboard provides you real-time visibility into threats in the Google Cloud environments. It displays threat counts by severity and type, identifies affected projects and resources, and offers detailed findings for incident investigation. The dashboard aids in prioritizing responses, detecting suspicious activity early, and improving overall cloud threat detection and response. + +Google Cloud Storage dashboards + +### Vulnerabilities + +The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (e.g., GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. + +Google Cloud Storage dashboards + +## Create monitors for Google Cloud Security Command Center app + +import CreateMonitors from '../../reuse/apps/create-monitors.md'; + + + +### Google Cloud Security Command Center alerts + +| Name | Description | Alert Condition | Trigger Type | +|:--|:--|:--|:--| +| `Critical Misconfigurations` | This alert is triggered when critical misconfiguration findings, such as insecure default settings or overly permissive roles are detected, indicating security vulnerabilities or compliance violations. It helps security analysts quickly identify and address high-risk configuration issues. | Count > 0 | Critical | +| `Critical Threats` | This alert is triggered when critical threat detections are logged in the environment, indicating potential active attacks or malicious behavior. It serves as an early warning system for high-severity incidents requiring immediate investigation and response. | Count > 0 | Critical | +| `Critical Vulnerabilities` | This alert is triggered when critical vulnerabilities, such as unpatched software or exposed components, are detected that pose significant risk to cloud infrastructure. It allows analysts to prioritize remediation efforts on the most impactful security weaknesses. | Count > 0 | Critical | + +## Upgrade/Downgrade the Google Cloud Security Command Center app (Optional) + +import AppUpdate from '../../reuse/apps/app-update.md'; + + + +## Uninstalling the Google Cloud Security Command Center app (Optional) + +import AppUninstall from '../../reuse/apps/app-uninstall.md'; + + \ No newline at end of file diff --git a/docs/integrations/google/index.md b/docs/integrations/google/index.md index 3153f8ae5e..7b9f65fc45 100644 --- a/docs/integrations/google/index.md +++ b/docs/integrations/google/index.md @@ -208,6 +208,12 @@ This guide has documentation for all of the apps that Sumo Logic provides for Go

A guide to the Sumo Logic app for Google Cloud Run.

+
+
+ Thumbnail icon

Google Cloud Security Command Center

+

A guide to the Sumo Logic app for Google Cloud Security Command Center.

+
+
Thumbnail icon

Google Cloud Spanner

diff --git a/docs/integrations/product-list/product-list-a-l.md b/docs/integrations/product-list/product-list-a-l.md index e88c97f79f..3951cac71d 100644 --- a/docs/integrations/product-list/product-list-a-l.md +++ b/docs/integrations/product-list/product-list-a-l.md @@ -252,7 +252,7 @@ For descriptions of the different types of integrations Sumo Logic offers, see [ | Thumbnail icon | [GitHub](https://github.com/) | App: [GitHub](/docs/integrations/app-development/github/)
Automation integration: [GitHub](/docs/platform-services/automation-service/app-central/integrations/github/)
Cloud SIEM integration: [Github](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/193c791a-bb10-4742-a429-1256535f888b.md#vendors-github)
Community app: [Sumo Logic for GitHub Actions](https://github.com/SumoLogic/sumologic-content/tree/master/GitHub/GitHub_Actions) | | Thumbnail icon | [GitLab](https://about.gitlab.com/) | App: [GitLab](/docs/integrations/app-development/gitlab/)
Automation integration: [GitLab](/docs/platform-services/automation-service/app-central/integrations/gitlab/) | | Thumbnail icon | [Gmail](https://www.google.com/gmail/about/) | App: [Gmail Trace Logs](/docs/integrations/saas-cloud/gmail-tracelogs)
Automation integrations:
- [Gmail](/docs/platform-services/automation-service/app-central/integrations/gmail/)
- [Gmail Multiple Mailbox](/docs/platform-services/automation-service/app-central/integrations/gmail-multiple-mailbox/)
Collector: [Gmail Trace Logs Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/gmail-tracelogs-source) | -| Thumbnail icon | [Google](https://about.google/) | Apps:
- [Google App Engine](/docs/integrations/google/app-engine/)
- [Google BigQuery](/docs/integrations/google/bigquery/)
- [Google Cloud AlloyDB for PostgreSQL](/docs/integrations/google/cloud-alloydb-for-postgresql/)
- [Google Cloud API Gateway](/docs/integrations/google/cloud-api-gateway/)
- [Google Cloud APIs](/docs/integrations/google/cloud-apis/)
- [Google Cloud Armor](/docs/integrations/google/cloud-armor/)
- [Google Cloud Audit](/docs/integrations/google/cloud-audit)
- [Google Cloud Auto Scaler](/docs/integrations/google/cloud-auto-scaler)
- [Google Cloud Backup for GKE](/docs/integrations/google/cloud-backup-for-gke/)
- [Google Cloud BigQuery BI Engine](/docs/integrations/google/cloud-bigquery-bi-engine/)
- [Google Cloud Bigtable](/docs/integrations/google/cloud-bigtable/)
- [Google Cloud Certificate Authority Service](/docs/integrations/google/cloud-certificate-authority-service/)
- [Google Cloud Certificate Manager](/docs/integrations/google/cloud-certificate-manager/)
- [Google Cloud Composer](/docs/integrations/google/cloud-composer/)
- [Google Compute Engine](/docs/integrations/google/compute-engine/)
- [Google Cloud Dataflow](/docs/integrations/google/cloud-dataflow/)
- [Google Cloud Dataproc](/docs/integrations/google/cloud-dataproc/)
- [Google Cloud Dataproc Metastore](/docs/integrations/google/cloud-dataproc-metastore/)
- [Google Cloud Datastore](/docs/integrations/google/cloud-datastore/)
- [Google Cloud Datastream](/docs/integrations/google/cloud-datastream/)
- [Google Cloud Deploy](/docs/integrations/google/cloud-deploy/)
- [Google Cloud Filestore](/docs/integrations/google/cloud-filestore/)
- [Google Cloud Firebase](/docs/integrations/google/cloud-firebase/)
- [Google Cloud Firestore](/docs/integrations/google/cloud-firestore/)
- [Google Cloud Firewall](/docs/integrations/google/cloud-firewall/)
- [Google Cloud Fleet Engine](/docs/integrations/google/cloud-fleet-engine/)
- [Google Cloud Functions](/docs/integrations/google/cloud-functions/)
- [Google Cloud Interconnect](/docs/integrations/google/cloud-interconnect/)
- [Google Cloud Load Balancing](/docs/integrations/google/cloud-load-balancing/)
- [Google Cloud Logging](/docs/integrations/google/cloud-logging/)
- [Google Cloud Memorystore for Redis](/docs/integrations/google/cloud-memorystore-for-redis/)
- [Google Cloud Net App Cloud Volumes Service](/docs/integrations/google/cloud-net-app-cloud-volumes-service/)
- [Google Cloud Network Topology](/docs/integrations/google/cloud-network-topology/)
- [Google Cloud Pub Sub](/docs/integrations/google/cloud-pub-sub/)
- [Google Cloud Router](/docs/integrations/google/cloud-router/)
- [Google Cloud Run](/docs/integrations/google/cloud-run/)
- [Google Cloud Spanner](/docs/integrations/google/cloud-spanner/)
- [Google Cloud SQL](/docs/integrations/google/cloud-sql/)
- [Google Cloud Storage](/docs/integrations/google/cloud-storage/)
- [Google Cloud Tasks](/docs/integrations/google/cloud-tasks/)
- [Google Cloud TPU](/docs/integrations/google/cloud-tpu/)
- [Google Cloud Trace](/docs/integrations/google/cloud-trace/)
- [Google Cloud Traffic Director](/docs/integrations/google/cloud-traffic-director/)
- [Google Cloud Vertex AI](/docs/integrations/google/cloud-vertex-ai/)
- [Google Cloud VPC](/docs/integrations/google/cloud-vpc/)
- [Google Cloud VPN](/docs/integrations/google/cloud-vpn/)
- [Google Kubernetes Engine (GKE)](/docs/integrations/google/kubernetes-engine/)
Automation integrations:
- [Chronicle](/docs/platform-services/automation-service/app-central/integrations/chronicle/)
- [Google Chat](/docs/platform-services/automation-service/app-central/integrations/google-chat/)
- [Google Safe Browsing](/docs/platform-services/automation-service/app-central/integrations/google-safe-browsing/)
- [Mandiant Advantage Threat intelligence](/docs/platform-services/automation-service/app-central/integrations/mandiant-advantage-threat-intelligence/)
Cloud SIEM integration: [Google](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/45601247-66a5-4c9c-b3af-c422f5b4cbeb.md)
Collectors:
- [Google BigQuery Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/google-bigquery-source/)
- [GCP Metrics Source](/docs/send-data/hosted-collectors/google-source/gcp-metrics-source/)
- [Google Cloud Platform (GCP) Source](/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/)
- [Mandiant Threat Intel Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/mandiant-threat-intel-source/)
Community app: [Sumo Logic for GCP Balancer Metrics](https://github.com/SumoLogic/sumologic-content/tree/master/GCP/Load_Balancer_Metrics) | +| Thumbnail icon | [Google](https://about.google/) | Apps:
- [Google App Engine](/docs/integrations/google/app-engine/)
- [Google BigQuery](/docs/integrations/google/bigquery/)
- [Google Cloud AlloyDB for PostgreSQL](/docs/integrations/google/cloud-alloydb-for-postgresql/)
- [Google Cloud API Gateway](/docs/integrations/google/cloud-api-gateway/)
- [Google Cloud APIs](/docs/integrations/google/cloud-apis/)
- [Google Cloud Armor](/docs/integrations/google/cloud-armor/)
- [Google Cloud Audit](/docs/integrations/google/cloud-audit)
- [Google Cloud Auto Scaler](/docs/integrations/google/cloud-auto-scaler)
- [Google Cloud Backup for GKE](/docs/integrations/google/cloud-backup-for-gke/)
- [Google Cloud BigQuery BI Engine](/docs/integrations/google/cloud-bigquery-bi-engine/)
- [Google Cloud Bigtable](/docs/integrations/google/cloud-bigtable/)
- [Google Cloud Certificate Authority Service](/docs/integrations/google/cloud-certificate-authority-service/)
- [Google Cloud Certificate Manager](/docs/integrations/google/cloud-certificate-manager/)
- [Google Cloud Composer](/docs/integrations/google/cloud-composer/)
- [Google Compute Engine](/docs/integrations/google/compute-engine/)
- [Google Cloud Dataflow](/docs/integrations/google/cloud-dataflow/)
- [Google Cloud Dataproc](/docs/integrations/google/cloud-dataproc/)
- [Google Cloud Dataproc Metastore](/docs/integrations/google/cloud-dataproc-metastore/)
- [Google Cloud Datastore](/docs/integrations/google/cloud-datastore/)
- [Google Cloud Datastream](/docs/integrations/google/cloud-datastream/)
- [Google Cloud Deploy](/docs/integrations/google/cloud-deploy/)
- [Google Cloud Filestore](/docs/integrations/google/cloud-filestore/)
- [Google Cloud Firebase](/docs/integrations/google/cloud-firebase/)
- [Google Cloud Firestore](/docs/integrations/google/cloud-firestore/)
- [Google Cloud Firewall](/docs/integrations/google/cloud-firewall/)
- [Google Cloud Fleet Engine](/docs/integrations/google/cloud-fleet-engine/)
- [Google Cloud Functions](/docs/integrations/google/cloud-functions/)
- [Google Cloud Interconnect](/docs/integrations/google/cloud-interconnect/)
- [Google Cloud Load Balancing](/docs/integrations/google/cloud-load-balancing/)
- [Google Cloud Logging](/docs/integrations/google/cloud-logging/)
- [Google Cloud Memorystore for Redis](/docs/integrations/google/cloud-memorystore-for-redis/)
- [Google Cloud Net App Cloud Volumes Service](/docs/integrations/google/cloud-net-app-cloud-volumes-service/)
- [Google Cloud Network Topology](/docs/integrations/google/cloud-network-topology/)
- [Google Cloud Pub Sub](/docs/integrations/google/cloud-pub-sub/)
- [Google Cloud Router](/docs/integrations/google/cloud-router/)
- [Google Cloud Run](/docs/integrations/google/cloud-run/)
- [Google Cloud Security Command Center](/docs/integrations/google/cloud-security-command-center/)
- [Google Cloud Spanner](/docs/integrations/google/cloud-spanner/)
- [Google Cloud SQL](/docs/integrations/google/cloud-sql/)
- [Google Cloud Storage](/docs/integrations/google/cloud-storage/)
- [Google Cloud Tasks](/docs/integrations/google/cloud-tasks/)
- [Google Cloud TPU](/docs/integrations/google/cloud-tpu/)
- [Google Cloud Trace](/docs/integrations/google/cloud-trace/)
- [Google Cloud Traffic Director](/docs/integrations/google/cloud-traffic-director/)
- [Google Cloud Vertex AI](/docs/integrations/google/cloud-vertex-ai/)
- [Google Cloud VPC](/docs/integrations/google/cloud-vpc/)
- [Google Cloud VPN](/docs/integrations/google/cloud-vpn/)
- [Google Kubernetes Engine (GKE)](/docs/integrations/google/kubernetes-engine/)
Automation integrations:
- [Chronicle](/docs/platform-services/automation-service/app-central/integrations/chronicle/)
- [Google Chat](/docs/platform-services/automation-service/app-central/integrations/google-chat/)
- [Google Safe Browsing](/docs/platform-services/automation-service/app-central/integrations/google-safe-browsing/)
- [Mandiant Advantage Threat intelligence](/docs/platform-services/automation-service/app-central/integrations/mandiant-advantage-threat-intelligence/)
Cloud SIEM integration: [Google](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/45601247-66a5-4c9c-b3af-c422f5b4cbeb.md)
Collectors:
- [Google BigQuery Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/google-bigquery-source/)
- [GCP Metrics Source](/docs/send-data/hosted-collectors/google-source/gcp-metrics-source/)
- [Google Cloud Platform (GCP) Source](/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/)
- [Mandiant Threat Intel Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/mandiant-threat-intel-source/)
Community app: [Sumo Logic for GCP Balancer Metrics](https://github.com/SumoLogic/sumologic-content/tree/master/GCP/Load_Balancer_Metrics) | | Thumbnail icon | [Google Workspace](https://workspace.google.com/) | App: [Google Workspace](/docs/integrations/google/workspace/install-app-dashboards/)
Automation integrations:
- [Google Alert Center](/docs/platform-services/automation-service/app-central/integrations/google-alert-center/)
- [Google Admin](/docs/platform-services/automation-service/app-central/integrations/google-admin/)
- [Google Drive](/docs/platform-services/automation-service/app-central/integrations/google-drive/)
- [Google Workspace IDP](/docs/platform-services/automation-service/app-central/integrations/google-workspace-idp/)
Collector: [Google Workspace AlertCenter Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/google-workspace-alertcenter/)
- [Google Workspace Apps Audit Source](/docs/send-data/hosted-collectors/google-source/google-workspace-apps-audit-source/)
- [Google Workspace User Inventory Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/google-workspace-source/) | | Thumbnail icon | [Grafana](https://grafana.com/) | Webhook: [Grafana OnCall](/docs/integrations/webhooks/grafana-oncall/) | | Thumbnail icon | [Gremlin](https://www.gremlin.com/) | Webhook: [Gremlin](/docs/integrations/webhooks/gremlin/) | diff --git a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/zimperium-mtd-source.md b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/zimperium-mtd-source.md new file mode 100644 index 0000000000..6064367181 --- /dev/null +++ b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/zimperium-mtd-source.md @@ -0,0 +1,104 @@ +--- +id: zimperium-mtd-source +title: Zimperium MTD Source +sidebar_label: Zimperium MTD +tags: + - cloud-to-cloud + - snowflake-logs +description: Learn how to collect the device logs from the Zimperium API and send it to Sumo Logic. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +logo + +Zimperium is a cybersecurity company specializing in mobile threat defense. It uses machine learning and on-device detection to deliver real-time protection against mobile device, network, phishing, and app threats. Designed for enterprises, its solutions safeguard sensitive data and ensure mobile security and integrity without compromising user experience or privacy in an increasingly mobile-first world. + +## Data collected + +The data will be collected from Zimperium MTD's database using the connection string from the following log types and their respective tables: + +| Polling Interval | Data | +| :--- | :--- | +| 12 hours | [Device Logs](https://zc202.zimperium.com/login?redirect=/ziap-docs/zips-docs/api/api_details_device.html) | + +## Setup + +### Vendor configuration + +The Zimperium MTD source requires you to provide the **Account URL**, **Client ID**, and **Client Secret** to setup the integration. + +#### Account URL + +The Account URL is the Base URL used to retrieve the source data from the Zimperium device log API. For example, `https://{subdomain}.zimperium.com` + +#### Client ID and Client Secret + +Follow the steps below to generate the Client Id and Client Secret: + +1. Log in to the Zimperium portal and navigate to **API Keys**. +1. From the API Keys page, select **Add Partner API Key** to create a new API key. +1. Enter the **API Key Description** and select **Save API Access** to obtain the Client ID and Client Secret credentials. + +Once you have all the required values, set up the source configuration to collect your desired log types available in the configuration section. + +### Source configuration + +When you create a Zimperium MTD source, you add it to a Hosted Collector. Before creating the Source, identify the Hosted Collector you want to use or create a new Hosted Collector. For instructions, see [Configure a Hosted Collector and Source](/docs/send-data/hosted-collectors/configure-hosted-collector). + +To configure a Zimperium MTD source: +1. [**Classic UI**](/docs/get-started/sumo-logic-ui-classic). In the main Sumo Logic menu, select **Manage Data > Collection > Collection**.
[**New UI**](/docs/get-started/sumo-logic-ui). In the Sumo Logic top menu select **Configuration**, and then under **Data Collection** select **Collection**. You can also click the **Go To...** menu at the top of the screen and select **Collection**. +1. On the Collection page, click **Add Source** next to a Hosted Collector. +1. Search for and select **Zimperium MTD**. +1. Enter a **Name** for the Source. The description is optional. +1. (Optional) For **Source Category**, enter any string to tag the output collected from the source. Category metadata is stored in a searchable field called `_sourceCategory`. +1. (Optional) **Fields**. Click the **+Add** button to define the fields you want to associate. Each field needs a name (key) and value. + * ![green check circle.png](/img/reuse/green-check-circle.png) A green circle with a check mark is shown when the field exists in the Fields table schema. + * ![orange exclamation point.png](/img/reuse/orange-exclamation-point.png) An orange triangle with an exclamation point is shown when the field doesn't exist in the Fields table schema. In this case, an option to automatically add the nonexistent fields to the Fields table schema is provided. If a field is sent to Sumo Logic that does not exist in the Fields schema it is ignored, known as dropped. +1. **Account URL**. Enter your [Account URL](#vendor-configuration). +1. **Client ID**. Enter your [Client ID](#vendor-configuration). +1. **Client Secret**. Enter your [Client Secret](#vendor-configuration). +1. **Polling Interval**. The polling interval is set for 12 hours by default and can be configured to a maximum of 24 hours. You can adjust it based on your needs. This sets how often the source checks for new data. +1. **Processing Rules for Logs**. Configure any desired filters, such as allowlist, denylist, hash, or mask, as described in [Create a Processing Rule](/docs/send-data/collection/processing-rules/create-processing-rule). +1. When you are finished configuring the source, click **Save**. + +## JSON schema + +Sources can be configured using UTF-8 encoded JSON files with the Collector Management API. See [Use JSON to Configure Sources](/docs/send-data/use-json-configure-sources) for details.  + +| Parameter | Type | Value | Required | Description | +|:--|:--|:--|:--|:--| +| schemaRef | JSON Object | `{“type”: “Zimperium MTD”} for Zimperium MTD Source` | Yes | Define the specific schema type. | +| sourceType | String | `"Universal"` | Yes | Type of source. | +| config | JSON Object | [Configuration object](#configuration-object) | Yes | Source type specific values. | + +### Configuration Object + +| Parameter | Type | Required | Default | Description | Example | +|:--|:--|:--|:--|:--|:--| +| name | String | Yes | `null` | Type a desired name of the source. The name must be unique per Collector. This value is assigned to the [metadata](/docs/search/get-started-with-search/search-basics/built-in-metadata) field `_source`. | `"mySource"` | +| description | String | No | `null` | Type a description of the source. | `"Testing source"` | +| category | String | No | `null` | Type a category of the source. This value is assigned to the [metadata](/docs/search/get-started-with-search/search-basics/built-in-metadata) field `_sourceCategory`. See [best practices](/docs/send-data/best-practices) for details. | `"mySource/test"` +| fields | JSON Object | No | `null` | JSON map of key-value fields (metadata) to apply to the Collector or source. Use the boolean field _siemForward to enable forwarding to SIEM.|`{"_siemForward": false, "fieldA": "valueA"}` | +| accountURL | String | Yes | `null` | The base URL to fetch the data from the Zimperium Device log api. | `https://{subdomain}.zimperium.com` | +| clientId | String | Yes | `null` | The client identifier is given within the Console user interface. | | +| clientSecret | String | Yes | `null` | The client secret is given within the Console user interface. | | +| pollingInterval | Integer | Yes | `12 hours` | Time interval (in hours) after which the source will check for new data. | | + +### JSON example + +```json reference +https://github.com/SumoLogic/sumologic-documentation/blob/main/static/files/c2c/zimperium-mtd/example.json +``` + +### Terraform example + +```sh reference +https://github.com/SumoLogic/sumologic-documentation/blob/main/static/files/c2c/zimperium-mtd/example.tf +``` + +## FAQ + +:::info +Click [here](/docs/c2c/info) for more information about Cloud-to-Cloud sources. +::: diff --git a/sidebars.ts b/sidebars.ts index 88887ceaaa..6eb9afc9d1 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -2282,6 +2282,7 @@ integrations: [ 'integrations/google/cloud-pub-sub', 'integrations/google/cloud-router', 'integrations/google/cloud-run', + 'integrations/google/cloud-security-command-center', 'integrations/google/cloud-spanner', 'integrations/google/cloud-tasks', 'integrations/google/cloud-tpu', diff --git a/static/img/integrations/google/google-cloud-security-command-center.png b/static/img/integrations/google/google-cloud-security-command-center.png new file mode 100644 index 0000000000000000000000000000000000000000..4a50ef45acbf6e76492889c3e835143353a2d490 GIT binary patch literal 104410 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 z Date: Mon, 14 Jul 2025 11:45:25 +0530 Subject: [PATCH 2/7] Update cid-redirects.json --- cid-redirects.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cid-redirects.json b/cid-redirects.json index 13a0789f68..22e1b6ac16 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -2899,7 +2899,7 @@ "/cid/21035": "/docs/integrations/google/cloud-traffic-director", "/cid/21036": "/docs/integrations/google/cloud-vertex-ai", "/cid/21037": "/docs/integrations/google/cloud-vpn", - "/cid/21039": "/docs/integrations/google/cloud-security-command-center", + "/cid/21041": "/docs/integrations/google/cloud-security-command-center", "/cid/21097": "/docs/integrations/saas-cloud/confluent-cloud", "/cid/21040": "/docs/manage/manage-subscription/create-and-manage-orgs/create-manage-orgs-service-providers", "/cid/21038": "/docs/integrations/containers-orchestration/vmware-tanzu-application-service", From d3804f25098353d7d7de79fd5362485495f5660d Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Mon, 14 Jul 2025 12:31:32 +0530 Subject: [PATCH 3/7] Update cid-redirects.json --- cid-redirects.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cid-redirects.json b/cid-redirects.json index 095780a4a9..f367fb2ec1 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -2900,6 +2900,7 @@ "/cid/21035": "/docs/integrations/google/cloud-traffic-director", "/cid/21036": "/docs/integrations/google/cloud-vertex-ai", "/cid/21037": "/docs/integrations/google/cloud-vpn", + "/cid/21039": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/vectra-source", "/cid/21041": "/docs/integrations/google/cloud-security-command-center", "/cid/21097": "/docs/integrations/saas-cloud/confluent-cloud", "/cid/21040": "/docs/manage/manage-subscription/create-and-manage-orgs/create-manage-orgs-service-providers", From 9544de4b1a80fe0b849680d27e558c34084dad0e Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Mon, 14 Jul 2025 12:43:28 +0530 Subject: [PATCH 4/7] Update cloud-security-command-center.md --- .../google/cloud-security-command-center.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/integrations/google/cloud-security-command-center.md b/docs/integrations/google/cloud-security-command-center.md index c6104cb541..6f04e727db 100644 --- a/docs/integrations/google/cloud-security-command-center.md +++ b/docs/integrations/google/cloud-security-command-center.md @@ -360,7 +360,7 @@ This App uses [Findings](https://cloud.google.com/security-command-center/docs/f }, "muteUpdateTime": "2025-06-25T16:27:20Z", "parentDisplayName": "Vulnerability Assessment", - "description": "gRPC contains a vulnerability that allows hpack table accounting errors could lead to unwanted disconnects between clients and servers in exceptional cases/ Three vectors were found that allow the following DOS attacks:\n\n- Unbounded memory buffering in the HPACK parser\n- Unbounded CPU consumption in the HPACK parser\n\nThe unbounded CPU consumption is down to a copy that occurred per-input-block in the parser, and because that could be unbounded due to the memory copy bug we end up with an O(n^2) parsing loop, with n selected by the client.\n\nThe unbounded memory buffering bugs:\n\n- The header size limit check was behind the string reading code, so we needed to first buffer up to a 4 gigabyte string before rejecting it as longer than 8 or 16kb.\n- HPACK varints have an encoding quirk whereby an infinite number of 0\u2019s can be added at the start of an integer. gRPC\u2019s hpack parser needed to read all of them before concluding a parse.\n- gRPC\u2019s metadata overflow check was performed per frame, so that the following sequence of frames could cause infinite buffering: HEADERS: containing a: 1 CONTINUATION: containing a: 2 CONTINUATION: containing a: 3 etc\u2026", + "description": "gRPC contains a vulnerability that allows hpack table accounting errors could lead to unwanted disconnects between clients and servers in exceptional cases/ Three vectors were found that allow the following DOS attacks:\n\n- Unbounded memory buffering in the HPACK parser\n- Unbounded CPU consumption in the HPACK parser\n\nThe unbounded CPU consumption is down to a copy that occurred per-input-block in the parser, and because that could be unbounded due to the memory copy bug we end up with an O(n^2) parsing loop, with n selected by the client.\n\nThe unbounded memory buffering bugs:\n\n- The header size limit check was behind the string reading code, so we needed to first buffer up to a 4-gigabyte string before rejecting it as longer than 8 or 16kb.\n- HPACK varints have an encoding quirk whereby an infinite number of 0\u2019s can be added at the start of an integer. gRPC\u2019s hpack parser needed to read all of them before concluding a parse.\n- gRPC\u2019s metadata overflow check was performed per frame, so that the following sequence of frames could cause infinite buffering: HEADERS: containing a: 1 CONTINUATION: containing a: 2 CONTINUATION: containing a: 3 etc\u2026", "files": [ { "diskPath": { @@ -431,7 +431,7 @@ This App uses [Findings](https://cloud.google.com/security-command-center/docs/f ```sql title="Misconfiguration" _sourceCategory=Labs/googleCloudSCC MISCONFIGURATION -| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName", "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName, resource,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop | parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" | dedup 1 by finding_id | json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name @@ -441,7 +441,7 @@ _sourceCategory=Labs/googleCloudSCC MISCONFIGURATION ```sql title="Threat" sourceCategory=Labs/googleCloudSCC THREAT -| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName", "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName, resource,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop | parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" | dedup 1 by finding_id | json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name @@ -451,7 +451,7 @@ sourceCategory=Labs/googleCloudSCC THREAT ```sql title="Vulnerability" _sourceCategory=Labs/googleCloudSCC VULNERABILITY -| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName" , "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName,resource ,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop +| json field=_raw "message.data.finding.name", "message.data.resource", "message.data.finding.resourceName", "message.data.finding.parentDisplayName", "message.data.finding.sourceProperties.Explanation", "message.data.finding.sourceProperties.ExceptionInstructions", "message.data.finding.sourceProperties.Recommendation", "message.data.resource.displayName", "message.data.resource.type", "message.data.finding.description", "message.data.finding.findingClass", "message.data.finding.mute", "message.data.finding.severity", "message.data.finding.state", "message.data.finding.category" as findingName, resource,resourceName, ParentDisplayName, explanation, ExceptionInstructions, Recommendation, displayName, type, description, findingClass, mute, severity, state, category nodrop | parse regex field = findingName "organizations\/(?\d+)\/sources\/\d+\/locations\/global\/findings\/(?[a-f0-9]+)" | dedup 1 by finding_id | json field=resource "service", "displayName", "location", "type", "gcpMetadata.projectDisplayName", "gcpMetadata.folders[0].resourceFolderDisplayName" as service, resource_name, location, type, project_name, folder_name @@ -493,19 +493,19 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; ### Misconfigurations -The **Google Cloud - Security Command Center - Misconfigurations** dashboard provides you with a comprehensive view of misconfigurations across Google Cloud. It shows the total numner of misconfigurations by severity, category, project, and resource type, helping identify high-risk issues like over-privileged accounts or insecure Kubernetes settings. You can quickly identify high-risk issues like over-privileged accounts or insecure Kubernetes settings and pinpoint the most affected resources. The dashboard supports rapid investigation and proactive remediation, enhancing overall cloud security posture. +The **Google Cloud - Security Command Center - Misconfigurations** dashboard provides you with a comprehensive view of misconfigurations across Google Cloud. It shows the total number of misconfigurations by severity, category, project, and resource type, helping identify high-risk issues like over-privileged accounts or insecure Kubernetes settings. You can quickly identify high-risk issues like over-privileged accounts or insecure Kubernetes settings and pinpoint the most affected resources. The dashboard supports rapid investigation and proactive remediation, enhancing overall cloud security posture. Google Cloud Storage dashboards ### Threats -The **Google Cloud - Security Command Center - Threats** dashboard provides you real-time visibility into threats in the Google Cloud environments. It displays threat counts by severity and type, identifies affected projects and resources, and offers detailed findings for incident investigation. The dashboard aids in prioritizing responses, detecting suspicious activity early, and improving overall cloud threat detection and response. +The **Google Cloud - Security Command Center - Threats** dashboard provides you with real-time visibility into threats in the Google Cloud environments. It displays threat counts by severity and type, identifies affected projects and resources, and offers detailed findings for incident investigation. The dashboard aids in prioritizing responses, detecting suspicious activity early, and improving overall cloud threat detection and response. Google Cloud Storage dashboards ### Vulnerabilities -The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (e.g., GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. +The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you with insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (e.g., GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. Google Cloud Storage dashboards @@ -519,9 +519,9 @@ import CreateMonitors from '../../reuse/apps/create-monitors.md'; | Name | Description | Alert Condition | Trigger Type | |:--|:--|:--|:--| -| `Critical Misconfigurations` | This alert is triggered when critical misconfiguration findings, such as insecure default settings or overly permissive roles are detected, indicating security vulnerabilities or compliance violations. It helps security analysts quickly identify and address high-risk configuration issues. | Count > 0 | Critical | +| `Critical Misconfigurations` | This alert is triggered when critical misconfiguration findings, such as insecure default settings or overly permissive roles, are detected, indicating security vulnerabilities or compliance violations. It helps security analysts quickly identify and address high-risk configuration issues. | Count > 0 | Critical | | `Critical Threats` | This alert is triggered when critical threat detections are logged in the environment, indicating potential active attacks or malicious behavior. It serves as an early warning system for high-severity incidents requiring immediate investigation and response. | Count > 0 | Critical | -| `Critical Vulnerabilities` | This alert is triggered when critical vulnerabilities, such as unpatched software or exposed components, are detected that pose significant risk to cloud infrastructure. It allows analysts to prioritize remediation efforts on the most impactful security weaknesses. | Count > 0 | Critical | +| `Critical Vulnerabilities` | This alert is triggered when critical vulnerabilities, such as unpatched software or exposed components, are detected that pose a significant risk to cloud infrastructure. It allows analysts to prioritize remediation efforts on the most impactful security weaknesses. | Count > 0 | Critical | ## Upgrade/Downgrade the Google Cloud Security Command Center app (Optional) @@ -533,4 +533,4 @@ import AppUpdate from '../../reuse/apps/app-update.md'; import AppUninstall from '../../reuse/apps/app-uninstall.md'; - \ No newline at end of file + From a58ae272d733eb57247b71d61093d3267f0640bc Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Mon, 14 Jul 2025 18:40:32 +0530 Subject: [PATCH 5/7] Update cloud-security-command-center.md From 82c0936d155c0eb4403126e1053c87707a4fe3ac Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Mon, 14 Jul 2025 18:48:45 +0530 Subject: [PATCH 6/7] Update cloud-security-command-center.md --- docs/integrations/google/cloud-security-command-center.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/integrations/google/cloud-security-command-center.md b/docs/integrations/google/cloud-security-command-center.md index 6f04e727db..3438ce6033 100644 --- a/docs/integrations/google/cloud-security-command-center.md +++ b/docs/integrations/google/cloud-security-command-center.md @@ -495,19 +495,19 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; The **Google Cloud - Security Command Center - Misconfigurations** dashboard provides you with a comprehensive view of misconfigurations across Google Cloud. It shows the total number of misconfigurations by severity, category, project, and resource type, helping identify high-risk issues like over-privileged accounts or insecure Kubernetes settings. You can quickly identify high-risk issues like over-privileged accounts or insecure Kubernetes settings and pinpoint the most affected resources. The dashboard supports rapid investigation and proactive remediation, enhancing overall cloud security posture. -Google Cloud Storage dashboards +Google Cloud Storage dashboards ### Threats The **Google Cloud - Security Command Center - Threats** dashboard provides you with real-time visibility into threats in the Google Cloud environments. It displays threat counts by severity and type, identifies affected projects and resources, and offers detailed findings for incident investigation. The dashboard aids in prioritizing responses, detecting suspicious activity early, and improving overall cloud threat detection and response. -Google Cloud Storage dashboards +Google Cloud Storage dashboards ### Vulnerabilities The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you with insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (e.g., GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. -Google Cloud Storage dashboards +Google Cloud Storage dashboards ## Create monitors for Google Cloud Security Command Center app From a037272f824117dbc8982af948f5013b4c10b165 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Mon, 14 Jul 2025 20:11:03 +0530 Subject: [PATCH 7/7] Update cloud-security-command-center.md --- .../google/cloud-security-command-center.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/integrations/google/cloud-security-command-center.md b/docs/integrations/google/cloud-security-command-center.md index 3438ce6033..a405e9a5fc 100644 --- a/docs/integrations/google/cloud-security-command-center.md +++ b/docs/integrations/google/cloud-security-command-center.md @@ -9,15 +9,15 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; thumbnail icon -The Sumo Logic App for Google Cloud Security Command Center (SCC) provides real-time visibility into cloud risks, including misconfigurations, threats, and vulnerabilities in Google Cloud environments. It features dashboards that highlight high-priority security findings, such as privileged account issues, API misuse, software vulnerabilities, severity breakdowns, resource and project-level filtering, and detailed summaries to streamline triage and remediation workflows. This enables you to monitor, investigate, and respond effectively to improve cloud security, reduce risk, and maintain compliance. +The Sumo Logic app for Google Cloud Security Command Center (SCC) provides real-time visibility into cloud risks, including misconfigurations, threats, and vulnerabilities in Google Cloud environments. It features pre-configured dashboards that highlight high-priority security findings, such as privileged account issues, API misuse, software vulnerabilities, severity breakdowns, resource and project-level filtering, and detailed summaries to streamline triage and remediation workflows. This enables you to monitor, investigate, and respond effectively to improve cloud security, reduce risk, and maintain compliance. :::info -This app includes [built-in monitors](#google-cloud-security-command-center-alerts). For details on creating custom monitors, refer to [Create monitors for Google Cloud Security Command Center app](#create-monitors-for-google-cloud-security-command-center-app). +This app includes [built-in monitors](#google-cloud-security-command-center-alerts). For details on creating custom monitors, refer to the [Create monitors for Google Cloud Security Command Center app](#create-monitors-for-google-cloud-security-command-center-app). ::: ## Log types -This App uses [Findings](https://cloud.google.com/security-command-center/docs/finding-classes) generated by [Security Command Center](https://cloud.google.com/security-command-center/docs/security-command-center-overview). +This app uses the [Findings](https://cloud.google.com/security-command-center/docs/finding-classes) generated by [Security Command Center](https://cloud.google.com/security-command-center/docs/security-command-center-overview) (SCC). ### Sample log message @@ -467,19 +467,20 @@ This section describes the Sumo Logic pipeline for collecting the data from Goog Follow the steps below to integrate the Google Cloud Security Command Center (SCC) app: -1. [Enable Security Command Center](https://cloud.google.com/security-command-center/docs/activate-scc-overview) (SCC) at the GCP console. +1. Enable the [Security Command Center (SCC)](https://cloud.google.com/security-command-center/docs/activate-scc-overview) at the GCP console. 1. In Sumo Logic, [configure the Google Cloud Platform source](https://help.sumologic.com/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/#configure-agoogle-cloud-platform-source). -1. In the GCP console, configure a Pub/Sub Topic for [GCP](https://help.sumologic.com/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/#configure-a-pubsub-topicfor-gcp). This Topic will be used to send SCC findings from GCP to Sumo Logic +1. In the GCP console, configure a Pub/Sub Topic for [GCP](https://help.sumologic.com/docs/send-data/hosted-collectors/google-source/google-cloud-platform-source/#configure-a-pubsub-topicfor-gcp). This topic will be used to send SCC findings from GCP to Sumo Logic. 1. In the SCC blade of the GCP console, click **Continuous Exports**.
Google Cloud Storage dashboards 1. In the GCP console, export the findings from SCC to the [Pub/Sub Topic](https://cloud.google.com/security-command-center/docs/how-to-export-data?_gl=1*1dt4zsw*_ga*ODU1MTc4OTQ1LjE3Mzg3ODM5NzI.*_ga_WH2QY8WWF5*czE3NDY2Mzc3MzQkbzMkZzEkdDE3NDY2MzgxNDUkajYwJGwwJGgw#configure-pubsub-exports) created above. ### Testing the integration 1. Refer to this [link](https://cloud.google.com/security-command-center/docs/how-to-export-data?_gl=1*1nrezew*_ga*ODU1MTc4OTQ1LjE3Mzg3ODM5NzI.*_ga_WH2QY8WWF5*czE3NDY3MjYwNjEkbzUkZzEkdDE3NDY3MjY2OTQkajMzJGwwJGgw#test_continuous_exports) to test the continuous exports created above.
Google Cloud Storage dashboards -1. Live Tail at Sumo Logic to see the findings from SCC. +1. *Live Tail* at Sumo Logic to see the findings from SCC. ## Installing the Google Cloud Security Command Center app -Now that you have set up the collection for Google Cloud Security Command Center (SCC), install the Sumo Logic App to use the pre-configured searches and dashboards that provide visibility into your environment for real-time analysis of overall usage. + +Now that you have set up the collection for Google Cloud Security Command Center (SCC), install the Sumo Logic app to use the pre-configured searches and dashboards that provide visibility into your environment for real-time analysis of overall usage. import AppInstall2 from '../../reuse/apps/app-install-v2.md'; @@ -495,19 +496,19 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; The **Google Cloud - Security Command Center - Misconfigurations** dashboard provides you with a comprehensive view of misconfigurations across Google Cloud. It shows the total number of misconfigurations by severity, category, project, and resource type, helping identify high-risk issues like over-privileged accounts or insecure Kubernetes settings. You can quickly identify high-risk issues like over-privileged accounts or insecure Kubernetes settings and pinpoint the most affected resources. The dashboard supports rapid investigation and proactive remediation, enhancing overall cloud security posture. -Google Cloud Storage dashboards +*Google Cloud - Security Command Center - Misconfigurations dashboard ### Threats The **Google Cloud - Security Command Center - Threats** dashboard provides you with real-time visibility into threats in the Google Cloud environments. It displays threat counts by severity and type, identifies affected projects and resources, and offers detailed findings for incident investigation. The dashboard aids in prioritizing responses, detecting suspicious activity early, and improving overall cloud threat detection and response. -Google Cloud Storage dashboards +Google Cloud - Security Command Center - Threats dashboard ### Vulnerabilities -The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you with insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (e.g., GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. +The **Google Cloud - Security Command Center - Vulnerabilities** dashboard provides you with insights into known vulnerabilities across cloud resources for effective risk assessment and remediation. The dashboard displays the total count of vulnerabilities detected, categorized by severity and type (for example, GKE Security Bulletin, Software, OS), helping prioritize critical and high-severity issues. Analysts can drill into project-specific data and detailed findings like CVEs or SQL injection risks, making this dashboard key to reducing exposure and maintaining a secure cloud environment. -Google Cloud Storage dashboards +Google Cloud - Security Command Center - Vulnerabilities dashboard ## Create monitors for Google Cloud Security Command Center app