Amazon Macie is enabled
Amazon Macie status is assessed per region with S3 presence to determine if sensitive data discovery is operational. The outcome reflects whether Macie is active or in a PAUSED/not enabled state for the account and region.
Risk
Without active Macie, sensitive data in S3 can remain unclassified and exposed. Misconfigured access and public buckets may go undetected, enabling data exfiltration and secret leakage. This degrades confidentiality and widens breach blast radius by reducing visibility into where sensitive data resides.
Run this check with Prowler
Run in Prowler Cloudprowler aws --checks macie_is_enabledRecommendation
Enable and maintain Amazon Macie in all regions hosting S3 data. Use continuous sensitive data discovery, apply custom classifications for your data types, and route findings to monitoring. Enforce least privilege for Macie access and strengthen defense in depth with restrictive bucket policies and access controls.
Remediation
CLI
aws macie2 enable-macie --region <REGION>Terraform
# Enables Amazon Macie in this region
resource "aws_macie2_account" "main" {
# Critical: Creating this resource enables Macie for the account in the region
}NativeIaC
# CloudFormation: Enable Amazon Macie in this region
Resources:
MacieSession:
Type: AWS::Macie::Session
Properties:
Status: ENABLED # Critical: Enables Macie for the account in this regionOther
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.macie.macie_client import macie_client
from prowler.providers.aws.services.s3.s3_client import s3_client
class macie_is_enabled(Check):
def execute(self):
findings = []
for session in macie_client.sessions:
report = Check_Report_AWS(metadata=self.metadata(), resource=session)
report.resource_arn = macie_client._get_session_arn_template(session.region)
report.resource_id = macie_client.audited_account
if session.status == "ENABLED":
report.status = "PASS"
report.status_extended = "Macie is enabled."
findings.append(report)
else:
if (
macie_client.provider.scan_unused_services
or session.region in s3_client.regions_with_buckets
):
if session.status == "PAUSED":
report.status = "FAIL"
report.status_extended = (
"Macie is currently in a SUSPENDED state."
)
else:
report.status = "FAIL"
report.status_extended = "Macie is not enabled."
findings.append(report)
return findings