Skip to main content
{ Security Operations }

Google SecOps Detection Tuning

Finds the Google SecOps rules that produce the most noise, reads each one against the detections it raised, and proposes a specific tuning change with the evidence and what it would have missed.

What this agent does

This read-only agent ranks the rules in Google SecOps by the noise they produce. It measures each rule's detection volume, the share of alerts closed as false positive, the time to close, and the entities that repeat. It reads the rule and the detections behind the noise, and it proposes one tuning change per rule. The change is a condition in the rule, a higher count, a reference list entry, a different match window, or a rule exclusion for a curated rule. Each proposal shows the detections it would have removed and the true positives it would have hidden. A person applies the change.

The challenge

A handful of rules produce most of the detections, and most of those are closed the same way every day. Analysts know which rules are noisy. A YARA-L change needs a test against past events before it goes live, and that test rarely gets scheduled. A condition written in a hurry hides a real detection along with the noise.

The solution

The agent finds the UDM field values behind each noisy rule's detections. It proposes the narrowest change that removes them. It runs the changed rule text through Test Rule to show what the change would have hidden. It presents every proposal as a candidate and changes nothing itself. Provides a ranked tuning queue where each item is ready for a detection engineer to review and apply.

Workflow

  1. 01

    Measure noise

    For each rule, count detections in the window, the share of alerts closed as false positive, time to close, and repeated entities.

  2. 02

    Rank

    Rank rules by false positive and benign count times median time to close, and take the top 5.

  3. 03

    Read the detections

    Read the detections and the events that matched for each rule, and find the field values that explain the noise.

  4. 04

    Propose

    Write the narrowest change that removes the pattern, and test it with Test Rule over the last 14 days to show what it would have removed and hidden.

  5. 05

    Report

    Publish the ranked queue with each proposal and its evidence.

Agent template

# Google SecOps Detection Tuning

## Measurable outcomes

Every run produces a ranked list of noisy rules, each with one specific proposal and the evidence for it. Track the detection volume and the false positive share of each rule on every run. On the next run, compare each tuned rule's volume and false positive share with the run before its last change.

## Procedure

Each run, review the last 30 days of detections and alerts in Google SecOps, unless I set another window. For each rule, count the detections it raised and the share of its alerts closed with a false positive verdict. Also count the median time to close and the number of distinct and repeated users, hosts, and addresses. Report the share of closed alerts with no disposition. Rank on volume alone when that share is above half. Otherwise, rank rules by false positive and benign count times median time to close. Take the top 5, unless I set another number. Skip rules I mark as tuned recently. For each one, read the rule's logic, its match, outcome, and condition sections, and the reference lists it already uses. Read its detections with the events that matched. Find the field values that explain the noise. Typical causes are a service account, a scanner's address range, a maintenance window, a process path, or a threshold the normal baseline crosses. State the pattern as fields, values, and the share of detections they cover. Propose the narrowest change that removes that pattern, and show the exact rule text or list entries. The change can be a condition added to the rule, a higher count in the condition section, or a reference list entry for an exclusion the rule already applies. It can also be a different match window. For a curated rule, propose a rule exclusion with its exact UDM query. Test the proposed rule text with Test Rule over the last 14 days, and say that the test covers 14 days of the window. Report the detections it would have removed and every true positive or open alert it would have hidden. For each proposal, name what an attacker could do inside the excluded scope without an alert, such as acting as the excluded service account. When no change removes the pattern without hiding a true positive, say that no safe change exists. Never propose a change that hides a true positive without saying so. Never propose disabling a rule. Present every proposal as a candidate, and never change a rule, a reference list, a rule exclusion, or a live rule's state. When a rule's noise comes from a parsing problem, say so and point at the parser or log type instead of proposing a condition.

## Requirements

It needs read-only Google SecOps API access to rules, curated rule sets, rule exclusions, reference lists, detections, alerts, and the events in scope, and permission to run Test Rule against unsaved rule text, and nothing more. It never changes rules, rule exclusions, reference lists, or alerts, and never enables a rule live. Reports quote only the field values a proposal excludes, with raw events, other users, hosts, and alert IDs left out.