A single statement combining "Action": "*" with "Resource": "*" under "Effect": "Allow" is the most dangerous pattern an IAM policy can contain — it grants every action on every resource, unrestricted, with no scoping at all. Overly Permissive Policy Checker paste a policy JSON document and it scans every statement for exactly this combination, listing each match by statement index, Sid, and the reason it was flagged.
The check is intentionally precise rather than broad: a statement is only flagged when it is an Allow statement, its Action (or the array it lives in) includes the literal string "*", AND its Resource includes the literal string "*" — both wildcards together. A statement with a bare "*" Action scoped to one specific bucket ARN is broad but not unrestricted, and is not flagged by this check. Likewise a statement granting "*" Resource but only a narrow, explicit list of actions is not flagged. This is a deliberate, narrow definition matching the single clearest red flag in policy review: no scoping whatsoever, on either side of the grant.
Because this check specifically looks for the bare "*" wildcard on both Action and Resource, it will not flag service-level wildcards like "s3:*" or prefix wildcards like "s3:Get*" — those are real risk patterns too, just a different, more graded category, and the separate Wildcard Usage Analyzer tool in this category covers every wildcard occurrence (Action, NotAction, Resource, NotResource) with a high/medium/low risk grading rather than this tool's single binary check. Only Allow statements are examined — a Deny statement with Action: "*", Resource: "*" is a guardrail that blocks everything, the opposite of a permissiveness problem, so it is correctly excluded.
When statements are flagged, each result shows the statement's index (its position in the Statement array), its Sid if it has one (or a clear indicator that it has none), and a plain-language reason. A summary line at the top states how many of the policy's total statements were flagged, e.g. "1 of 4 statements are overly permissive," so the scale of the issue relative to the whole document is immediately visible. If none of the statements match — which is the common, healthy case for a reasonably scoped policy — the tool shows a clear positive confirmation rather than leaving you looking at an empty table wondering whether the check actually ran.
This tool performs one specific, static check against the JSON you paste; it is not a replacement for AWS IAM Access Analyzer or Access Advisor, which examine real usage history and cross-account exposure using live account data that a local tool cannot see. It does not call any AWS API, does not evaluate the actual blast radius of a flagged statement in your account, and does not rewrite or scope down the policy for you — it points at exactly the statement that needs manual review, by index and reason, so you can decide how to narrow it. Everything runs locally in your browser; nothing you paste is uploaded.