monitoring_rules
Creates, updates, deletes, gets or lists a monitoring_rules
resource.
Overview
Name | monitoring_rules |
Type | Resource |
Id | datadog.security.monitoring_rules |
Fields
The following fields are returned by SELECT
queries:
- get_security_monitoring_rule
- list_security_monitoring_rules
Name | Datatype | Description |
---|
Name | Datatype | Description |
---|
Methods
The following methods are available for this resource:
Name | Accessible by | Required Params | Optional Params | Description |
---|---|---|---|---|
get_security_monitoring_rule | select | rule_id , region | Get a rule's details. | |
list_security_monitoring_rules | select | region | page[size] , page[number] | List rules. |
create_security_monitoring_rule | insert | region , data__name , data__isEnabled , data__queries , data__options , data__cases , data__message | Create a detection rule. | |
update_security_monitoring_rule | replace | rule_id , region | Update an existing rule. When updating cases , queries or options , the whole fieldmust be included. For example, when modifying a query all queries must be included. Default rules can only be updated to be enabled, to change notifications, or to update the tags (default tags cannot be removed). | |
delete_security_monitoring_rule | delete | rule_id , region | Delete an existing rule. Default rules cannot be deleted. | |
convert_security_monitoring_rule_from_jsonto_terraform | exec | region , name , isEnabled , queries , options , cases , message | Convert a rule that doesn't (yet) exist from JSON to Terraform for datadog provider resource datadog_security_monitoring_rule. | |
test_security_monitoring_rule | exec | region | Test a rule. | |
validate_security_monitoring_rule | exec | region , name , isEnabled , queries , options , cases , message | Validate a detection rule. | |
convert_existing_security_monitoring_rule | exec | rule_id , region | Convert an existing rule from JSON to Terraform for datadog provider resource datadog_security_monitoring_rule. | |
test_existing_security_monitoring_rule | exec | rule_id , region | Test an existing rule. |
Parameters
Parameters can be passed in the WHERE
clause of a query. Check the Methods section to see which parameters are required or optional for each operation.
Name | Datatype | Description |
---|---|---|
region | string | (default: datadoghq.com) |
rule_id | string | The ID of the rule. |
page[number] | integer (int64) | Specific page number to return. |
page[size] | integer (int64) | Size for a given page. The maximum allowed value is 100. |
SELECT
examples
- get_security_monitoring_rule
- list_security_monitoring_rules
Get a rule's details.
SELECT
*
FROM datadog.security.monitoring_rules
WHERE rule_id = '{{ rule_id }}' -- required
AND region = '{{ region }}' -- required
;
List rules.
SELECT
*
FROM datadog.security.monitoring_rules
WHERE region = '{{ region }}' -- required
AND page[size] = '{{ page[size] }}'
AND page[number] = '{{ page[number] }}'
;
INSERT
examples
- create_security_monitoring_rule
- Manifest
Create a detection rule.
INSERT INTO datadog.security.monitoring_rules (
data__calculatedFields,
data__cases,
data__filters,
data__groupSignalsBy,
data__hasExtendedTitle,
data__isEnabled,
data__message,
data__name,
data__options,
data__queries,
data__referenceTables,
data__schedulingOptions,
data__tags,
data__thirdPartyCases,
data__type,
region
)
SELECT
'{{ calculatedFields }}',
'{{ cases }}' /* required */,
'{{ filters }}',
'{{ groupSignalsBy }}',
{{ hasExtendedTitle }},
{{ isEnabled }} /* required */,
'{{ message }}' /* required */,
'{{ name }}' /* required */,
'{{ options }}' /* required */,
'{{ queries }}' /* required */,
'{{ referenceTables }}',
'{{ schedulingOptions }}',
'{{ tags }}',
'{{ thirdPartyCases }}',
'{{ type }}',
'{{ region }}'
;
# Description fields are for documentation purposes
- name: monitoring_rules
props:
- name: region
value: string
description: Required parameter for the monitoring_rules resource.
- name: calculatedFields
value: array
description: |
Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.
- name: cases
value: array
description: |
Cases for generating signals.
- name: filters
value: array
description: |
Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.
- name: groupSignalsBy
value: array
description: |
Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.
- name: hasExtendedTitle
value: boolean
description: |
Whether the notifications include the triggering group-by values in their title.
- name: isEnabled
value: boolean
description: |
Whether the rule is enabled.
- name: message
value: string
description: |
Message for generated signals.
- name: name
value: string
description: |
The name of the rule.
- name: options
value: object
description: |
Options.
- name: queries
value: array
description: |
Queries for selecting logs which are part of the rule.
- name: referenceTables
value: array
description: |
Reference tables for the rule.
- name: schedulingOptions
value: object
description: |
Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.
- name: tags
value: array
description: |
Tags for generated signals.
- name: thirdPartyCases
value: array
description: |
Cases for generating signals from third-party rules. Only available for third-party rules.
- name: type
value: string
description: |
The rule type.
valid_values: ['api_security', 'application_security', 'log_detection', 'workload_security']
REPLACE
examples
- update_security_monitoring_rule
Update an existing rule. When updating cases
, queries
or options
, the whole field
must be included. For example, when modifying a query all queries must be included.
Default rules can only be updated to be enabled, to change notifications, or to update
the tags (default tags cannot be removed).
REPLACE datadog.security.monitoring_rules
SET
data__calculatedFields = '{{ calculatedFields }}',
data__cases = '{{ cases }}',
data__complianceSignalOptions = '{{ complianceSignalOptions }}',
data__customMessage = '{{ customMessage }}',
data__customName = '{{ customName }}',
data__filters = '{{ filters }}',
data__groupSignalsBy = '{{ groupSignalsBy }}',
data__hasExtendedTitle = {{ hasExtendedTitle }},
data__isEnabled = {{ isEnabled }},
data__message = '{{ message }}',
data__name = '{{ name }}',
data__options = '{{ options }}',
data__queries = '{{ queries }}',
data__referenceTables = '{{ referenceTables }}',
data__schedulingOptions = '{{ schedulingOptions }}',
data__tags = '{{ tags }}',
data__thirdPartyCases = '{{ thirdPartyCases }}',
data__version = {{ version }}
WHERE
rule_id = '{{ rule_id }}' --required
AND region = '{{ region }}' --required;
DELETE
examples
- delete_security_monitoring_rule
Delete an existing rule. Default rules cannot be deleted.
DELETE FROM datadog.security.monitoring_rules
WHERE rule_id = '{{ rule_id }}' --required
AND region = '{{ region }}' --required
;
Lifecycle Methods
- convert_security_monitoring_rule_from_jsonto_terraform
- test_security_monitoring_rule
- validate_security_monitoring_rule
- convert_existing_security_monitoring_rule
- test_existing_security_monitoring_rule
Convert a rule that doesn't (yet) exist from JSON to Terraform for datadog provider
resource datadog_security_monitoring_rule.
EXEC datadog.security.monitoring_rules.convert_security_monitoring_rule_from_jsonto_terraform
@region='{{ region }}' --required
@@json=
'{
"calculatedFields": "{{ calculatedFields }}",
"cases": "{{ cases }}",
"customMessage": "{{ customMessage }}",
"customName": "{{ customName }}",
"filters": "{{ filters }}",
"groupSignalsBy": "{{ groupSignalsBy }}",
"hasExtendedTitle": {{ hasExtendedTitle }},
"isEnabled": {{ isEnabled }},
"message": "{{ message }}",
"name": "{{ name }}",
"options": "{{ options }}",
"queries": "{{ queries }}",
"referenceTables": "{{ referenceTables }}",
"schedulingOptions": "{{ schedulingOptions }}",
"tags": "{{ tags }}",
"thirdPartyCases": "{{ thirdPartyCases }}",
"type": "{{ type }}"
}'
;
Test a rule.
EXEC datadog.security.monitoring_rules.test_security_monitoring_rule
@region='{{ region }}' --required
@@json=
'{
"rule": "{{ rule }}",
"ruleQueryPayloads": "{{ ruleQueryPayloads }}"
}'
;
Validate a detection rule.
EXEC datadog.security.monitoring_rules.validate_security_monitoring_rule
@region='{{ region }}' --required
@@json=
'{
"calculatedFields": "{{ calculatedFields }}",
"cases": "{{ cases }}",
"customMessage": "{{ customMessage }}",
"customName": "{{ customName }}",
"filters": "{{ filters }}",
"groupSignalsBy": "{{ groupSignalsBy }}",
"hasExtendedTitle": {{ hasExtendedTitle }},
"isEnabled": {{ isEnabled }},
"message": "{{ message }}",
"name": "{{ name }}",
"options": "{{ options }}",
"queries": "{{ queries }}",
"referenceTables": "{{ referenceTables }}",
"schedulingOptions": "{{ schedulingOptions }}",
"tags": "{{ tags }}",
"thirdPartyCases": "{{ thirdPartyCases }}",
"type": "{{ type }}"
}'
;
Convert an existing rule from JSON to Terraform for datadog provider
resource datadog_security_monitoring_rule.
EXEC datadog.security.monitoring_rules.convert_existing_security_monitoring_rule
@rule_id='{{ rule_id }}' --required,
@region='{{ region }}' --required
;
Test an existing rule.
EXEC datadog.security.monitoring_rules.test_existing_security_monitoring_rule
@rule_id='{{ rule_id }}' --required,
@region='{{ region }}' --required
@@json=
'{
"rule": "{{ rule }}",
"ruleQueryPayloads": "{{ ruleQueryPayloads }}"
}'
;