-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathv2_security-monitoring_CreateSecurityMonitoringRule_2899714190.rs
More file actions
96 lines (95 loc) · 5.48 KB
/
v2_security-monitoring_CreateSecurityMonitoringRule_2899714190.rs
File metadata and controls
96 lines (95 loc) · 5.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Create a detection rule with detection method 'sequence_detection' returns "OK"
// response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCaseCreate;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCreatePayload;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleDetectionMethod;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleEvaluationWindow;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleKeepAlive;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleMaxSignalDuration;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleOptions;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQueryAggregation;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSequenceDetectionOptions;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSequenceDetectionStep;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSequenceDetectionStepTransition;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSeverity;
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleTypeCreate;
use datadog_api_client::datadogV2::model::SecurityMonitoringStandardDataSource;
use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleCreatePayload;
use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleQuery;
#[tokio::main]
async fn main() {
let body =
SecurityMonitoringRuleCreatePayload::SecurityMonitoringStandardRuleCreatePayload(Box::new(
SecurityMonitoringStandardRuleCreatePayload::new(
vec![
SecurityMonitoringRuleCaseCreate::new(SecurityMonitoringRuleSeverity::INFO)
.condition("step_b > 0".to_string())
.name("".to_string())
.notifications(vec![]),
],
true,
"Logs and signals asdf".to_string(),
"Example-Security-Monitoring".to_string(),
SecurityMonitoringRuleOptions::new()
.detection_method(SecurityMonitoringRuleDetectionMethod::SEQUENCE_DETECTION)
.evaluation_window(SecurityMonitoringRuleEvaluationWindow::ZERO_MINUTES)
.keep_alive(SecurityMonitoringRuleKeepAlive::FIVE_MINUTES)
.max_signal_duration(SecurityMonitoringRuleMaxSignalDuration::TEN_MINUTES)
.sequence_detection_options(
SecurityMonitoringRuleSequenceDetectionOptions::new()
.step_transitions(vec![
SecurityMonitoringRuleSequenceDetectionStepTransition::new()
.child("step_b".to_string())
.evaluation_window(
SecurityMonitoringRuleEvaluationWindow::FIFTEEN_MINUTES,
)
.parent("step_a".to_string()),
])
.steps(vec![
SecurityMonitoringRuleSequenceDetectionStep::new()
.condition("a > 0".to_string())
.evaluation_window(
SecurityMonitoringRuleEvaluationWindow::ONE_MINUTE,
)
.name("step_a".to_string()),
SecurityMonitoringRuleSequenceDetectionStep::new()
.condition("b > 0".to_string())
.evaluation_window(
SecurityMonitoringRuleEvaluationWindow::ONE_MINUTE,
)
.name("step_b".to_string()),
]),
),
vec![
SecurityMonitoringStandardRuleQuery::new()
.aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
.data_source(SecurityMonitoringStandardDataSource::LOGS)
.distinct_fields(vec![])
.group_by_fields(vec![])
.has_optional_group_by_fields(false)
.name("".to_string())
.query("service:logs-rule-reducer source:paul test2".to_string()),
SecurityMonitoringStandardRuleQuery::new()
.aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
.data_source(SecurityMonitoringStandardDataSource::LOGS)
.distinct_fields(vec![])
.group_by_fields(vec![])
.has_optional_group_by_fields(false)
.name("".to_string())
.query("service:logs-rule-reducer source:paul test1".to_string()),
],
)
.tags(vec![])
.type_(SecurityMonitoringRuleTypeCreate::LOG_DETECTION),
));
let configuration = datadog::Configuration::new();
let api = SecurityMonitoringAPI::with_config(configuration);
let resp = api.create_security_monitoring_rule(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}