Skip to content
Please update to the latest release 0.77.3 to address Multiple CVEs.
Server.Utils.BackupS3

Server.Utils.BackupS3

Automatically zips and uploads collected flow results to an S3-compatible bucket.

You will need to provide credentials to upload to the bucket. The credentials can be provided as parameters or they will be taken from the server metadata (as DefaultBucket, DefaultRegion, S3AccessKeyId, S3AccessSecret, S3AccessToken)

Thanks to @shortxstack and @Recon_InfoSec


name: Server.Utils.BackupS3
description: |
  Automatically zips and uploads collected flow results to an
  S3-compatible bucket.

  You will need to provide credentials to upload to the bucket. The
  credentials can be provided as parameters or they will be taken from
  the server metadata (as DefaultBucket, DefaultRegion, S3AccessKeyId,
  S3AccessSecret, S3AccessToken)

  Thanks to @shortxstack and @Recon_InfoSec

type: SERVER_EVENT

parameters:
   - name: ArtifactNameRegex
     default: "."
     description: A regular expression to select which artifacts to upload
     type: regex
     
   - name: Bucket
     description: The bucket to upload to (blank to use server metadata)

   - name: Endpoint
     
   - name: Region
   
   - name: CredentialsKey
   
   - name: CredentialsSecret
   
   - name: CredentialsToken
   
   - name: Secret
     description: A Secret name to use for uploading.
     
   - name: RemoveDownloads
     type: bool
     description: If set, remove the flow export files after upload

sources:
  - query: |
      -- Allow these settings to be set by the artifact parameter or
      -- the server metadata.
      LET completions = SELECT *,
         client_info(client_id=ClientId).os_info.fqdn AS Fqdn,
         create_flow_download(client_id=ClientId,
             flow_id=FlowId, wait=TRUE) AS FlowDownload
      FROM watch_monitoring(artifact="System.Flow.Completion")
      WHERE Flow.artifacts_with_results =~ ArtifactNameRegex

      SELECT upload_s3(
         bucket=Bucket,
         credentials_key=CredentialsKey,
         credentials_secret=CredentialsSecret,
         endpoint=Endpoint,
         credentials_token=CredentialsToken,
         secret=Secret,
         region=Region,
         file=FlowDownload,
         accessor="fs",
         name=format(format="Host %v %v %v.zip",
                     args=[Fqdn, FlowId, timestamp(epoch=now())])) AS Upload
      FROM completions
      WHERE Upload OR
        if(condition=RemoveDownloads,
           then=rm(filename=file_store(path=FlowDownload)))