Back to Checks
aws

Trusted Advisor check has no errors or warnings

trustedadvisor_errors_and_warnings
Service: trustedadvisorSeverity: medium
OfficialBuilt-inVerified
Resource Type:Other

AWS Trusted Advisor check statuses are assessed to identify items in warning or error. The finding reflects the state reported by Trusted Advisor across categories such as Security, Fault Tolerance, Service Limits, and Cost, indicating where configurations or quotas require attention.

Risk

Unaddressed warnings/errors can leave misconfigurations that impact CIA:

  • Confidentiality: public access or weak auth exposes data
  • Integrity: overly permissive settings allow unwanted changes
  • Availability: limit exhaustion or poor resilience triggers outages They can also increase unnecessary cost.

Run this check with Prowler

Run in Prowler Cloud
Run
prowler aws --checks trustedadvisor_errors_and_warnings

Recommendation

Adopt a continuous process to remediate Trusted Advisor findings:

  • Prioritize error then warning
  • Assign ownership and SLAs
  • Integrate alerts with workflows
  • Enforce least privilege, segmentation, encryption, MFA, and tested backups
  • Reassess regularly to confirm fixes and prevent regression

Remediation

Other

1Sign in to the AWS Console and open Trusted Advisor
2Go to Checks and filter Status to Warning and Error
3Open each failing check and click View details/Recommended actions
4Apply the listed fix to the affected resources
5Click Refresh on the check and repeat until all checks show OK

Check Code

from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.trustedadvisor.trustedadvisor_client import (
    trustedadvisor_client,
)


class trustedadvisor_errors_and_warnings(Check):
    def execute(self):
        findings = []
        if trustedadvisor_client.premium_support:
            if trustedadvisor_client.premium_support.enabled:
                if trustedadvisor_client.checks:
                    for check in trustedadvisor_client.checks:
                        if (
                            check.status != "not_available"
                        ):  # avoid not_available checks since there are no resources that apply
                            report = Check_Report_AWS(
                                metadata=self.metadata(), resource=check
                            )
                            report.status = "FAIL"
                            report.status_extended = f"Trusted Advisor check {check.name} is in state {check.status}."
                            if check.status == "ok":
                                report.status = "PASS"
                            findings.append(report)
            else:
                report = Check_Report_AWS(
                    metadata=self.metadata(),
                    resource={},
                )
                report.status = "MANUAL"
                report.status_extended = "Amazon Web Services Premium Support Subscription is required to use this service."
                report.resource_id = trustedadvisor_client.audited_account
                report.resource_arn = trustedadvisor_client.account_arn_template
                report.region = trustedadvisor_client.region
                findings.append(report)

        return findings