Skip to content

Commit 57e5b2c

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Update security_monitoring endpoints for cloud_configuration rules (#1268)
Co-authored-by: ci.datadog-api-spec <[email protected]> Co-authored-by: api-clients-generation-pipeline[bot] <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com>
1 parent fb41aa3 commit 57e5b2c

28 files changed

+984
-4
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.4",
7-
"regenerated": "2022-12-13 20:15:37.769174",
8-
"spec_repo_commit": "cb07e37b"
7+
"regenerated": "2022-12-14 13:19:08.162310",
8+
"spec_repo_commit": "72a02090"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.4",
12-
"regenerated": "2022-12-13 20:15:37.783093",
13-
"spec_repo_commit": "cb07e37b"
12+
"regenerated": "2022-12-14 13:19:08.177644",
13+
"spec_repo_commit": "72a02090"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,6 +1761,148 @@ components:
17611761
example: infra_host
17621762
type: string
17631763
type: object
1764+
CloudConfigurationComplianceRuleOptions:
1765+
description: Options for cloud_configuration rules.
1766+
properties:
1767+
complexRule:
1768+
description: 'Whether the rule is a complex one.
1769+
1770+
Must be set to true if `regoRule.resourceTypes` contains more than one
1771+
item. Defaults to false.
1772+
1773+
'
1774+
type: boolean
1775+
regoRule:
1776+
$ref: '#/components/schemas/CloudConfigurationRegoRule'
1777+
required:
1778+
- regoRule
1779+
type: object
1780+
CloudConfigurationRegoRule:
1781+
description: Rule details.
1782+
properties:
1783+
policy:
1784+
description: 'The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/'
1785+
example: "package datadog\n\nimport data.datadog.output as dd_output\nimport
1786+
future.keywords.contains\nimport future.keywords.if\nimport future.keywords.in\n\neval(resource)
1787+
= \"skip\" if {\n # Logic that evaluates to true if the resource should
1788+
be skipped\n true\n} else = \"pass\" {\n # Logic that evaluates to true
1789+
if the resource is compliant\n true\n} else = \"fail\" {\n # Logic that
1790+
evaluates to true if the resource is not compliant\n true\n}\n\n# This
1791+
part remains unchanged for all rules\nresults contains result if {\n some
1792+
resource in input.resources[input.main_resource_type]\n result := dd_output.format(resource,
1793+
eval(resource))\n}\n"
1794+
type: string
1795+
resourceTypes:
1796+
description: List of resource types that will be evaluated upon. Must have
1797+
at least one element.
1798+
example:
1799+
- gcp_iam_service_account
1800+
- gcp_iam_policy
1801+
items:
1802+
type: string
1803+
type: array
1804+
required:
1805+
- policy
1806+
- resourceTypes
1807+
type: object
1808+
CloudConfigurationRuleCaseCreate:
1809+
description: Description of signals.
1810+
properties:
1811+
notifications:
1812+
description: Notification targets for each rule case.
1813+
items:
1814+
description: Notification.
1815+
type: string
1816+
type: array
1817+
status:
1818+
$ref: '#/components/schemas/SecurityMonitoringRuleSeverity'
1819+
required:
1820+
- status
1821+
type: object
1822+
CloudConfigurationRuleComplianceSignalOptions:
1823+
description: How to generate compliance signals. Useful for cloud_configuration
1824+
rules only.
1825+
properties:
1826+
userActivationStatus:
1827+
description: Whether signals will be sent.
1828+
type: boolean
1829+
userGroupByFields:
1830+
description: Fields to use to group findings by when sending signals.
1831+
items:
1832+
type: string
1833+
type: array
1834+
type: object
1835+
CloudConfigurationRuleCreatePayload:
1836+
description: Create a new cloud configuration rule.
1837+
properties:
1838+
cases:
1839+
description: 'Description of generated findings and signals (severity and
1840+
channels to be notified in case of a signal). Must contain exactly one
1841+
item.
1842+
1843+
'
1844+
items:
1845+
$ref: '#/components/schemas/CloudConfigurationRuleCaseCreate'
1846+
type: array
1847+
complianceSignalOptions:
1848+
$ref: '#/components/schemas/CloudConfigurationRuleComplianceSignalOptions'
1849+
isEnabled:
1850+
description: Whether the rule is enabled.
1851+
example: true
1852+
type: boolean
1853+
message:
1854+
description: Message in markdown format for generated findings and signals.
1855+
example: '#Description
1856+
1857+
Explanation of the rule.
1858+
1859+
1860+
#Remediation
1861+
1862+
How to fix the security issue.
1863+
1864+
'
1865+
type: string
1866+
name:
1867+
description: The name of the rule.
1868+
example: My security monitoring rule.
1869+
type: string
1870+
options:
1871+
$ref: '#/components/schemas/CloudConfigurationRuleOptions'
1872+
tags:
1873+
description: Tags for generated findings and signals.
1874+
example:
1875+
- env:prod
1876+
- team:security
1877+
items:
1878+
description: Tag.
1879+
type: string
1880+
type: array
1881+
type:
1882+
$ref: '#/components/schemas/CloudConfigurationRuleType'
1883+
required:
1884+
- name
1885+
- isEnabled
1886+
- options
1887+
- complianceSignalOptions
1888+
- cases
1889+
- message
1890+
type: object
1891+
CloudConfigurationRuleOptions:
1892+
description: Options on cloud configuration rules.
1893+
properties:
1894+
complianceRuleOptions:
1895+
$ref: '#/components/schemas/CloudConfigurationComplianceRuleOptions'
1896+
required:
1897+
- complianceRuleOptions
1898+
type: object
1899+
CloudConfigurationRuleType:
1900+
description: The rule type.
1901+
enum:
1902+
- cloud_configuration
1903+
type: string
1904+
x-enum-varnames:
1905+
- CLOUD_CONFIGURATION
17641906
CloudWorkloadSecurityAgentRuleAttributes:
17651907
description: A Cloud Workload Security Agent rule returned by the API.
17661908
properties:
@@ -8344,6 +8486,7 @@ components:
83448486
oneOf:
83458487
- $ref: '#/components/schemas/SecurityMonitoringStandardRuleCreatePayload'
83468488
- $ref: '#/components/schemas/SecurityMonitoringSignalRuleCreatePayload'
8489+
- $ref: '#/components/schemas/CloudConfigurationRuleCreatePayload'
83478490
type: object
83488491
SecurityMonitoringRuleDecreaseCriticalityBasedOnEnv:
83498492
description: 'If true, signals in non-production environments have a lower severity
@@ -8549,6 +8692,8 @@ components:
85498692
SecurityMonitoringRuleOptions:
85508693
description: Options on rules.
85518694
properties:
8695+
complianceRuleOptions:
8696+
$ref: '#/components/schemas/CloudConfigurationComplianceRuleOptions'
85528697
decreaseCriticalityBasedOnEnv:
85538698
$ref: '#/components/schemas/SecurityMonitoringRuleDecreaseCriticalityBasedOnEnv'
85548699
detectionMethod:
@@ -8643,6 +8788,8 @@ components:
86438788
items:
86448789
$ref: '#/components/schemas/SecurityMonitoringRuleCase'
86458790
type: array
8791+
complianceSignalOptions:
8792+
$ref: '#/components/schemas/CloudConfigurationRuleComplianceSignalOptions'
86468793
filters:
86478794
description: Additional queries to filter matched events before they are
86488795
processed.
@@ -9323,6 +9470,8 @@ components:
93239470
items:
93249471
$ref: '#/components/schemas/SecurityMonitoringRuleCase'
93259472
type: array
9473+
complianceSignalOptions:
9474+
$ref: '#/components/schemas/CloudConfigurationRuleComplianceSignalOptions'
93269475
createdAt:
93279476
description: When the rule was created, timestamp in milliseconds.
93289477
format: int64

docs/datadog_api_client.v2.model.rst

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,55 @@ ci\_app\_warning
680680
:members:
681681
:show-inheritance:
682682

683+
cloud\_configuration\_compliance\_rule\_options
684+
-----------------------------------------------
685+
686+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_compliance_rule_options
687+
:members:
688+
:show-inheritance:
689+
690+
cloud\_configuration\_rego\_rule
691+
--------------------------------
692+
693+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rego_rule
694+
:members:
695+
:show-inheritance:
696+
697+
cloud\_configuration\_rule\_case\_create
698+
----------------------------------------
699+
700+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rule_case_create
701+
:members:
702+
:show-inheritance:
703+
704+
cloud\_configuration\_rule\_compliance\_signal\_options
705+
-------------------------------------------------------
706+
707+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rule_compliance_signal_options
708+
:members:
709+
:show-inheritance:
710+
711+
cloud\_configuration\_rule\_create\_payload
712+
-------------------------------------------
713+
714+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rule_create_payload
715+
:members:
716+
:show-inheritance:
717+
718+
cloud\_configuration\_rule\_options
719+
-----------------------------------
720+
721+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rule_options
722+
:members:
723+
:show-inheritance:
724+
725+
cloud\_configuration\_rule\_type
726+
--------------------------------
727+
728+
.. automodule:: datadog_api_client.v2.model.cloud_configuration_rule_type
729+
:members:
730+
:show-inheritance:
731+
683732
cloud\_workload\_security\_agent\_rule\_attributes
684733
--------------------------------------------------
685734

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""
2+
Create a cloud_configuration rule returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
7+
from datadog_api_client.v2.model.cloud_configuration_compliance_rule_options import (
8+
CloudConfigurationComplianceRuleOptions,
9+
)
10+
from datadog_api_client.v2.model.cloud_configuration_rego_rule import CloudConfigurationRegoRule
11+
from datadog_api_client.v2.model.cloud_configuration_rule_case_create import CloudConfigurationRuleCaseCreate
12+
from datadog_api_client.v2.model.cloud_configuration_rule_compliance_signal_options import (
13+
CloudConfigurationRuleComplianceSignalOptions,
14+
)
15+
from datadog_api_client.v2.model.cloud_configuration_rule_create_payload import CloudConfigurationRuleCreatePayload
16+
from datadog_api_client.v2.model.cloud_configuration_rule_options import CloudConfigurationRuleOptions
17+
from datadog_api_client.v2.model.cloud_configuration_rule_type import CloudConfigurationRuleType
18+
from datadog_api_client.v2.model.security_monitoring_rule_severity import SecurityMonitoringRuleSeverity
19+
20+
body = CloudConfigurationRuleCreatePayload(
21+
type=CloudConfigurationRuleType.CLOUD_CONFIGURATION,
22+
name="Example-Create_a_cloud_configuration_rule_returns_OK_response_cloud",
23+
is_enabled=False,
24+
cases=[
25+
CloudConfigurationRuleCaseCreate(
26+
status=SecurityMonitoringRuleSeverity.INFO,
27+
notifications=[
28+
"channel",
29+
],
30+
),
31+
],
32+
options=CloudConfigurationRuleOptions(
33+
compliance_rule_options=CloudConfigurationComplianceRuleOptions(
34+
complex_rule=False,
35+
rego_rule=CloudConfigurationRegoRule(
36+
policy="package datadog\n",
37+
resource_types=[
38+
"gcp_compute_disk",
39+
],
40+
),
41+
),
42+
),
43+
message="ddd",
44+
tags=[
45+
"my:tag",
46+
],
47+
compliance_signal_options=CloudConfigurationRuleComplianceSignalOptions(
48+
user_activation_status=True,
49+
user_group_by_fields=[
50+
"@account_id",
51+
],
52+
),
53+
)
54+
55+
configuration = Configuration()
56+
with ApiClient(configuration) as api_client:
57+
api_instance = SecurityMonitoringApi(api_client)
58+
response = api_instance.create_security_monitoring_rule(body=body)
59+
60+
print(response)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
Get a cloud configuration rule's details returns "OK" response
3+
"""
4+
5+
from os import environ
6+
from datadog_api_client import ApiClient, Configuration
7+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
8+
9+
# there is a valid "cloud_configuration_rule" in the system
10+
CLOUD_CONFIGURATION_RULE_ID = environ["CLOUD_CONFIGURATION_RULE_ID"]
11+
12+
configuration = Configuration()
13+
with ApiClient(configuration) as api_client:
14+
api_instance = SecurityMonitoringApi(api_client)
15+
response = api_instance.get_security_monitoring_rule(
16+
rule_id=CLOUD_CONFIGURATION_RULE_ID,
17+
)
18+
19+
print(response)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""
2+
Update a cloud configuration rule's details returns "OK" response
3+
"""
4+
5+
from os import environ
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.cloud_configuration_compliance_rule_options import (
9+
CloudConfigurationComplianceRuleOptions,
10+
)
11+
from datadog_api_client.v2.model.cloud_configuration_rego_rule import CloudConfigurationRegoRule
12+
from datadog_api_client.v2.model.cloud_configuration_rule_compliance_signal_options import (
13+
CloudConfigurationRuleComplianceSignalOptions,
14+
)
15+
from datadog_api_client.v2.model.security_monitoring_rule_case import SecurityMonitoringRuleCase
16+
from datadog_api_client.v2.model.security_monitoring_rule_options import SecurityMonitoringRuleOptions
17+
from datadog_api_client.v2.model.security_monitoring_rule_severity import SecurityMonitoringRuleSeverity
18+
from datadog_api_client.v2.model.security_monitoring_rule_update_payload import SecurityMonitoringRuleUpdatePayload
19+
20+
# there is a valid "cloud_configuration_rule" in the system
21+
CLOUD_CONFIGURATION_RULE_ID = environ["CLOUD_CONFIGURATION_RULE_ID"]
22+
23+
body = SecurityMonitoringRuleUpdatePayload(
24+
name="Example-Update_a_cloud_configuration_rule_s_details_returns_OK_response_cloud_updated",
25+
is_enabled=False,
26+
cases=[
27+
SecurityMonitoringRuleCase(
28+
status=SecurityMonitoringRuleSeverity.INFO,
29+
notifications=[],
30+
),
31+
],
32+
options=SecurityMonitoringRuleOptions(
33+
compliance_rule_options=CloudConfigurationComplianceRuleOptions(
34+
rego_rule=CloudConfigurationRegoRule(
35+
policy="package datadog\n",
36+
resource_types=[
37+
"gcp_compute_disk",
38+
],
39+
),
40+
),
41+
),
42+
message="ddd",
43+
tags=[],
44+
compliance_signal_options=CloudConfigurationRuleComplianceSignalOptions(
45+
user_activation_status=False,
46+
user_group_by_fields=[],
47+
),
48+
)
49+
50+
configuration = Configuration()
51+
with ApiClient(configuration) as api_client:
52+
api_instance = SecurityMonitoringApi(api_client)
53+
response = api_instance.update_security_monitoring_rule(rule_id=CLOUD_CONFIGURATION_RULE_ID, body=body)
54+
55+
print(response)

0 commit comments

Comments
 (0)