Control: GuardDuty should be enabled
Description
AWS GuardDuty can help to monitor and detect potential cybersecurity events by using threat intelligence feeds.
Usage
Run the control in your terminal:
powerpipe control run aws_compliance.control.guardduty_enabled
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run aws_compliance.control.guardduty_enabled --share
SQL
This control uses a named query:
select 'arn:' || r.partition || '::' || r.region || ':' || r.account_id as resource, case when r.region = any(array['af-south-1', 'ap-northeast-3', 'ap-southeast-3', 'eu-south-1', 'cn-north-1', 'cn-northwest-1', 'me-south-1', 'us-gov-east-1']) then 'skip' -- Skip any regions that are disabled in the account. when r.opt_in_status = 'not-opted-in' then 'skip' when status = 'ENABLED' and master_account ->> 'AccountId' is null then 'ok' when status = 'ENABLED' and master_account ->> 'AccountId' is not null then 'info' else 'alarm' end as status, case when r.region = any(array['af-south-1', 'ap-northeast-3', 'ap-southeast-3', 'eu-south-1', 'cn-north-1', 'cn-northwest-1', 'me-south-1', 'us-gov-east-1']) then r.region || ' region not supported.' when r.opt_in_status = 'not-opted-in' then r.region || ' region is disabled.' when status is null then 'No GuardDuty detector found in ' || r.region || '.' when status = 'ENABLED' and master_account ->> 'AccountId' is null then r.region || ' detector ' || d.title || ' enabled.' when status = 'ENABLED' and master_account ->> 'AccountId' is not null then r.region || ' detector ' || d.title || ' is managed by account ' || (master_account ->> 'AccountId') || ' via delegated admin.' else r.region || ' detector ' || d.title || ' disabled.' end as reason , r.region, r.account_idfrom aws_region as r left join aws_guardduty_detector d on r.account_id = d.account_id and r.name = d.region;