Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions Dashboards/CyberArk_Dashboard.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
},
{
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move the CyberArk workbook to https://github.com/Azure/Azure-Sentinel/tree/master/Workbooks folder and follow guidance @ https://github.com/Azure/Azure-Sentinel/tree/master/Workbooks#how-to-contribute-new-workbook to submit the workbook.
The Dashboards folder is going to be deleted soon.

"name": "Query",
"value": "CyberArk_CPM\r\n| where ticketID contains \"Error\"\r\n| summarize AggregatedValue = count() by bin(TimeGenerated, 1h)\r\n| sort by TimeGenerated desc\r\n| render timechart \n"
"value": "CommonSecurityLog\n| where OldFileID contains \"Error\"\r\n| summarize AggregatedValue = count() by bin(TimeGenerated, 1h)\r\n| sort by TimeGenerated desc\r\n| render timechart \n"
},
{
"name": "TimeRange",
Expand Down Expand Up @@ -143,7 +143,7 @@
},
{
"name": "Query",
"value": "CyberArk_Syslog | search ticketID contains \"error\" | summarize AggregatedValue = count() by destinationUserName\n"
"value": "CommonSecurityLog\n| search OldFileID contains \"error\" | summarize AggregatedValue = count() by DestinationUserName\n"
},
{
"name": "TimeRange",
Expand All @@ -153,7 +153,7 @@
"name": "Dimensions",
"value": {
"xAxis": {
"name": "destinationUserName",
"name": "DestinationUserName",
"type": "String"
},
"yAxis": [
Expand Down Expand Up @@ -232,7 +232,7 @@
},
{
"name": "Query",
"value": "CyberArk_Access \r\n| where ProcessID == 7\r\n| where sourceUserName contains \"administrator\"\r\n| distinct sourceHostName, deviceAddress, TimeGenerated\r\n//| summarize count() by sourceHostName, deviceAddress, TimeGenerated\r\n//| render timechart \n"
"value": "CommonSecurityLog\n| where ProcessID == 7\r\n| where SourceUserName contains \"administrator\"\r\n| distinct SourceHostName, DeviceAddress, TimeGenerated\r\n| summarize count() by SourceHostName, DeviceAddress, TimeGenerated\r\n//| render timechart \n"
},
{
"name": "TimeRange",
Expand Down Expand Up @@ -308,7 +308,7 @@
},
{
"name": "Query",
"value": "CyberArk_PSM | where ProcessID == 300\r\n| summarize count() by destinationHostName\n"
"value": "CommonSecurityLog\n| where ProcessID == 300\r\n| summarize count() by DestinationHostName\n"
},
{
"name": "TimeRange",
Expand All @@ -318,7 +318,7 @@
"name": "Dimensions",
"value": {
"xAxis": {
"name": "destinationHostName",
"name": "DestinationHostName",
"type": "String"
},
"yAxis": [
Expand Down Expand Up @@ -397,7 +397,7 @@
},
{
"name": "Query",
"value": "CyberArk_CPM \r\n| where MessageID in (22,24,31,414,416,418)\r\n| distinct deviceAction, destinationUserName, fileName, safeName, TimeGenerated, Message\n"
"value": "CommonSecurityLog\n| where ProcessID in (22,24,31,414,416,418)\r\n| distinct DeviceAction, DestinationUserName, FileName, TimeGenerated, Message\n"
},
{
"name": "TimeRange",
Expand Down Expand Up @@ -473,7 +473,7 @@
},
{
"name": "Query",
"value": "CyberArk_Syslog \r\n| where ProcessID in (295,428)\r\n| where safeName !contains \"PSMSessions\"\r\n| where safeName !contains \"PVWAConfig\"\r\n| where safeName !contains \"PasswordManagerShared\"\r\n| where safeName !contains \"VaultInternal\"\r\n| where safeName !contains \"PasswordManager\"\r\n| where safeName !contains \"PVWAPrivateUserPrefs\"\r\n| where safeName !contains \"ConjurSync\"\r\n| where safeName !contains \"SharedAuth_Internal\"\r\n| where safeName !contains \"PSM\"\r\n| where sourceUserName !contains \"PasswordManager\"\r\n| summarize count() by fileName, safeName\r\n"
"value": "CommonSecurityLog\n| where ProcessID in (295,428)\r\n| where FileName !contains \"PSMSessions\"\r\n| where FileName !contains \"PVWAConfig\"\r\n| where FileName !contains \"PasswordManagerShared\"\r\n| where FileName !contains \"VaultInternal\"\r\n| where FileName !contains \"PasswordManager\"\r\n| where FileName !contains \"PVWAPrivateUserPrefs\"\r\n| where FileName !contains \"ConjurSync\"\r\n| where FileName !contains \"SharedAuth_Internal\"\r\n| where FileName !contains \"PSM\"\r\n| where sourceUserName !contains \"PasswordManager\"\r\n| summarize count() by FileName\r\n"
},
{
"name": "TimeRange",
Expand All @@ -483,7 +483,7 @@
"name": "Dimensions",
"value": {
"xAxis": {
"name": "fileName",
"name": "FileName",
"type": "String"
},
"yAxis": [
Expand All @@ -494,7 +494,7 @@
],
"splitBy": [
{
"name": "safeName",
"name": "FileName",
"type": "String"
}
],
Expand Down Expand Up @@ -567,7 +567,7 @@
},
{
"name": "Query",
"value": "CyberArk_CPM \r\n| where deviceAction contains \"disable\"\r\n| summarize count() by fileName, safeName, destinationUserName, ticketID\n"
"value": "CommonSecurityLog\n| where DeviceAction contains \"disable\"\r\n| summarize count() by FileName, DestinationUserName, OldFileID\n"
},
{
"name": "TimeRange",
Expand Down Expand Up @@ -643,7 +643,7 @@
},
{
"name": "Query",
"value": "CyberArk_Syslog \r\n| where ProcessID in (295,428)\r\n| where safeName !contains \"PSMSessions\"\r\n| where safeName !contains \"PVWAConfig\"\r\n| where safeName !contains \"PasswordManagerShared\"\r\n| where safeName !contains \"VaultInternal\"\r\n| where safeName !contains \"PasswordManager\"\r\n| where safeName !contains \"PVWAPrivateUserPrefs\"\r\n| where safeName !contains \"ConjurSync\"\r\n| where safeName !contains \"SharedAuth_Internal\"\r\n| where safeName !contains \"PSM\"\r\n| where sourceUserName !contains \"PasswordManager\"\r\n| summarize count() by sourceUserName, TimeGenerated\n"
"value": "CommonSecurityLog\n| where ProcessID in (295,428)\r\n| where FileName !contains \"PSMSessions\"\r\n| where FileName !contains \"PVWAConfig\"\r\n| where FileName !contains \"PasswordManagerShared\"\r\n| where FileName !contains \"VaultInternal\"\r\n| where FileName !contains \"PasswordManager\"\r\n| where FileName !contains \"PVWAPrivateUserPrefs\"\r\n| where FileName !contains \"ConjurSync\"\r\n| where FileName !contains \"SharedAuth_Internal\"\r\n| where FileName !contains \"PSM\"\r\n| where SourceUserName !contains \"PasswordManager\"\r\n| summarize count() by SourceUserName, TimeGenerated\n"
},
{
"name": "TimeRange",
Expand All @@ -653,7 +653,7 @@
"name": "Dimensions",
"value": {
"xAxis": {
"name": "sourceUserName",
"name": "SourceUserName",
"type": "String"
},
"yAxis": [
Expand Down Expand Up @@ -732,7 +732,7 @@
},
{
"name": "Query",
"value": "CyberArk_PSM | where ProcessID in (359,360,361,412,411) | summarize audit=makeset(Reason) by externalId, destinationUserName, sourceUserName\n"
"value": "CommonSecurityLog\n| where ProcessID in (359,360,361,412,411) | summarize audit=makeset(OldFileID) by ExternalId, DestinationUserName, SourceUserName\n"
},
{
"name": "TimeRange",
Expand Down Expand Up @@ -808,7 +808,7 @@
},
{
"name": "Query",
"value": "CyberArk_Syslog \r\n| where ProcessID in (295,428)\r\n| where safeName contains \"ConjurSync\"\r\n| where sourceUserName contains \"Sync_components\"\r\n| summarize AggregatedValue = count() by bin(TimeGenerated, 1h)\r\n| sort by TimeGenerated desc\r\n| render timechart \n"
"value": "CommonSecurityLog\n| where ProcessID in (295,428)\r\n| where FileName contains \"ConjurSync\"\r\n| where SourceUserName contains \"Sync_components\"\r\n| summarize AggregatedValue = count() by bin(TimeGenerated, 1h)\r\n| sort by TimeGenerated desc\r\n| render timechart \n"
},
{
"name": "TimeRange",
Expand Down
104 changes: 104 additions & 0 deletions DataConnectors/CyberArk/CyberArk Data Connector.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"id": "CyberArk",
"title": "CyberArk Enterprise Password Vault (EPV) Syslog",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might want to remove Syslog from the title as it's basically a CEF connector

"publisher": "Cyber-Ark",
"descriptionMarkdown": "CyberArk Enterprise Password Vault generates an xml Syslog messages for every action taken against the Vault. The EPV will send the xml messages through the Sentinel.xsl translator to be converted into CEF standard format and sent to a syslog staging server of your choice (syslog-ng, rsyslog). The Log Analytics agent installed on your syslog staging server will import the messages into Azure Log Analytics",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Syslog message is right grammatically since it's 'generates an xml Syslog messages' which seems incorrect. Please fix.
  2. It'd be great to also add a link to CyberArk product documentation.

"graphQueries": [
{
"metricName": "Total data received",
"legend": "CyberArkSyslog",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can have the legend as just CyberArk - the syslog term is confusing.

"baseQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Cyber-Ark\"\n| where DeviceProduct == \"Vault\"\n"
}
],
"sampleQueries": [
{
"description" : "CyberArk Alerts",
"query": "\nCommonSecurityLog\n| where LogSeverity == \"7\" or LogSeverity == \"10\"\n| sort by TimeGenerated desc"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will get all results from not only CyberArk but also any other products that have LogSeverity.
Add a where clause as follows before the LogSeverity clause.
| where DeviceVendor == "Cyber-Ark"

}
],
"dataTypes": [
{
"name": "CommonSecurityLog",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The data type name should be "CommonSecurityLog (CyberArk)" with values in the parenthesis same as the value in the legend name.

"lastDataReceivedQuery": "\nCommonSecurityLog\n| where DeviceVendor == \"Cyber-Ark\" \n| where DeviceProduct == \"Vault\" \n| summarize Time = max(TimeGenerated) \n| where isnotempty(Time)"
}
],
"connectivityCriterias": [
{
"type": "IsConnectedQuery",
"value": [
"\nCommonSecurityLog\n| where DeviceVendor == \"Cyber-Ark\"\n| where DeviceProduct == \"Vault\"\n\n| summarize LastLogReceived = max(TimeGenerated)\n| project IsConnected = LastLogReceived > ago(30d)"
]
}
],
"availability": {
"status": 1
},
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "read and write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"read": true,
"write": true,
"delete": 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 colects 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.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In step #1 there are ASCII / weird chars trailing python - 'following command: python �version.'
Please delete chars after python and delete parts of version and retype to remove this.

"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Run the following command to install and apply the CEF collector:",
"value": "sudo wget 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": "On the EPV configure the dbparm.ini 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."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In step #2 as well there are ASCII / weird chars trailing machine - 'TCP on the machine�s IP address.'
Please delete chars after machine and delete parts of IP and retype to remove this.

},
{
"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",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In step 3 (point 1) as well there are ASCII / weird chars trailing python - 'following command: python �version'
Please delete chars after python and delete parts of version and retype to remove this.

"instructions": [
{
"parameters": {
"fillWith": [
"WorkspaceId"
],
"label": "Run the following command to validate your connectivity:",
"value": "sudo wget 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)"
}
]
}
46 changes: 46 additions & 0 deletions DataConnectors/CyberArk/CyberArk README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Connect CyberArk to Azure Sentinel
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please email us the md file and remove this file from this PR - the documentation for data connector goes to a different repository and should not be in this repo. Thanks.


The CyberArk Syslog connector allows you to easily connect all your CyberArk security solution logs with your Azure Sentinel, to view dashboards, create custom alerts, and improve investigation. Integration between CyberArk and Azure Sentinel makes use of the CEF Data Connector to properly parse and display CyberArk Syslog messages.


> [!NOTE]
> Data will be stored in the geographic location of the workspace on which you are running Azure Sentinel.

## Configure and connect CyberArk EPV

CyberArk Syslogs are sent from the Vault to a syslog staging server (rsyslog, syslog-ng), then the Linux Syslog agent exports the logs to Azure Sentinel.

1. In the Azure Sentinel portal, click Data connectors and select CyberArk and then Open connector page.

2. For more guidance on how to implement please refer to the Azure Sentinel tile in CyberArk MarketPlace.


## !!IMPORTANT NOTES!!
Due to the current way data is being presented the CEF strandard Custom Label functionality is not displaying properly. Here are the Custom Labels and their new column labels
| Old Label | Sentinel Label | xsl KeyName |
|:------------------:|:-------------------------:|:----------------:|
| Safe Name | FileName | fname |
| Device Type | FileType | fileType |
| Affected User Name | SourceUserPrivileges | spriv |
| Database | DeviceExternalID | deviceExternalId |
| Other info | DestinationUserPrivileges | dpriv |
| Request Id | FileID | fileId |
| Ticket Id | OldFileID | oldFileId |


## Find your data

After a successful connection is established, the data appears in Log Analytics under SecurityInsights CommonSecurityLog.
To use the relevant schema in Log Analytics for CyberArk, run the following query:
CommonSecurityLog \n| where DeviceVendor == \"Cyber-Ark\"\n| where DeviceProduct == \"Vault\".

## Validate connectivity
It may take upwards of 20 minutes until your logs start to appear in Log Analytics.


## Next steps
In this document, you learned how to connect CyberArk to Azure Sentinel. To learn more about Azure Sentinel, see the following articles:
- Learn how to [get visibility into your data, and potential threats](quickstart-get-visibility.md).
- Get started [detecting threats with Azure Sentinel](tutorial-detect-threats-built-in.md).
- [Use workbooks](tutorial-monitor-your-data.md) to monitor your data.

Binary file not shown.
Loading