Skip to content
Merged
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
84 changes: 84 additions & 0 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47320,6 +47320,86 @@ components:
description: The name of the reference table.
type: string
type: object
SecurityMonitoringRuleAnomalyDetectionOptions:
additionalProperties: {}
description: Options on anomaly detection method.
properties:
bucketDuration:
$ref: '#/components/schemas/SecurityMonitoringRuleAnomalyDetectionOptionsBucketDuration'
detectionTolerance:
$ref: '#/components/schemas/SecurityMonitoringRuleAnomalyDetectionOptionsDetectionTolerance'
learningDuration:
$ref: '#/components/schemas/SecurityMonitoringRuleAnomalyDetectionOptionsLearningDuration'
learningPeriodBaseline:
description: An optional override baseline to apply while the rule is in
the learning period. Must be greater than or equal to 0.
format: int64
minimum: 0
type: integer
type: object
SecurityMonitoringRuleAnomalyDetectionOptionsBucketDuration:
description: 'Duration in seconds of the time buckets used to aggregate events
matched by the rule.

Must be greater than or equal to 300.'
enum:
- 300
- 600
- 900
- 1800
- 3600
- 10800
example: 300
format: int32
type: integer
x-enum-varnames:
- FIVE_MINUTES
- TEN_MINUTES
- FIFTEEN_MINUTES
- THIRTY_MINUTES
- ONE_HOUR
- THREE_HOURS
SecurityMonitoringRuleAnomalyDetectionOptionsDetectionTolerance:
description: 'An optional parameter that sets how permissive anomaly detection
is.

Higher values require higher deviations before triggering a signal.'
enum:
- 1
- 2
- 3
- 4
- 5
example: 5
format: int32
type: integer
x-enum-varnames:
- ONE
- TWO
- THREE
- FOUR
- FIVE
SecurityMonitoringRuleAnomalyDetectionOptionsLearningDuration:
description: Learning duration in hours. Anomaly detection waits for at least
this amount of historical data before it starts evaluating.
enum:
- 1
- 6
- 12
- 24
- 48
- 168
- 336
format: int32
type: integer
x-enum-varnames:
- ONE_HOUR
- SIX_HOURS
- TWELVE_HOURS
- ONE_DAY
- TWO_DAYS
- ONE_WEEK
- TWO_WEEKS
SecurityMonitoringRuleCase:
description: Case when signal is generated.
properties:
Expand Down Expand Up @@ -47685,6 +47765,8 @@ components:
SecurityMonitoringRuleOptions:
description: Options.
properties:
anomalyDetectionOptions:
$ref: '#/components/schemas/SecurityMonitoringRuleAnomalyDetectionOptions'
complianceRuleOptions:
$ref: '#/components/schemas/CloudConfigurationComplianceRuleOptions'
decreaseCriticalityBasedOnEnv:
Expand Down Expand Up @@ -55124,6 +55206,8 @@ components:
ThreatHuntingJobOptions:
description: Job options.
properties:
anomalyDetectionOptions:
$ref: '#/components/schemas/SecurityMonitoringRuleAnomalyDetectionOptions'
detectionMethod:
$ref: '#/components/schemas/SecurityMonitoringRuleDetectionMethod'
evaluationWindow:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// Create a detection rule with detection method 'anomaly_detection' returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleAnomalyDetectionOptions;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleAnomalyDetectionOptionsBucketDuration;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleAnomalyDetectionOptionsDetectionTolerance;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleAnomalyDetectionOptionsLearningDuration;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleCaseCreate;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleCreatePayload;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleDetectionMethod;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleEvaluationWindow;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleKeepAlive;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleMaxSignalDuration;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleOptions;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleQueryAggregation;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleResponse;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleSeverity;
import com.datadog.api.client.v2.model.SecurityMonitoringRuleTypeCreate;
import com.datadog.api.client.v2.model.SecurityMonitoringStandardDataSource;
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRuleCreatePayload;
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRuleQuery;
import java.util.Arrays;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);

SecurityMonitoringRuleCreatePayload body =
new SecurityMonitoringRuleCreatePayload(
new SecurityMonitoringStandardRuleCreatePayload()
.name("Example-Security-Monitoring")
.type(SecurityMonitoringRuleTypeCreate.LOG_DETECTION)
.isEnabled(true)
.queries(
Collections.singletonList(
new SecurityMonitoringStandardRuleQuery()
.aggregation(SecurityMonitoringRuleQueryAggregation.COUNT)
.dataSource(SecurityMonitoringStandardDataSource.LOGS)
.groupByFields(Arrays.asList("@usr.email", "@network.client.ip"))
.hasOptionalGroupByFields(false)
.name("")
.query("service:app status:error")))
.cases(
Collections.singletonList(
new SecurityMonitoringRuleCaseCreate()
.name("")
.status(SecurityMonitoringRuleSeverity.INFO)
.condition("a > 0.995")))
.message("An anomaly detection rule")
.options(
new SecurityMonitoringRuleOptions()
.detectionMethod(SecurityMonitoringRuleDetectionMethod.ANOMALY_DETECTION)
.evaluationWindow(SecurityMonitoringRuleEvaluationWindow.FIFTEEN_MINUTES)
.keepAlive(SecurityMonitoringRuleKeepAlive.ONE_HOUR)
.maxSignalDuration(SecurityMonitoringRuleMaxSignalDuration.ONE_DAY)
.anomalyDetectionOptions(
new SecurityMonitoringRuleAnomalyDetectionOptions()
.bucketDuration(
SecurityMonitoringRuleAnomalyDetectionOptionsBucketDuration
.FIVE_MINUTES)
.learningDuration(
SecurityMonitoringRuleAnomalyDetectionOptionsLearningDuration
.ONE_DAY)
.detectionTolerance(
SecurityMonitoringRuleAnomalyDetectionOptionsDetectionTolerance
.THREE)
.learningPeriodBaseline(10L))));

try {
SecurityMonitoringRuleResponse result = apiInstance.createSecurityMonitoringRule(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println(
"Exception when calling SecurityMonitoringApi#createSecurityMonitoringRule");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Loading
Loading