Skip to content

Filter ​

The Filter resource lets you manage AWS GuardDuty Filters that help in defining which findings should be included in the detection of threats. Filters allow you to take specific actions on the findings based on the defined criteria.

Minimal Example ​

Create a basic GuardDuty Filter with the required properties and one optional property.

ts
import AWS from "alchemy/aws/control";

const simpleFilter = await AWS.GuardDuty.Filter("simpleFilter", {
  DetectorId: "12abcdef34gh567ijkl890mnopqrstu",
  FindingCriteria: {
    Criterion: {
      severity: {
        Eq: ["HIGH"]
      }
    }
  },
  Name: "HighSeverityFilter"
});

Advanced Configuration ​

Configure a filter with an action and a rank to prioritize it:

ts
const advancedFilter = await AWS.GuardDuty.Filter("advancedFilter", {
  DetectorId: "12abcdef34gh567ijkl890mnopqrstu",
  FindingCriteria: {
    Criterion: {
      severity: {
        Eq: ["MEDIUM", "HIGH"]
      },
      type: {
        Eq: ["UnauthorizedAccess:Root", "UnauthorizedAccess:AWSAccount"]
      }
    }
  },
  Name: "MediumAndHighSeverityFilter",
  Action: "NOOP",
  Rank: 1
});

Tagging for Organization ​

Create a filter with tags for better organization and management:

ts
const taggedFilter = await AWS.GuardDuty.Filter("taggedFilter", {
  DetectorId: "12abcdef34gh567ijkl890mnopqrstu",
  FindingCriteria: {
    Criterion: {
      severity: {
        Eq: ["LOW", "MEDIUM"]
      }
    }
  },
  Name: "LowAndMediumSeverityFilter",
  Tags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Team", Value: "Security" }
  ]
});

Adoption of Existing Filter ​

Create a filter that adopts an existing one instead of failing if it exists:

ts
const adoptFilter = await AWS.GuardDuty.Filter("adoptFilter", {
  DetectorId: "12abcdef34gh567ijkl890mnopqrstu",
  FindingCriteria: {
    Criterion: {
      severity: {
        Eq: ["HIGH"]
      }
    }
  },
  Name: "AdoptHighSeverityFilter",
  adopt: true
});