Export Detections

To get started or to adopt detection as code after already adding detections to your account the RunReveal CLI has the commands necessary to bootstrap a code repo from nothing, so you can

Once you're logged into the CLI from the getting started steps, you can utilize the export functionality to download all detection state into a directory of your choosing.

:) runreveal detections export -d ~/detection-as-code
:) ls -l ~/detection-as-code 
total 0
drwxr--r--   4 evan  staff   128 Jun 18 09:42 1password
drwxr--r--   8 evan  staff   256 Jun 18 09:42 cf-audit
drwxr--r--  16 evan  staff   512 Jun 18 09:42 cloudtrail
drwxr--r--  16 evan  staff   512 Jun 18 09:42 gcp
drwxr--r--  20 evan  staff   640 Jun 18 09:42 google-workspace
drwxr--r--   8 evan  staff   256 Jun 18 09:42 gsuite
drwxr--r--  18 evan  staff   576 Jun 18 09:42 notion
drwxr--r--  18 evan  staff   576 Jun 18 09:42 okta
drwxr--r--   6 evan  staff   192 Jun 18 09:42 tailscale-audit
drwxr--r--  60 evan  staff  1920 Jun 18 09:42 uncategorized

These detections are categorized by sourceType and will be sorted into directories by the categories tag if they match the name of any sourceType within RunReveal.

After exporting each detection will be output into two files. The detection query and the detection configuration and metadata.

Here's an example containing both the yaml and sql for our Okta detection of a user reporting a suspicious action.

:) cat okta-user-suspicious-report.sql 
select * from okta_logs where
  eventType='user.account.report_suspicious_activity_by_enduser'
  and receivedAt > {from:DateTime} and receivedAt < {to:DateTime}%

:) cat okta-user-suspicious-report.yaml
name: okta-user-suspicious-report
displayName: Okta User Reported Suspicious Activity
description: Suspicious activity reported by end user
file: okta-user-suspicious-report.sql
categories:
- signal
- okta
sourceTypes:
- okta
schedule: "*/15 * * * *"
notificationNames: []
mitreAttacks:
- initial-access
severity: ""
riskScore: 0

First time you export

The first time you export existing detections that were made in the web ui you'll first need to upload them and force overwrite them from the CLI before your CI/CD system can use them.

This step will force overwrite all detections that you have in the repo so they will be managed via detection as code going forward.

$ runreveal detections sync -o -d ~/detection-as-code