Skip to content

Commit

Permalink
Add Zero Networks integration with assets
Browse files Browse the repository at this point in the history
  • Loading branch information
surabhipatel-crest committed Jan 1, 2025
1 parent 724567b commit 10aa477
Show file tree
Hide file tree
Showing 11 changed files with 7,213 additions and 0 deletions.
7 changes: 7 additions & 0 deletions zero_networks/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# CHANGELOG - zero-networks

## 1.0.0 / 2025-01-01

***Added***:

* Initial Release
56 changes: 56 additions & 0 deletions zero_networks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Zero Networks

## Overview

[Zero Networks][1] is a cybersecurity platform that enforces zero-trust principles by restricting access to network resources based on user identity and behavior. It automates the creation of security policies, ensuring that only authorized users and devices can connect, while blocking unauthorized attempts. With features like adaptive access control, audit logs, and micro-segmentation, it minimizes attack surfaces and protects against threats. The platform is easy to deploy and integrates seamlessly with existing systems.

This integration ingests the following logs:

- Audit: Records an event performed by the user, providing an overview of the event's timestamp, involved entities, actions, and more.
- Network-Activities: Represents information about network communication events occurring within a system, including protocol and traffic type, source and destination information, process information, user information, threat scores, and more.

This integration seamlessly collects all the above listed logs, channeling them into Datadog for analysis. Leveraging the built-in logs pipeline, these logs are parsed and enriched, enabling effortless search and analysis. The integration provides insight into audit and network-activities through the out-of-the-box dashboards.

## Setup

### Generate API credentials in Zero Networks

1. Log in to the Zero Networks platform.
2. Navigate to **Settings**, click **API** under **Integrations** and click **Add new token**.
3. Enter a **Token Name** and Set the **Expiry** to **36 months** and click **Add**.

### Connect your Zero Networks Account to Datadog

1. Add your Zero Networks credentials.

| Parameters | Description |
| ------------------------------------- | ------------------------------------------------------------ |
| Domain Name | The Domain Name from Zero Networks portal URL |
| API Key | The Personal API key of Zero Networks |

2. Click the Save button to save your settings.

## Data Collected

### Logs

The Zero Networks integration collects and forwards Zero Networks audit and network activities logs to Datadog.

### Metrics

The Zero Networks integration does not include any metrics.

### Service Checks

The Zero Networks integration does not include any service checks.

### Events

The Zero Networks integration does not include any events.

## Support

Need help? Contact [Datadog support][2].

[1]: https://zeronetworks.com/
[2]: https://docs.datadoghq.com/help/
4,074 changes: 4,074 additions & 0 deletions zero_networks/assets/dashboards/zero_networks_audit.json

Large diffs are not rendered by default.

2,815 changes: 2,815 additions & 0 deletions zero_networks/assets/dashboards/zero_networks_network_activities.json

Large diffs are not rendered by default.

184 changes: 184 additions & 0 deletions zero_networks/assets/logs/zero-networks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
id: "zero-networks"
metric_id: "zero-networks"
backend_only: false
facets:

Check failure on line 4 in zero_networks/assets/logs/zero-networks.yaml

View check run for this annotation

datadog-assets / validate-logs

Error in logs

Facets are either sorted incorrectly or are missing standard attribute facets. Replace existing `facets` list with: - groups: - Geoip name: City Name path: network.client.geoip.city.name source: log - groups: - Geoip name: Continent Code path: network.client.geoip.continent.code source: log - groups: - Geoip name: Continent Name path: network.client.geoip.continent.name source: log - groups: - Geoip name: Country ISO Code path: network.client.geoip.country.iso_code source: log - groups: - Geoip name: Country Name path: network.client.geoip.country.name source: log - groups: - Geoip name: Subdivision ISO Code path: network.client.geoip.subdivision.iso_code source: log - groups: - Geoip name: Subdivision Name path: network.client.geoip.subdivision.name source: log - groups: - Web Access name: Client IP path: network.client.ip source: log - groups: - Web Access name: Client Port path: network.client.port source: log - groups: - Geoip name: Destination City Name path: network.destination.geoip.city.name source: log - groups: - Geoip name: Destination Continent Code path: network.destination.geoip.continent.code source: log - groups: - Geoip name: Destination Continent Name path: network.destination.geoip.continent.name source: log - groups: - Geoip name: Destination Country ISO Code path: network.destination.geoip.country.iso_code source: log - groups: - Geoip name: Destination Country Name path: network.destination.geoip.country.name source: log - groups: - Geoip name: Destination Subdivision ISO Code path: network.destination.geoip.subdivision.iso_code source: log - groups: - Geoip name: Destination Subdivision Name path: network.destination.geoip.subdivision.name source: log - groups: - Web Access name: Destination IP path: network.destination.ip source: log - groups: - Web Access name: Destination Port path: network.destination.port source: log - groups: - User name: User ID path: usr.id source: log - groups: - User name: User Name path: usr.name source: log
- groups:
- User
name: User ID
path: usr.id
source: log
- groups:
- User
name: User Name
path: usr.name
source: log
- groups:
- Web Access
name: Client IP
path: network.client.ip
source: log
- groups:
- Web Access
name: Destination IP
path: network.destination.ip
source: log
- groups:
- Web Access
name: Client Port
path: network.client.port
source: log
- groups:
- Web Access
name: Destination Port
path: network.destination.port
source: log
pipeline:
type: pipeline
name: Zero Networks
enabled: true
filter:
query: source:zero-networks
processors:
- type: date-remapper
name: Define `timestamp` as the official date of the log
enabled: true
sources:
- timestamp
- type: pipeline
name: Audit
enabled: true
filter:
query: service:audit
processors:
- type: attribute-remapper
name: Map `performedBy.id` to `usr.id`
enabled: true
sources:
- performedBy.id
sourceType: attribute
target: usr.id
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `performedBy.name` to `usr.name`
enabled: true
sources:
- performedBy.name
sourceType: attribute
target: usr.name
targetType: attribute
preserveSource: false
overrideOnConflict: false
- name: Lookup on `userRole` to `user_role`
enabled: true
source: userRole
target: user_role
lookupTable: |-
0 , Unspecified
1 , Admin
2 , Viewer
3 , Regular
4 , API-FullAccess
5 , API-ReadOnly
6 , SelfService
7 , CloudConnectorProvisioning
8 , JAMF Asset
9 , Asset Manager
10 , Operator
11 , Service Now Token
type: lookup-processor
- name: Lookup on `enforcementSource` to `enforcement_source`
enabled: true
source: enforcementSource
target: enforcement_source
lookupTable: |-
1 , MFA
2 , System
3 , Access Portal
4 , Admin Portal
5 , Automation Engine
6 , API
7 , Setup
8 , Connect
type: lookup-processor
- type: pipeline
name: Network Activities
enabled: true
filter:
query: service:network-activities
processors:
- type: attribute-remapper
name: Map `src.userId` to `usr.id`
enabled: true
sources:
- src.userId
sourceType: attribute
target: usr.id
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `src.userName` to `usr.name`
enabled: true
sources:
- src.userName
sourceType: attribute
target: usr.name
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `src.ip` to `network.client.ip`
enabled: true
sources:
- src.ip
sourceType: attribute
target: network.client.ip
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `dst.ip` to `network.destination.ip`
enabled: true
sources:
- dst.ip
sourceType: attribute
target: network.destination.ip
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `src.port` to `network.client.port`
enabled: true
sources:
- src.port
sourceType: attribute
target: network.client.port
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: attribute-remapper
name: Map `dst.port` to `network.destination.port`
enabled: true
sources:
- dst.port
sourceType: attribute
target: network.destination.port
targetType: attribute
preserveSource: false
overrideOnConflict: false
- type: geo-ip-parser
name: GeoIp Parser for `network.client.ip`
enabled: true
sources:
- network.client.ip
target: network.client.geoip
ip_processing_behavior: do-nothing
- type: geo-ip-parser
name: GeoIp Parser for `network.destination.ip`
enabled: true
sources:
- network.destination.ip
target: network.destination.geoip
ip_processing_behavior: do-nothing
13 changes: 13 additions & 0 deletions zero_networks/assets/logs/zero-networks_tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
id: "zero-networks"

Check failure on line 1 in zero_networks/assets/logs/zero-networks_tests.yaml

View check run for this annotation

datadog-assets / validate-logs

Error in logs

Expected sample output: id: "zero-networks" tests: - sample: |- { "reportedObjectId" : "", "performedBy" : { "name" : "Test User", "id" : "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" }, "enforcementSource" : 4, "parentObjectId" : "", "details" : "{\"publicIp\":\"163.116.212.44\",\"tokenTtl\":\"2025-01-07T08:35:30.000Z\",\"idp\":1,\"role\":1}", "auditType" : 73, "userRole" : 1, "isoTimestamp" : "2024-12-31T08:35:30.990Z", "timestamp" : 1735634130990, "destinationEntitiesList" : [ { "name" : "Test User", "id" : "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" } ] } result: custom: auditType: 73 destinationEntitiesList: - name: "Test User" id: "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" details: "{\"publicIp\":\"163.116.212.44\",\"tokenTtl\":\"2025-01-07T08:35:30.000Z\",\"idp\":1,\"role\":1}" enforcementSource: 4 isoTimestamp: "2024-12-31T08:35:30.990Z" parentObjectId: "" performedBy: id: "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" name: "Test User" reportedObjectId: "" timestamp: 1735634130990 userRole: 1 message: |- { "reportedObjectId" : "", "performedBy" : { "name" : "Test User", "id" : "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" }, "enforcementSource" : 4, "parentObjectId" : "", "details" : "{\"publicIp\":\"163.116.212.44\",\"tokenTtl\":\"2025-01-07T08:35:30.000Z\",\"idp\":1,\"role\":1}", "auditType" : 73, "userRole" : 1, "isoTimestamp" : "2024-12-31T08:35:30.990Z", "timestamp" : 1735634130990, "destinationEntitiesList" : [ { "name" : "Test User", "id" : "c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe" } ] } tags: - "source:LOGS_SOURCE" timestamp: 1735634130990

Check failure on line 1 in zero_networks/assets/logs/zero-networks_tests.yaml

View check run for this annotation

datadog-assets / validate-logs

Error in logs

Expected sample output: id: "zero-networks" tests: - sample: |- { "reason" : 5, "protocol" : 17, "dst" : { "networkProtectionState" : 5, "processPath" : "C:\\Windows\\System32\\svchost.exe (W32Time) (1056)", "ipThreatScore" : 0, "fqdn" : "dc01.posh.local", "ip" : "10.0.0.4", "userName" : "NT AUTHORITY\\LOCAL SERVICE", "userId" : "S-1-5-19", "assetType" : 2, "eventRecordId" : 43174318, "assetSrc" : 3, "port" : 123, "processId" : "1056", "processName" : "svchost.exe (W32Time) (1056)", "assetId" : "a:a:VWW2G2C8" }, "src" : { "networkProtectionState" : 6, "processPath" : "C:\\Windows\\System32\\svchost.exe (W32Time) (1072)", "ipThreatScore" : 0, "fqdn" : "fs02.posh.local", "ip" : "10.0.0.8", "userName" : "NT AUTHORITY\\LOCAL SERVICE", "envGroupId" : "g:e:zUnrnhfa", "userId" : "S-1-5-19", "assetType" : 2, "eventRecordId" : 24143201, "assetSrc" : 3, "port" : 123, "processId" : "1072", "processName" : "svchost.exe (W32Time) (1072)", "assetId" : "a:a:ka62y0mc" }, "trafficType" : 1, "state" : 3, "timestamp" : 1734584254851 } result: custom: dst: assetId: "a:a:VWW2G2C8" assetSrc: 3 assetType: 2 eventRecordId: 43174318 fqdn: "dc01.posh.local" ip: "10.0.0.4" ipThreatScore: 0 networkProtectionState: 5 port: 123 processId: "1056" processName: "svchost.exe (W32Time) (1056)" processPath: "C:\\Windows\\System32\\svchost.exe (W32Time) (1056)" userId: "S-1-5-19" userName: "NT AUTHORITY\\LOCAL SERVICE" protocol: 17 reason: 5 src: assetId: "a:a:ka62y0mc" assetSrc: 3 assetType: 2 envGroupId: "g:e:zUnrnhfa" eventRecordId: 24143201 fqdn: "fs02.posh.local" ip: "10.0.0.8" ipThreatScore: 0 networkProtectionState: 6 port: 123 processId: "1072" processName: "svchost.exe (W32Time) (1072)" processPath: "C:\\Windows\\System32\\svchost.exe (W32Time) (1072)" userId: "S-1-5-19" userName: "NT AUTHORITY\\LOCAL SERVICE" state: 3 timestamp: 1734584254851 trafficType: 1 message: |- { "reason" : 5, "protocol" : 17, "dst" : { "networkProtectionState" : 5, "processPath" : "C:\\Windows\\System32\\svchost.exe (W32Time) (1056)", "ipThreatScore" : 0, "fqdn" : "dc01.posh.local", "ip" : "10.0.0.4", "userName" : "NT AUTHORITY\\LOCAL SERVICE", "userId" : "S-1-5-19", "assetType" : 2, "eventRecordId" : 43174318, "assetSrc" : 3, "port" : 123, "processId" : "1056", "processName" : "svchost.exe (W32Time) (1056)", "assetId" : "a:a:VWW2G2C8" }, "src" : { "networkProtectionState" : 6, "processPath" : "C:\\Windows\\System32\\svchost.exe (W32Time) (1072)", "ipThreatScore" : 0, "fqdn" : "fs02.posh.local", "ip" : "10.0.0.8", "userName" : "NT AUTHORITY\\LOCAL SERVICE", "envGroupId" : "g:e:zUnrnhfa", "userId" : "S-1-5-19", "assetType" : 2, "eventRecordId" : 24143201, "assetSrc" : 3, "port" : 123, "processId" : "1072", "processName" : "svchost.exe (W32Time) (1072)", "assetId" : "a:a:ka62y0mc" }, "trafficType" : 1, "state" : 3, "timestamp" : 1734584254851 } tags: - "source:LOGS_SOURCE" timestamp: 1734584254851
tests:
- sample: |-
{"timestamp":1735634130990,"isoTimestamp":"2024-12-31T08:35:30.990Z","auditType":73,"enforcementSource":4,"userRole":1,"destinationEntitiesList":[{"id":"c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe","name":"Test User"}],"details":"{\"publicIp\":\"163.116.212.44\",\"tokenTtl\":\"2025-01-07T08:35:30.000Z\",\"idp\":1,\"role\":1}","parentObjectId":"","reportedObjectId":"","performedBy":{"id":"c05d5f20-89a3-4948-bcc6-8cc6e2aab3fe","name":"Test User"}}
result: null
- sample: |-
{"timestamp":1734584254851,"protocol":17,"state":3,"trafficType":1,"dst":{"assetId":"a:a:VWW2G2C8","assetSrc":3,"networkProtectionState":5,"assetType":2,"eventRecordId":43174318,"fqdn":"dc01.posh.local","ip":"10.0.0.4","port":123,"processId":"1056","processName":"svchost.exe (W32Time) (1056)","processPath":"C:\\Windows\\System32\\svchost.exe (W32Time) (1056)","userId":"S-1-5-19","userName":"NT AUTHORITY\\LOCAL SERVICE","ipThreatScore":0},"src":{"assetId":"a:a:ka62y0mc","assetSrc":3,"networkProtectionState":6,"assetType":2,"eventRecordId":24143201,"fqdn":"fs02.posh.local","ip":"10.0.0.8","port":123,"processId":"1072","processName":"svchost.exe (W32Time) (1072)","processPath":"C:\\Windows\\System32\\svchost.exe (W32Time) (1072)","userId":"S-1-5-19","userName":"NT AUTHORITY\\LOCAL SERVICE","ipThreatScore":0,"envGroupId":"g:e:zUnrnhfa"},"inboundRuleMatches":[],"conflictingInboundRuleMatches":[],"outboundRuleMatches":[],"conflictingOutboundRuleMatches":[],"reason":5}
result: null
# The `result` field should be left blank to start. Once you submit your log asset files with
# your integration pull-request in a Datadog GitHub repository, Datadog's validations will
# run your raw logs against your pipeline and return the result. If the result output in the
# validation is accurate, take the output and add it to the `result` field in your test YAML file.
1 change: 1 addition & 0 deletions zero_networks/assets/service_checks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
8 changes: 8 additions & 0 deletions zero_networks/assets/zero_networks.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zero_networks/images/zero_networks_audit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions zero_networks/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"manifest_version": "2.0.0",
"app_uuid": "5be301d0-072e-42c2-a579-0c8d24755a85",
"app_id": "zero-networks",
"display_on_public_website": false,
"tile": {
"overview": "README.md#Overview",
"configuration": "README.md#Setup",
"support": "README.md#Support",
"changelog": "CHANGELOG.md",
"description": "Gain insights into Zero Networks audit and network activities logs.",
"title": "Zero Networks",
"media": [
{
"caption": "Zero Networks - Audit",
"image_url": "images/zero_networks_audit.png",
"media_type": "image"
},
{
"caption": "Zero Networks - Network Activities",
"image_url": "images/zero_networks_network_activities.png",
"media_type": "image"
}
],
"classifier_tags": [
"Category::Log Collection",
"Category::Security",
"Submitted Data Type::Logs",
"Offering::Integration"
]
},
"assets": {
"integration": {
"auto_install": false,
"source_type_id": 35533755,
"source_type_name": "Zero Networks",
"events": {
"creates_events": false
},
"service_checks": {
"metadata_path": "assets/service_checks.json"
}
},
"dashboards": {
"Zero Networks - Audit": "assets/dashboards/zero_networks_audit.json",
"Zero Networks - Network Activities": "assets/dashboards/zero_networks_network_activities.json"
}
},
"author": {
"support_email": "[email protected]",
"name": "Datadog",
"homepage": "https://www.datadoghq.com",
"sales_email": "[email protected]"
}
}

0 comments on commit 10aa477

Please sign in to comment.