Merge pull request #4966 from Azure/cefchanges/part1

Cefchanges/part1 - Adding CEF Changes for new solutions
This commit is contained in:
Anki Narravula 2022-05-19 06:56:17 +05:30 коммит произвёл GitHub
Родитель 0a935c11c8 a79544de14
Коммит 6d2c93e0c9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
5 изменённых файлов: 165 добавлений и 174 удалений

Просмотреть файл

@ -1,137 +1,138 @@
{
"id": "Forcepoint",
"title": "Forcepoint CASB (Preview)",
"publisher": "Forcepoint CASB",
"descriptionMarkdown": "The Forcepoint CASB (Cloud Access Security Broker) Connector allows you to automatically export CASB logs and events into Azure Sentinel in real-time. This enriches visibility into user activities across locations and cloud applications, enables further correlation with data from Azure workloads and other feeds, and improves monitoring capability with Workbooks inside Azure Sentinel.",
"graphQueries": [
{
"metricName": "Total data received",
"legend": "ForcepointCASB",
"baseQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n"
}
],
"sampleQueries": [
{
"description" : "Top 5 Users With The Highest Number Of Logs",
"query": "CommonSecurityLog \n| summarize Count = count() by DestinationUserName\n| top 5 by DestinationUserName\n| render barchart"
},
{
"description" : "Top 5 Users by Number of Failed Attempts ",
"query": "CommonSecurityLog \n| extend outcome = split(split(AdditionalExtensions, \";\", 2)[0], \"=\", 1)[0]\n| extend reason = split(split(AdditionalExtensions, \";\", 3)[0], \"=\", 1)[0]\n| where outcome ==\"Failure\"\n| summarize Count= count() by DestinationUserName\n| render barchart"
}
],
"dataTypes": [
{
"name": "CommonSecurityLog (ForcepointCASB)",
"lastDataReceivedQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
}
],
"connectivityCriterias": [
{
"type": "IsConnectedQuery",
"value": [
"\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)"
]
}
],
"availability": {
"status": 1,
"isPreview": true
},
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "read and write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"read": true,
"write": true,
"delete": true
}
},
{
"provider": "Microsoft.OperationalInsights/workspaces/sharedKeys",
"permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).",
"providerDisplayName": "Keys",
"scope": "Workspace",
"requiredPermissions": {
"action": true
}
}
]
},
"instructionSteps": [
{
"title": "1. Linux Syslog agent configuration",
"description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Azure Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace",
"innerSteps": [
{
"title": "1.1 Select or create a Linux machine",
"description": "Select or create a Linux machine that Azure Sentinel will use as the proxy between your security solution and Azure Sentinel. This machine can be on your on-prem environment, Azure or other clouds."
},
{
"title": "1.2 Install the CEF collector on the Linux machine",
"description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Azure Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.",
"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Run the following command to install and apply the CEF collector:",
"value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}"
},
"type": "CopyableLabel"
}
]
}
]
},
{
"title": "2. Forward Common Event Format (CEF) logs to Syslog agent",
"description": "Set your security solution to send Syslog messages in CEF format to the proxy machine. Make sure you to send the logs to port 514 TCP on the machine's IP address."
},
{
"title": "3. Validate connection",
"description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version \n \n>2. You must have elevated permissions (sudo) on your machine",
"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId"
],
"label": "Run the following command to validate your connectivity:",
"value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}"
},
"type": "CopyableLabel"
}
]
},
{
"title": "4. Secure your machine ",
"description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
},
{ "title": "5. Forcepoint integration installation guide ",
"description": "To complete the installation of this Forcepoint product integration, follow the guide linked below.\n\n[Installation Guide >](https://frcpnt.com/casb-sentinel)"
}
],
"metadata": {
"id": "04f93db2-8f2a-4edc-bb78-9e1e7587faff",
"version": "1.0.0",
"kind": "dataConnector",
"source": {
"kind": "community"
},
"author": {
"name": "Forcepoint"
},
"support": {
"name": "Forcepoint",
"link": "https://support.forcepoint.com",
"tier": "developer"
}
"id": "Forcepoint",
"title": "Forcepoint CASB (Preview)",
"publisher": "Forcepoint CASB",
"descriptionMarkdown": "The Forcepoint CASB (Cloud Access Security Broker) Connector allows you to automatically export CASB logs and events into Azure Sentinel in real-time. This enriches visibility into user activities across locations and cloud applications, enables further correlation with data from Azure workloads and other feeds, and improves monitoring capability with Workbooks inside Azure Sentinel.",
"graphQueries": [
{
"metricName": "Total data received",
"legend": "ForcepointCASB",
"baseQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n"
}
}
],
"sampleQueries": [
{
"description": "Top 5 Users With The Highest Number Of Logs",
"query": "CommonSecurityLog \n| summarize Count = count() by DestinationUserName\n| top 5 by DestinationUserName\n| render barchart"
},
{
"description": "Top 5 Users by Number of Failed Attempts ",
"query": "CommonSecurityLog \n| extend outcome = coalesce(column_ifexists(\"EventOutcome\", \"\"), tostring(split(split(AdditionalExtensions, \";\", 2)[0], \"=\", 1)[0]), \"\")\n| extend reason = coalesce(column_ifexists(\"Reason\", \"\"), tostring(split(split(AdditionalExtensions, \";\", 3)[0], \"=\", 1)[0]), \"\")\n| where outcome ==\"Failure\"\n| summarize Count= count() by DestinationUserName\n| render barchart"
}
],
"dataTypes": [
{
"name": "CommonSecurityLog (ForcepointCASB)",
"lastDataReceivedQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
}
],
"connectivityCriterias": [
{
"type": "IsConnectedQuery",
"value": [
"\nCommonSecurityLog\n| where DeviceVendor == \"Forcepoint CASB\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(30d)"
]
}
],
"availability": {
"status": 1,
"isPreview": true
},
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "read and write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"read": true,
"write": true,
"delete": true
}
},
{
"provider": "Microsoft.OperationalInsights/workspaces/sharedKeys",
"permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).",
"providerDisplayName": "Keys",
"scope": "Workspace",
"requiredPermissions": {
"action": true
}
}
]
},
"instructionSteps": [
{
"title": "1. Linux Syslog agent configuration",
"description": "Install and configure the Linux agent to collect your Common Event Format (CEF) Syslog messages and forward them to Azure Sentinel.\n\n> Notice that the data from all regions will be stored in the selected workspace",
"innerSteps": [
{
"title": "1.1 Select or create a Linux machine",
"description": "Select or create a Linux machine that Azure Sentinel will use as the proxy between your security solution and Azure Sentinel. This machine can be on your on-prem environment, Azure or other clouds."
},
{
"title": "1.2 Install the CEF collector on the Linux machine",
"description": "Install the Microsoft Monitoring Agent on your Linux machine and configure the machine to listen on the necessary port and forward messages to your Azure Sentinel workspace. The CEF collector collects CEF messages on port 514 TCP.\n\n> 1. Make sure that you have Python on your machine using the following command: python -version.\n\n> 2. You must have elevated permissions (sudo) on your machine.",
"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Run the following command to install and apply the CEF collector:",
"value": "sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py {0} {1}"
},
"type": "CopyableLabel"
}
]
}
]
},
{
"title": "2. Forward Common Event Format (CEF) logs to Syslog agent",
"description": "Set your security solution to send Syslog messages in CEF format to the proxy machine. Make sure you to send the logs to port 514 TCP on the machine's IP address."
},
{
"title": "3. Validate connection",
"description": "Follow the instructions to validate your connectivity:\n\nOpen Log Analytics to check if the logs are received using the CommonSecurityLog schema.\n\n>It may take about 20 minutes until the connection streams data to your workspace.\n\nIf the logs are not received, run the following connectivity validation script:\n\n> 1. Make sure that you have Python on your machine using the following command: python -version \n \n>2. You must have elevated permissions (sudo) on your machine",
"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId"
],
"label": "Run the following command to validate your connectivity:",
"value": "sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py {0}"
},
"type": "CopyableLabel"
}
]
},
{
"title": "4. Secure your machine ",
"description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
},
{
"title": "5. Forcepoint integration installation guide ",
"description": "To complete the installation of this Forcepoint product integration, follow the guide linked below.\n\n[Installation Guide >](https://frcpnt.com/casb-sentinel)"
}
],
"metadata": {
"id": "04f93db2-8f2a-4edc-bb78-9e1e7587faff",
"version": "1.0.0",
"kind": "dataConnector",
"source": {
"kind": "community"
},
"author": {
"name": "Forcepoint"
},
"support": {
"name": "Forcepoint",
"link": "https://support.forcepoint.com",
"tier": "developer"
}
}
}

Просмотреть файл

@ -33,27 +33,39 @@
// cs20=https://10.10.10.10/reviews?id\=507-79-38-8826-1-AC1F6B720404-1090 cs21label=SessionSpsNodeIpAddress cs21= cs22label=TicketNumber cs22= cs23label=WasCheckedOut cs23=False
//
//
CommonSecurityLog
CommonSecurityLog
| where DeviceVendor == "OneIdentity"
| extend extensionData = split(AdditionalExtensions,";")
| extend EventUserId = DeviceCustomNumber1
| extend EventUserId = coalesce(
column_ifexists("FieldDeviceCustomNumber1", int(null)),
DeviceCustomNumber1
)
| extend EventUserDisplayName = DeviceCustomString1
| extend EventUserDomainName = DeviceCustomString2
| extend AccessRequestType = DeviceCustomString3
| extend AccountDistinguishedName = DeviceCustomString4
| extend AccountDomainName = DeviceCustomString5
| extend AccountId = DeviceCustomNumber2
| extend AccountId = coalesce(
column_ifexists("FieldDeviceCustomNumber2", int(null)),
DeviceCustomNumber2
)
| extend AccountName = DeviceCustomString6
| extend ApproverAccessRequestUri = extract(@"(=)(\S*)",2,tostring(extensionData[9]))
| extend AssetId = DeviceCustomNumber3
| extend AssetId = coalesce(
column_ifexists("FieldDeviceCustomNumber3", int(null)),
DeviceCustomNumber3
)
| extend AssetName = extract(@"(=)(\S*)",2,tostring(extensionData[12]))
| extend AssetNetworkAddress = extract(@"(=)(\S*)",2,tostring(extensionData[14]))
| extend AssetPlatformType = extract(@"(=)(\S*)",2,tostring(extensionData[16]))
| extend Comment = extract(@"(=)(\S*)",2,tostring(extensionData[18]))
| extend DurationInMinutes = extract(@"(=)(\S*)",2,tostring(extensionData[20]))
| extend OfflineWorkflowMode = extract(@"(=)(\S*)",2,tostring(extensionData[22]))
| extend Reason = extract(@"(=)(\S*)",2,tostring(extensionData[24]))
| extend Reason = coalesce(
extract(@"(=)(\S*)",2,tostring(extensionData[24])),
column_ifexists("Reason", "")
)
| extend ReasonCode = extract(@"(=)(\S*)",2,tostring(extensionData[26]))
| extend Requester = extract(@"(=)(\S*)",2,tostring(extensionData[28]))
| extend RequesterAccessRequestUri = extract(@"(=)(\S*)",2,tostring(extensionData[30]))
| project-away extensionData,AdditionalExtensions
| project-away extensionData,AdditionalExtensions

Просмотреть файл

@ -1,4 +1,4 @@
{
{
"version": "Notebook/1.0",
"items": [
{
@ -12,8 +12,6 @@
"type": 9,
"content": {
"version": "KqlParameterItem/1.0",
"query": "",
"crossComponentResources": [],
"parameters": [
{
"id": "2b036d8d-8429-40a5-a5f4-8f7473738749",
@ -88,13 +86,9 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "CommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| extend detectionID = DeviceCustomNumber1\n| extend StartTime = extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime))\n| summarize arg_min(todatetime(ReceiptTime), *) by detectionID\n| summarize count(detectionID) by Activity, bin(make_datetime(ReceiptTime), 1h)\n",
"query": "CommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| extend DeviceCustomNumber1 = coalesce(column_ifexists(\"FieldDeviceCustomNumber1\", int(null)),DeviceCustomNumber1)\n| extend detectionID = DeviceCustomNumber1\n| extend StartTime = coalesce(\n column_ifexists(\"StartTime\", datetime(null)),\n extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime)),\n datetime(null)\n )\n| summarize arg_min(todatetime(ReceiptTime), *) by detectionID\n| summarize count(detectionID) by Activity, bin(make_datetime(ReceiptTime), 1h)\n",
"size": 0,
"exportToExcelOptions": "visible",
"title": "Detections by Recently Updated",
"timeContext": {
"durationMs": 0
},
"timeContextFromParameter": "query_times",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces",
@ -124,13 +118,9 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "let category_map = dynamic(\n{\n \"sec.action\" : \"Actions on Objective\",\n \"sec.caution\": \"Caution\",\n \"sec.command\": \"Command and Control\",\n \"sec.exploit\": \"Exploitation\",\n \"sec.lateral\": \"Lateral Movement\",\n \"sec.recon\": \"Reconnaissance\"\n }\n);\nCommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| extend categories = iif(DeviceCustomString2 != \"\", split(DeviceCustomString2, \",\"),dynamic(null))\n| extend detectionID = DeviceCustomNumber1\n| project detectionID, updateTime=todatetime(ReceiptTime), categories\n| summarize arg_max(updateTime, *) by detectionID\n| sort by detectionID desc \n| where isnotnull(categories)\n| mv-expand cat=categories to typeof(string) \n| summarize count() by cat\n| project Category=tostring(category_map[cat]), Count=count_\n| where Category != \"\"",
"query": "let category_map = dynamic(\n{\n \"sec.action\" : \"Actions on Objective\",\n \"sec.caution\": \"Caution\",\n \"sec.command\": \"Command and Control\",\n \"sec.exploit\": \"Exploitation\",\n \"sec.lateral\": \"Lateral Movement\",\n \"sec.recon\": \"Reconnaissance\"\n }\n);\nCommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| extend DeviceCustomNumber1 = coalesce(column_ifexists(\"FieldDeviceCustomNumber1\", int(null)),DeviceCustomNumber1)\n| extend categories = iif(DeviceCustomString2 != \"\", split(DeviceCustomString2, \",\"),dynamic(null))\n| extend detectionID = DeviceCustomNumber1\n| project detectionID, updateTime=todatetime(ReceiptTime), categories\n| summarize arg_max(updateTime, *) by detectionID\n| sort by detectionID desc \n| where isnotnull(categories)\n| mv-expand cat=categories to typeof(string)\n| extend cat = coalesce(column_ifexists(\"DeviceEventCategory\",\"\"),cat) \n| summarize count() by cat\n| project Category=tostring(category_map[cat]), Count=count_\n| where Category != \"\"",
"size": 0,
"exportToExcelOptions": "visible",
"title": "Detections by Category",
"timeContext": {
"durationMs": 0
},
"timeContextFromParameter": "query_times",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces",
@ -143,13 +133,9 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "let ExtraHopDetections = materialize(CommonSecurityLog\n | where DeviceVendor == \"ExtraHop\"\n | extend detectionID = DeviceCustomNumber1\n | extend StartTime = extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime))\n | project SourceIP, DestinationIP, detectionID, StartTime\n | summarize arg_max(todatetime(StartTime), *) by detectionID\n | sort by detectionID desc);\nlet t1 = ExtraHopDetection | where SourceIP != \"\" | summarize dcount=dcount(detectionID) by SourceIP | project IPAddress=SourceIP, dcount;\nlet t2 = ExtraHopDetection | where DestinationIP != \"\" | summarize dcount=dcount(detectionID) by DestinationIP | project IPAddress=DestinationIP, dcount;\nt1 | union t2 | summarize Count=sum(dcount) by [\"IP Address\"]=IPAddress | top 10 by Count desc",
"query": "let ExtraHopDetections = materialize(CommonSecurityLog\n | where DeviceVendor == \"ExtraHop\"\n | extend DeviceCustomNumber1 = coalesce(column_ifexists(\"FieldDeviceCustomNumber1\", int(null)),DeviceCustomNumber1)\n | extend detectionID = DeviceCustomNumber1\n | extend StartTime = coalesce(\n column_ifexists(\"StartTime\", datetime(null)),\n extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime)),\n datetime(null)\n )\n | project SourceIP, DestinationIP, detectionID, StartTime\n | summarize arg_max(todatetime(StartTime), *) by detectionID\n | sort by detectionID desc);\nlet t1 = ExtraHopDetections | where SourceIP != \"\" | summarize dcount=dcount(detectionID) by SourceIP | project IPAddress=SourceIP, dcount;\nlet t2 = ExtraHopDetections | where DestinationIP != \"\" | summarize dcount=dcount(detectionID) by DestinationIP | project IPAddress=DestinationIP, dcount;\nt1 | union t2 | summarize Count=sum(dcount) by [\"IP Address\"]=IPAddress | top 10 by Count desc",
"size": 0,
"exportToExcelOptions": "visible",
"title": "Top Participants",
"timeContext": {
"durationMs": 0
},
"timeContextFromParameter": "query_times",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces"
@ -161,13 +147,9 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "CommonSecurityLog\n | where DeviceVendor == \"ExtraHop\"\n | extend StartTime = extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime))\n | extend detectionID = DeviceCustomNumber1\n | summarize arg_max(todatetime(StartTime), *) by detectionID\n | summarize Count=count() by Activity\n | sort by Count desc, Activity asc\n | project-rename [\"Detection Title\"]=Activity",
"query": "CommonSecurityLog\n | where DeviceVendor == \"ExtraHop\"\n | extend DeviceCustomNumber1 = coalesce(column_ifexists(\"FieldDeviceCustomNumber1\", int(null)),DeviceCustomNumber1)\n | extend StartTime = coalesce(\n column_ifexists(\"StartTime\", datetime(null)),\n extract(\"start=([0-9-]+T[0-9:.]+Z)\", 1, AdditionalExtensions,typeof(datetime)),\n datetime(null)\n )\n | extend detectionID = DeviceCustomNumber1\n | summarize arg_max(todatetime(StartTime), *) by detectionID\n | summarize Count=count() by Activity\n | sort by Count desc, Activity asc\n | project-rename [\"Detection Title\"]=Activity",
"size": 0,
"exportToExcelOptions": "visible",
"title": "Top Detections by Title",
"timeContext": {
"durationMs": 0
},
"timeContextFromParameter": "query_times",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces"
@ -179,13 +161,9 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "CommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| summarize arg_max(ReceiptTime, *) by DeviceCustomNumber1 // detection ID\n| sort by DeviceCustomNumber2 // risk score\n| project [\"Risk Score\"] = DeviceCustomNumber2,\nTitle=Activity, \nSourceIP,\nDestinationIP,\n[\"Last Updated\"]=format_datetime(make_datetime(ReceiptTime), 'M/d/yyyy HH:mm:ss'),\nID=DeviceCustomNumber1,\nURI=DeviceCustomString1\n| take 10\n",
"query": "CommonSecurityLog\n| where DeviceVendor == \"ExtraHop\"\n| extend DeviceCustomNumber1 = coalesce(column_ifexists(\"FieldDeviceCustomNumber1\", int(null)),DeviceCustomNumber1),\n DeviceCustomNumber2 = coalesce(column_ifexists(\"FieldDeviceCustomNumber2\", int(null)),DeviceCustomNumber2)\n| summarize arg_max(ReceiptTime, *) by DeviceCustomNumber1 // detection ID\n| sort by DeviceCustomNumber2 // risk score\n| project [\"Risk Score\"] = DeviceCustomNumber2,\nTitle=Activity, \nSourceIP,\nDestinationIP,\n[\"Last Updated\"]=format_datetime(make_datetime(ReceiptTime), 'M/d/yyyy HH:mm:ss'),\nID=DeviceCustomNumber1,\nURI=DeviceCustomString1\n| take 10\n",
"size": 0,
"exportToExcelOptions": "visible",
"title": "Top Ten Detections by Highest Risk Score",
"timeContext": {
"durationMs": 0
},
"timeContextFromParameter": "query_times",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces"
@ -193,7 +171,6 @@
"name": "top-ten-by-risk"
}
],
"styleSettings": {},
"fromTemplateId": "sentinel-ExtraHop",
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}
}

Просмотреть файл

@ -12,7 +12,7 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "CommonSecurityLog \r\n| where TimeGenerated <= now()\r\n| extend outcome = split(split(AdditionalExtensions, \";\", 2)[0], \"=\", 1)[0]\r\n| extend reason = split(split(AdditionalExtensions, \";\", 3)[0], \"=\", 1)[0]\r\n| where DeviceVendor == \"Forcepoint CASB\"\r\n| where DeviceProduct in (\"SaaS Security Gateway\", \"Cloud Service Monitoring\", \"CASB Admin audit log\")\r\n| where outcome ==\"Failure\" \r\n| summarize Count= count() by DestinationUserName| render barchart",
"query": "CommonSecurityLog \r\n| where TimeGenerated <= now()\r\n| extend outcome = coalesce(\r\n column_ifexists(\"EventOutcome\", \"\"),\r\n split(split(AdditionalExtensions, \";\", 2)[0], \"=\", 1)[0],\r\n \"\"\r\n )\r\n| extend reason = coalesce(\r\n column_ifexists(\"Reason\", \"\"),\r\n split(split(AdditionalExtensions, \";\", 3)[0], \"=\", 1)[0],\r\n \"\"\r\n )\r\n| where DeviceVendor == \"Forcepoint CASB\"\r\n| where DeviceProduct in (\"SaaS Security Gateway\", \"Cloud Service Monitoring\", \"CASB Admin audit log\")\r\n| where outcome ==\"Failure\" \r\n| summarize Count= count() by DestinationUserName| render barchart",
"size": 0,
"timeContext": {
"durationMs": 2592000000
@ -44,5 +44,6 @@
"name": "query - 4"
}
],
"fromTemplateId": "sentinel-ForcepointCASB",
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}

Просмотреть файл

@ -487,7 +487,7 @@
"dataTypesDependencies": [ "CommonSecurityLog" ],
"dataConnectorsDependencies": [ "ExtraHopNetworks" ],
"previewImagesFileNames": [ "ExtrahopWhite.png", "ExtrahopBlack.png" ],
"version": "1.0.0",
"version": "1.0.1",
"title": "ExtraHop",
"templateRelativePath": "ExtraHopDetectionSummary.json",
"subtitle": "",
@ -604,7 +604,7 @@
"dataTypesDependencies": [ "CommonSecurityLog" ],
"dataConnectorsDependencies": [ "ForcepointCasb" ],
"previewImagesFileNames": [ "ForcepointCASBWhite.png", "ForcepointCASBBlack.png" ],
"version": "1.0.0",
"version": "1.0.1",
"title": "Forcepoint Cloud Access Security Broker (CASB)",
"templateRelativePath": "ForcepointCASB.json",
"subtitle": "",