For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/observability_pipelines/processors/sensitive_data_scanner.md.
A documentation index is available at /llms.txt.
This product is not supported for your selected Datadog site. ().
Available for:
Logs
Overview
The Sensitive Data Scanner processor scans logs to detect and redact or hash sensitive information such as PII, PCI, and custom sensitive data. You can pick from Datadog’s library of predefined rules, or input custom Regex rules to scan for sensitive data.
You can set up the pipeline and processor in the UI, API, or Terraform.
Define a filter query. Only logs that match the specified filter query are scanned and processed. All logs are sent to the next step in the pipeline, regardless of whether they match the filter query. See Search Syntax for more information.
Click Add Scanning Rule.
Select one of the following:
In the dropdown menu, select the library rule you want to use.
In the Define rule target and conditions section, select if you want to scan the Entire Event, Specific Attributes, or Exclude Attributes in the dropdown menu.
If you are scanning the entire event, you can optionally exclude specific attributes from getting scanned. Use path notation (outer_key.inner_key) to access nested keys. For specified attributes with nested data, all nested data is excluded.
If you are scanning specific attributes, specify which attributes you want to scan. Use path notation (outer_key.inner_key) to access nested keys. For specified attributes with nested data, all nested data is scanned.
For Define actions on match, select the action you want to take for the matched information. Note: Redaction, partial redaction, and hashing are all irreversible actions.
Redact: Replaces all matching values with the text you specify in the Replacement text field.
Partially Redact: Replaces a specified portion of all matched data. In the Redact section, specify the number of characters you want to redact and which part of the matched data to redact.
Hash: Replaces all matched data with a unique identifier. The UTF-8 bytes of the match are hashed with the 64-bit fingerprint of FarmHash.
Optionally, click Add Field to add tags you want to associate with the matched events.
Add a name for the scanning rule.
Optionally, add a description for the rule.
Click Save.
Add additional keywords
After adding scanning rules from the library, you can edit each rule separately and add additional keywords to the keyword dictionary.
In the Sensitive Data Scanner processor with the rule you want to edit, click Manage Scanning Rules.
Toggle Use recommended keywords if you want the rule to use them. Otherwise, add your own keywords to the Create keyword dictionary field. You can also require that these keywords be within a specified number of characters of a match. By default, keywords must be within 30 characters before a matched value.
Click Update.
In the Define match conditions section, specify the regex pattern to use for matching against events in the Define the regex field. See Writing Effective Grok Parsing Rules with Regular Expressions for more information.
Sensitive Data Scanner supports Perl Compatible Regular Expressions (PCRE), but the following patterns are not supported:
Backreferences and capturing sub-expressions (lookarounds)
Arbitrary zero-width assertions
Subroutine references and recursive patterns
Conditional patterns
Backtracking control verbs
The \C “single-byte” directive (which breaks UTF-8 sequences)
The \R newline match
The \K start of match reset directive
Callouts and embedded code
Atomic grouping and possessive quantifiers
Enter sample data in the Add sample data field to verify that your regex pattern is valid.
For Create keyword dictionary, add keywords to refine detection accuracy when matching regex conditions. For example, if you are scanning for a sixteen-digit Visa credit card number, you can add keywords like visa, credit, and card. You can also require that these keywords be within a specified number of characters of a match. By default, keywords must be within 30 characters before a matched value.
In the Define rule target and conditions section, select if you want to scan the Entire Event, Specific Attributes, or Exclude Attributes in the dropdown menu.
If you are scanning the entire event, you can optionally exclude specific attributes from getting scanned. Use path notation (outer_key.inner_key) to access nested keys. For specified attributes with nested data, all nested data is excluded.
If you are scanning specific attributes, specify which attributes you want to scan. Use path notation (outer_key.inner_key) to access nested keys. For specified attributes with nested data, all nested data is scanned.
For Define actions on match, select the action you want to take for the matched information. Note: Redaction, partial redaction, and hashing are all irreversible actions.
Redact: Replaces all matching values with the text you specify in the Replacement text field.
Partially Redact: Replaces a specified portion of all matched data. In the Redact section, specify the number of characters you want to redact and which part of the matched data to redact.
Hash: Replaces all matched data with a unique identifier. The UTF-8 bytes of the match is hashed with the 64-bit fingerprint of FarmHash.
Optionally, click Add Field to add tags you want to associate with the matched events.
Use outer_key.inner_key to reference the key with the value inner_value.
Use outer_key.a.double_inner_key to reference the key with the value double_inner_value.
To specify a nested field with a literal . in the attribute key, wrap the key in escaped quotes in the search query. For example, the search query "service.status":disabled matches the event {"service.status": "disabled"}.
Set up the processor using Terraform
You can use the Datadog Observability Pipeline Terraform resource to set up a pipeline with the Sensitive Data Scanner processor. To add a rule to the Sensitive Data Scanner processor using Terraform:
Repeat steps 1 and 2 for all library rules you want to add.
Full configuration example
If you want to use the Sensitive Data Scanner processor to scan for AWS Access Key IDs and US Social Security Numbers, and redact them by replacing them with the string ***:
In your Datadog Observability Pipeline resource’s Sensitive Data Scanner processor, use the Sensitive Data Scanner rules defined in the data sources.
data"datadog_sensitive_data_scanner_standard_pattern""aws_access_key"{filter="AWS Access Key ID Scanner"}data"datadog_sensitive_data_scanner_standard_pattern""us_ssn"{filter="US Social Security Number Scanner"}resource"datadog_observability_pipeline""sensitive_data_pipeline"{name="Sensitive Data Pipeline"config{source{id="source-0"datadog_agent{}}processor_group{display_name="Processors"enabled=trueid="group-0"include="*"inputs=["source-0"]processor{display_name="Sensitive Data Scanner"enabled=trueid="processor-sds-0"include="*"sensitive_data_scanner{rule{name="Redact AWS Access Key IDs"tags=[]on_match{redact{replace="***"}}pattern{library{id=data.datadog_sensitive_data_scanner_standard_pattern.aws_access_key.iduse_recommended_keywords=true}}scope{all=true}}rule{name="Redact US SSNs"tags=[]on_match{redact{replace="***"}}pattern{library{id=data.datadog_sensitive_data_scanner_standard_pattern.us_ssn.iduse_recommended_keywords=true}}scope{all=true}}}}}destination{id="destination-0"inputs=["group-0"]datadog_logs{}}}}
Best practices to optimize performance
The Sensitive Data Scanner processor is CPU intensive. Use the following best practices to optimize performance.
Only enable rules you need
Rules that are enabled but not used consume unnecessary resources. Check the Sensitive Data Scanner processor to view how many matches each rule has had over the past 24 hours.
Only scan the events and fields that need to be scanned for sensitive data
The time it takes the Sensitive Data Scanner to scan an event roughly scales with the size of the event. To optimize processor performance:
If you know the types of events you want to scan, define a processor query that only sends the events you want to the processor.
Reduce scanning time by targeting specific event attributes for scanning or excluding event attributes from being scanned. See the Define rule target and conditions step in Set up the processor.
Evaluate and benchmark performance optimizations
Use the pipelines.component_latency_seconds metric to:
Benchmark processor performance when you add a rule
Evaluate performance after making optimization changes, such as reducing the number of fields being scanned and removing unused rules
To view the pipelines.component_latency_seconds metric:
In the metric field, enter pipelines.component_latency_seconds.
In the from field, enter the tag component_id:<COMPONENT_ID>, where <COMPONENT_ID> is the ID for your Sensitive Data Scanner processor.
Note: pipelines.component_latency_seconds is a distribution metric so you must enable percentiles for that metric. See Enabling advanced query functionality for instructions.
Further reading
Additional helpful documentation, links, and articles: