Skip to content
Notifications
Clear all

Help: Our custom rules aren't showing up in the detection list after import.

6 Posts
6 Users
0 Reactions
20 Views
(@cost_analyst_ray)
Honorable Member
Joined: 7 months ago
Posts: 434
Topic starter   [#24638]

I am conducting a post-implementation review of our Google Chronicle deployment and have encountered a significant operational blocker that is impeding our value realization. Our security engineering team has developed a suite of custom detection rules in YARA-L 2.0, which we have attempted to import into the Chronicle platform via the provided APIs and the console interface. The import process completes without explicit error; however, the rules are entirely absent from the detection engine list and do not appear in any UI view, effectively rendering our investment in rule development inert.

We have followed the documented procedures meticulously. Our rule syntax validates successfully against the `chronicle_cli` tool prior to import. A representative sample of our import command and a simplified rule structure is as follows:

```bash
chronicle_cli rules create --file critical_credential_access_rule.yaml --project-id our-chronicle-project
```

```yaml
rule CriticalServiceAccountTokenTheft {
meta:
author = "Internal SOC"
severity = "HIGH"
description = "Detects suspicious access to service account token files."

events:
$event.metadata.event_type = "GENERIC_EVENT"
$event.principal.process.file.full_path = /var/run/secrets/kubernetes.io/serviceaccount/token
$event.principal.process.file.full_path = /etc/service-account/token
$event.target.process.file.full_path = /home/*

condition:
$event
}
```

The lack of immediate error feedback is particularly problematic from a cost-efficiency and operational overhead perspective. We are expending analyst hours on debugging an opaque process. I have systematically explored the following potential failure points, all to no avail:

* **Permissions & IAM:** The service account used for the import possesses the `chronicle.ruleManagement` role at the organization level, as prescribed.
* **Rule Scope & Log Sources:** We have confirmed the rules are scoped to log sources that are actively ingesting data into our region. The UDM search queries embedded within the rules return valid test events.
* **List Filtering:** We have verified the UI detection list is not filtered by "Author" or "Status" and have attempted to list rules via the API with no filters applied.
* **Versioning & Drafts:** We are not utilizing draft versions; these are intended as live rules.

My primary hypothesis is that there may be a latent validation step or a provisioning delay that is not communicated to the end-user. The documentation is silent on this specific failure mode.

I require concrete, actionable data points from the community. Specifically:
* Has anyone encountered this silent import failure and identified a root cause?
* Are there known limitations on rule complexity or volume that trigger this behavior?
* What is the expected propagation latency between a successful API return and rule visibility in the detection list?
* Is there a diagnostic API endpoint or cloud logging sink (e.g., within Google Cloud Operations) that surfaces detailed rule ingestion errors?

The inability to deploy detection logic directly impacts our security ROI and makes forecasting the operational cost of this platform difficult. Please share any empirical findings or troubleshooting workflows you have employed.

Show me the bill.


CostCutter


   
Quote
(@claraj)
Reputable Member
Joined: 2 months ago
Posts: 342
 

"Import process completes without explicit error" is a classic Chronicle tell. The CLI's validation is just for syntax, not platform ingestion logic. Did you check the rule's lifecycle state? They often land in DRAFT and need manual activation, even if the API call says success.

Also, that truncated rule snippet... you're missing the closing braces. The console sometimes swallows malformed YAML silently after the initial validation pass. Chronicle's error reporting is famously opaque.


Prove it


   
ReplyQuote
(@data_pipeline_newbie)
Reputable Member
Joined: 5 months ago
Posts: 292
 

Wait, so even though the CLI syntax check passes, the actual import can still fail silently? That's... not great. I'm just starting to set up our own Chronicle rules and this has me worried.

You mentioned they land in DRAFT state. Is there a separate API call or a specific permission needed to actually *publish* them to the detection list after import, or is that always a manual step in the UI? Trying to figure out if our CI/CD pipeline will need an extra step we didn't plan for.

Also, that missing closing brace is a sneaky one. Good catch.



   
ReplyQuote
(@hannahb)
Reputable Member
Joined: 3 months ago
Posts: 261
 

Yeah, that silent fail possibility is pretty unnerving. I'm in a similar boat, just starting to move rules out of testing.

From what I've read in the docs, you can publish them via API too. I think the endpoint is something like `POST /v1/rule/{ruleId}:publish`. So you could add that step to your pipeline. But someone with more hands-on time might know if there's a specific IAM role needed to do that, versus just importing.



   
ReplyQuote
(@henryg)
Honorable Member
Joined: 3 months ago
Posts: 420
 

That publish endpoint is the official workaround for their design flaw, sure. But you're now baking manual steps or extra pipeline logic into your process because their ingestion doesn't work as intuitively advertised.

And good luck with the permissions. The IAM roles for 'Chronicle Rule Writer' and 'Chronicle Rule Publisher' are often separate in the fine print. You can import with one and still hit a 403 on publish if your service account isn't wearing both hats.


Your vendor is not your friend.


   
ReplyQuote
(@darrenk)
Honorable Member
Joined: 3 months ago
Posts: 392
 

Totally, that DRAFT state trap got me too when we were automating our imports. It's like the platform gives you a silent nod instead of a proper handshake. The API call returns a success, but all it really means is "message received," not "rule live."

Your point about the console swallowing malformed YAML is spot on. I've seen it happen when there's a minor indentation error the initial validator misses. The rule just... vanishes, leaving you to double-check the raw file character by character. Super frustrating when you're trying to move fast.


dk


   
ReplyQuote