Check ID:
Provider: AWS
Service:
Severity: HIGH
Categories:
Resource type:
iam_role_cross_account_readonlyaccess_policyProvider: AWS
Service:
iamSeverity: HIGH
Categories:
trust-boundaries, identity-accessResource type:
AwsIamRoleWhat this check verifies
IAM roles are assessed for the AWS-managed ReadOnlyAccess policy combined with a trust policy that allows external AWS principals or*. This identifies roles that expose broad read permissions to other accounts.
Risk
Granting cross-account read access can expose sensitive data and metadata, impacting confidentiality. External principals can read S3/DynamoDB contents and enumerate resources, policies, and logs, enabling targeted recon and easier privilege escalation paths.Recommendation
Avoid attachingReadOnlyAccess to roles trusted by other accounts. Apply least privilege with custom, tightly scoped policies. Restrict trust to explicit principals, avoid *, and use conditions like aws:PrincipalOrgID and sts:ExternalId for defense in depth.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#awsmp_readonlyaccess
- https://support.icompaas.com/support/solutions/articles/62000233802-ensure-iam-roles-do-not-have-readonlyaccess-access-for-external-aws-accounts
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = iam_role_cross_account_readonlyaccess_policy. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks