When a scanning rule matches, Atatus attaches tags to the event before storing it. Those tags are how you find sensitive data across your logs without ever seeing the values themselves.
This page covers searching for matches, building facets and dashboards, alerting, and what to check when you expect findings but do not see any.
The tags you search on
Every rule attaches two tags:
| Tag | Contains | Example value |
|---|---|---|
sensitive_data:<type> |
The specific format that matched | visa_credit_card |
sensitive_data_category:<category> |
The broad grouping | credit_card |
In Logs these appear as two facets:
| Facet | Search key |
|---|---|
| Sensitive Data | @sensitive_data |
| SDC Category | @sensitive_data_category |
The search bar also accepts @sensitive_data_catagory, an older misspelling of the same key. Both forms return the same results, so existing saved searches and dashboards keep working. Use @sensitive_data_category in anything new.
Search for matched events
Open Logs and use the search bar. See Logs Search Syntax for the full query language.
To find every event that any rule matched:
@sensitive_data:*
To find events where a specific format was detected:
@sensitive_data:visa_credit_card
To find everything in a category:
@sensitive_data_category:credit_card
To narrow to a service as well:
@sensitive_data_category:pii service:checkout-api
You can also click the Sensitive Data and SDC Category facets in the logs sidebar instead of typing a query. The facet list doubles as a quick inventory of what your rules are finding.
What you see in a matched event
Open an event and you will see the masked value in place of the original, in the form your rule's action produced:
| Action | What the stored value looks like |
|---|---|
| Hash | A hashed token in place of the value. |
| Redact | Your replacement text, for example [sensitive_value]. |
| Partially Redact | Part of the value with the rest masked, for example **** **** **** 1234. |
| No Action | The original value, unchanged. The event is still tagged. |
Atatus never stores the original value for the masking actions, so there is no way to reveal it from the UI or the API. If you need the value for an investigation, get it from the source system.
Build a dashboard
The tags work like any other attribute, so you can chart them. A useful starting dashboard has:
- A count of matched events over time, broken down by
@sensitive_data_category. A sudden jump usually means a new code path started logging something it should not. - A top list by
service, to show which services handle the most sensitive data. - A top list by
@sensitive_data, to show which formats appear most often.
Alert on sensitive data
Because findings are ordinary tagged events, you can alert on them with a standard log alert.
Two alerts that earn their keep:
Sensitive data in an unexpected service. Alert when
@sensitive_data:*matches a service that should never handle it. This catches data leaking across service boundaries.@sensitive_data:* -service:payments -service:checkout-apiA spike in a category. Alert when the count of
@sensitive_data_category:credit_cardevents rises well above its normal level, which usually points at a new logging statement.
See Logs Alerts for how to create and route these alerts.
When you expect findings but see none
Work through these in order:
- Check both toggles. The scanning group and the individual rules each have their own enabled state, and both are off when first created. A group with no enabled rules is skipped entirely. This is the most common cause.
- Check the scanning method. If the group's scanning method for Logs is
None, no log data is scanned no matter what the rules say. - Check the sampling rate. At
Samplewith a low rate, most events are not scanned. Set the method to100%to confirm the rule works, then lower it again if you need to. - Check the filter. A group filter that does not match your traffic means the group never sees the events. Clear the filter temporarily to test.
- Check the timing. Configuration applies to newly received logs. Events stored before you enabled the rule are not rescanned, so search a time range that starts after you enabled it.
- Test the pattern. Open the rule for editing and paste a real log line into the evaluator. If it shows no matches there, the problem is the pattern or its proximity keywords, not the pipeline.
- Check the keywords. If the rule has included keywords, a match is only kept when one of those words appears within the Characters before match window. Widen the window or remove a keyword to test.
Next steps
- Scanning Rules explains keywords, scoping, and actions.
- Custom Rules covers tuning your own patterns.
- Sensitive Data Classifier Overview recaps how the pipeline fits together.
+1-415-800-4104