Skip to content

Commit 8b5b094

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Security notifications - Add SAST and secret rule types (#3425)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 76438b5 commit 8b5b094

6 files changed

Lines changed: 110 additions & 3 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57796,7 +57796,8 @@ components:
5779657796
Signal-based notification rules can filter signals based on rule types application_security, log_detection,
5779757797
workload_security, signal_correlation, cloud_configuration and infrastructure_configuration.
5779857798
Vulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,
57799-
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, api_security, host_vulnerability and iac_misconfiguration.
57799+
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration,
57800+
api_security, host_vulnerability, iac_misconfiguration, sast_vulnerability and secret_vulnerability.
5780057801
enum:
5780157802
- application_security
5780257803
- log_detection
@@ -57813,6 +57814,8 @@ components:
5781357814
- api_security
5781457815
- host_vulnerability
5781557816
- iac_misconfiguration
57817+
- sast_vulnerability
57818+
- secret_vulnerability
5781657819
type: string
5781757820
x-enum-varnames:
5781857821
- APPLICATION_SECURITY
@@ -57830,6 +57833,8 @@ components:
5783057833
- API_SECURITY
5783157834
- HOST_VULNERABILITY
5783257835
- IAC_MISCONFIGURATION
57836+
- SAST_VULNERABILITY
57837+
- SECRET_VULNERABILITY
5783357838
RuleUser:
5783457839
description: User creating or modifying a rule.
5783557840
properties:
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""
2+
Create a new vulnerability-based notification rule with sast and secret rule types returns "Successfully created the
3+
notification rule." response
4+
"""
5+
6+
from datadog_api_client import ApiClient, Configuration
7+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
8+
from datadog_api_client.v2.model.create_notification_rule_parameters import CreateNotificationRuleParameters
9+
from datadog_api_client.v2.model.create_notification_rule_parameters_data import CreateNotificationRuleParametersData
10+
from datadog_api_client.v2.model.create_notification_rule_parameters_data_attributes import (
11+
CreateNotificationRuleParametersDataAttributes,
12+
)
13+
from datadog_api_client.v2.model.notification_rules_type import NotificationRulesType
14+
from datadog_api_client.v2.model.rule_severity import RuleSeverity
15+
from datadog_api_client.v2.model.rule_types_items import RuleTypesItems
16+
from datadog_api_client.v2.model.selectors import Selectors
17+
from datadog_api_client.v2.model.trigger_source import TriggerSource
18+
19+
body = CreateNotificationRuleParameters(
20+
data=CreateNotificationRuleParametersData(
21+
attributes=CreateNotificationRuleParametersDataAttributes(
22+
enabled=True,
23+
name="Example-Security-Monitoring",
24+
selectors=Selectors(
25+
query="(source:production_service OR env:prod)",
26+
rule_types=[
27+
RuleTypesItems.SAST_VULNERABILITY,
28+
RuleTypesItems.SECRET_VULNERABILITY,
29+
],
30+
severities=[
31+
RuleSeverity.CRITICAL,
32+
],
33+
trigger_source=TriggerSource.SECURITY_FINDINGS,
34+
),
35+
targets=[
36+
"@john.doe@email.com",
37+
],
38+
time_aggregation=86400,
39+
),
40+
type=NotificationRulesType.NOTIFICATION_RULES,
41+
),
42+
)
43+
44+
configuration = Configuration()
45+
with ApiClient(configuration) as api_client:
46+
api_instance = SecurityMonitoringApi(api_client)
47+
response = api_instance.create_vulnerability_notification_rule(body=body)
48+
49+
print(response)

src/datadog_api_client/v2/model/rule_types_items.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ class RuleTypesItems(ModelSimple):
1818
Signal-based notification rules can filter signals based on rule types application_security, log_detection,
1919
workload_security, signal_correlation, cloud_configuration and infrastructure_configuration.
2020
Vulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,
21-
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, api_security, host_vulnerability and iac_misconfiguration.
21+
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration,
22+
api_security, host_vulnerability, iac_misconfiguration, sast_vulnerability and secret_vulnerability.
2223
23-
:param value: Must be one of ["application_security", "log_detection", "workload_security", "signal_correlation", "cloud_configuration", "infrastructure_configuration", "application_code_vulnerability", "application_library_vulnerability", "attack_path", "container_image_vulnerability", "identity_risk", "misconfiguration", "api_security", "host_vulnerability", "iac_misconfiguration"].
24+
:param value: Must be one of ["application_security", "log_detection", "workload_security", "signal_correlation", "cloud_configuration", "infrastructure_configuration", "application_code_vulnerability", "application_library_vulnerability", "attack_path", "container_image_vulnerability", "identity_risk", "misconfiguration", "api_security", "host_vulnerability", "iac_misconfiguration", "sast_vulnerability", "secret_vulnerability"].
2425
:type value: str
2526
"""
2627

@@ -40,6 +41,8 @@ class RuleTypesItems(ModelSimple):
4041
"api_security",
4142
"host_vulnerability",
4243
"iac_misconfiguration",
44+
"sast_vulnerability",
45+
"secret_vulnerability",
4346
}
4447
APPLICATION_SECURITY: ClassVar["RuleTypesItems"]
4548
LOG_DETECTION: ClassVar["RuleTypesItems"]
@@ -56,6 +59,8 @@ class RuleTypesItems(ModelSimple):
5659
API_SECURITY: ClassVar["RuleTypesItems"]
5760
HOST_VULNERABILITY: ClassVar["RuleTypesItems"]
5861
IAC_MISCONFIGURATION: ClassVar["RuleTypesItems"]
62+
SAST_VULNERABILITY: ClassVar["RuleTypesItems"]
63+
SECRET_VULNERABILITY: ClassVar["RuleTypesItems"]
5964

6065
@cached_property
6166
def openapi_types(_):
@@ -79,3 +84,5 @@ def openapi_types(_):
7984
RuleTypesItems.API_SECURITY = RuleTypesItems("api_security")
8085
RuleTypesItems.HOST_VULNERABILITY = RuleTypesItems("host_vulnerability")
8186
RuleTypesItems.IAC_MISCONFIGURATION = RuleTypesItems("iac_misconfiguration")
87+
RuleTypesItems.SAST_VULNERABILITY = RuleTypesItems("sast_vulnerability")
88+
RuleTypesItems.SECRET_VULNERABILITY = RuleTypesItems("secret_vulnerability")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-04-16T13:47:18.057Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
interactions:
2+
- request:
3+
body: '{"data":{"attributes":{"enabled":true,"name":"Test-Create_a_new_vulnerability_based_notification_rule_with_sast_and_secret_rule_types_returns_Successfu-1776347238","selectors":{"query":"(source:production_service
4+
OR env:prod)","rule_types":["sast_vulnerability","secret_vulnerability"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400},"type":"notification_rules"}}'
5+
headers:
6+
accept:
7+
- application/json
8+
content-type:
9+
- application/json
10+
method: POST
11+
uri: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules
12+
response:
13+
body:
14+
string: '{"data":{"id":"exz-ipg-n1m","type":"notification_rules","attributes":{"created_at":1776347239287,"created_by":{"name":"CI
15+
Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1776347239287,"modified_by":{"name":"CI
16+
Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Create_a_new_vulnerability_based_notification_rule_with_sast_and_secret_rule_types_returns_Successfu-1776347238","selectors":{"severities":["critical"],"rule_types":["sast_vulnerability","secret_vulnerability"],"query":"(source:production_service
17+
OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1}}}'
18+
headers:
19+
content-type:
20+
- application/vnd.api+json
21+
status:
22+
code: 201
23+
message: Created
24+
- request:
25+
body: null
26+
headers:
27+
accept:
28+
- '*/*'
29+
method: DELETE
30+
uri: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/exz-ipg-n1m
31+
response:
32+
body:
33+
string: ''
34+
headers: {}
35+
status:
36+
code: 204
37+
message: No Content
38+
version: 1

tests/v2/features/security_monitoring.feature

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,13 @@ Feature: Security Monitoring
591591
When the request is sent
592592
Then the response status is 201 Successfully created the notification rule.
593593

594+
@team:DataDog/cloud-security-posture-management
595+
Scenario: Create a new vulnerability-based notification rule with sast and secret rule types returns "Successfully created the notification rule." response
596+
Given new "CreateVulnerabilityNotificationRule" request
597+
And body with value {"data": {"attributes": {"enabled": true, "name": "{{ unique }}", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["sast_vulnerability", "secret_vulnerability"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}}
598+
When the request is sent
599+
Then the response status is 201 Successfully created the notification rule.
600+
594601
@team:DataDog/k9-cloud-siem
595602
Scenario: Create a scheduled detection rule returns "OK" response
596603
Given new "CreateSecurityMonitoringRule" request

0 commit comments

Comments
 (0)