Back to Checks
Security Hub is enabled with standards or integrations configured
securityhub_enabled
Service: securityhubSeverity: high
OfficialBuilt-inVerified
Resource Type:Other
AWS Security Hub is ACTIVE in the Region and has at least one enabled security standard or connected integration. Otherwise, it is either not enabled or enabled without standards/integrations.
Risk
Absent Security Hub coverage or standards, security signals are fragmented and control checks don't run. High-risk findings can be missed or delayed, enabling data exfiltration, persistence, and lateral movement. This reduces visibility and undermines confidentiality, integrity, and availability across accounts/Regions.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks securityhub_enabledRecommendation
- Enable in all required accounts/Regions
- Turn on relevant standards (
AWS FSBP,CIS) - Connect AWS and third-party integrations
- Use central configuration and least privilege
- Automate triage and monitor continuously for defense in depth
Remediation
Terraform
# Enable Security Hub
resource "aws_securityhub_account" "<example_resource_name>" {}
# Critical: Enable at least one standard so the check passes
resource "aws_securityhub_standards_subscription" "<example_resource_name>_fsbp" {
standards_arn = "arn:aws:securityhub:<REGION>::standards/aws-foundational-security-best-practices/v/1.0.0" # Enables AWS FSBP
}NativeIaC
# CloudFormation: Enable Security Hub and at least one standard
Resources:
<example_resource_name>Hub:
Type: AWS::SecurityHub::Hub
# Critical: Enables Security Hub in this account/Region
<example_resource_name>Standard:
Type: AWS::SecurityHub::Standard
Properties:
StandardsArn: arn:aws:securityhub:<REGION>::standards/aws-foundational-security-best-practices/v/1.0.0 # Critical: enables a standard so the check passesOther
1Open the AWS console and go to Security Hub
2If prompted (first use): click Enable Security Hub and keep the default standards selected, then choose Enable
3If Security Hub is already enabled: go to Security standards and enable AWS Foundational Security Best Practices
4Wait for the status to show Enabled
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.securityhub.securityhub_client import (
securityhub_client,
)
class securityhub_enabled(Check):
def execute(self):
findings = []
for securityhub in securityhub_client.securityhubs:
report = Check_Report_AWS(metadata=self.metadata(), resource=securityhub)
if securityhub.status == "ACTIVE":
report.status = "PASS"
if securityhub.standards:
report.status_extended = f"Security Hub is enabled with standards: {securityhub.standards}."
elif securityhub.integrations:
report.status_extended = f"Security Hub is enabled without standards but with integrations: {securityhub.integrations}."
else:
report.status = "FAIL"
report.status_extended = "Security Hub is enabled but without any standard or integration."
else:
report.status = "FAIL"
report.status_extended = "Security Hub is not enabled."
if report.status == "FAIL" and (
securityhub_client.audit_config.get("mute_non_default_regions", False)
and not securityhub.region == securityhub_client.region
):
report.muted = True
findings.append(report)
return findings