Back to Checks
At least one IAM role has the AWSSupportAccess managed policy attached
iam_support_role_created
Service: iamSeverity: low
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:AwsIamRole
Presence of an IAM role that has the AWS managed AWSSupportAccess policy attached, designating a support role for interacting with AWS Support Center and related tooling.
Risk
Without a dedicated support role:
- Case creation and escalation can be delayed, prolonging outages (availability)
- Teams may use admin/root, increasing blast radius (confidentiality/integrity)
- Audit trails of support actions are weaker, hindering investigations
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks iam_support_role_createdRecommendation
Create a dedicated IAM role for AWS Support with AWSSupportAccess and:
- Restrict who can assume it; require MFA and time-bound access
- Enforce least privilege and separation of duties
- Monitor usage via audit logs and review assignments regularly
Remediation
CLI
aws iam attach-role-policy --role-name <example_resource_name> --policy-arn arn:aws:iam::aws:policy/AWSSupportAccessTerraform
# IAM role with AWS Support access
resource "aws_iam_role" "example_resource_name" {
name = "example_resource_name"
assume_role_policy = jsonencode({
Version = "2012-10-17",
Statement = [{
Effect = "Allow",
Principal = { AWS = "arn:aws:iam::<example_account_id>:user/<example_resource_name>" },
Action = "sts:AssumeRole"
}]
})
managed_policy_arns = [
"arn:aws:iam::aws:policy/AWSSupportAccess" # Critical: ensures this role has AWSSupportAccess (PASS)
]
}NativeIaC
# CloudFormation: create a role with AWS Support access
Resources:
ExampleRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::<example_account_id>:user/<example_resource_name>
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSSupportAccess # Critical: attaches AWS Support access so at least one role has this policy (PASS)Other
1In the AWS console, go to IAM > Roles
2Select any existing role you can use for support access
3Click Add permissions (or Attach policies)
4Search for "AWSSupportAccess" and select it
5Click Attach policies to save
6This immediately ensures at least one role has the AWSSupportAccess managed policy (PASS).
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.iam.iam_client import iam_client
class iam_support_role_created(Check):
def execute(self) -> Check_Report_AWS:
findings = []
if iam_client.entities_role_attached_to_support_policy is not None:
if iam_client.entities_role_attached_to_support_policy:
report = Check_Report_AWS(
metadata=self.metadata(),
resource=iam_client.entities_role_attached_to_support_policy[0],
)
report.region = iam_client.region
report.resource_id = iam_client.audited_account
report.resource_arn = f"arn:{iam_client.audited_partition}:iam::aws:policy/AWSSupportAccess"
report.status = "PASS"
report.status_extended = f"AWS Support Access policy attached to role {iam_client.entities_role_attached_to_support_policy[0]['RoleName']}."
else:
report = Check_Report_AWS(
metadata=self.metadata(),
resource={},
)
report.region = iam_client.region
report.resource_id = iam_client.audited_account
report.resource_arn = f"arn:{iam_client.audited_partition}:iam::aws:policy/AWSSupportAccess"
report.status = "FAIL"
report.status_extended = (
"AWS Support Access policy is not attached to any role."
)
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/awssupport/latest/user/using-service-linked-roles-sup.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/IAM/support-role.html
- https://icompaas.freshdesk.com/support/solutions/articles/62000081064-ensure-a-support-role-has-been-created-to-manage-incidents-with-aws-support
- https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSSupportAccess.html