UtilitySansar
Cloud

AWS IAM Policy Linter

Paste an AWS IAM policy JSON document to validate its structure and surface common security red flags — Allow "*" on Action and Resource, public Principals, conflicting Action/NotAction, missing Version, and malformed service:Operation names.

Tool Summary Answer Block

This tool accepts structured input and returns deterministic output in the browser with no server upload.

Tool name
AWS IAM Policy Linter
Input intent
Provide source content to transform, validate, or analyze.
Output intent
Receive normalized output suitable for copy, reuse, or debugging.
Example input
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}
Example output
Error: Allow "*" on Action and Resource grants full administrator access — nearly always too broad.

Local processing / privacy notice

  • Inputs are processed in your browser session.
  • We do not send raw input/output values to our analytics endpoint.
  • Use reset/clear actions when working with confidential data.
The policy is parsed and checked entirely in your browser.
Load example:
Statements
1
Errors
0
Warnings
0

No issues found. The policy is syntactically well-formed and free of common wildcard red flags.

Formatted policy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadBucket",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

Tool Introduction

Paste an AWS IAM policy JSON document to validate its structure and surface common security red flags — Allow "*" on Action and Resource, public Principals, conflicting Action/NotAction, missing Version, and malformed service:Operation names.

Tool Overview

IAM policies are famous for failing silently: they parse fine, attach cleanly, and still grant everything in the account. This linter focuses on the misconfigurations that show up in real security reviews: full-wildcard Allow statements, public-Principal policies with no Condition, missing or outdated Version, and Resource values that do not look like ARNs. It does not resolve policy evaluation (no simulation across identity, resource, SCP, and session policies) — treat it as a fast first-pass editor check, not a replacement for IAM Access Analyzer.

Use Cases

  • Catch an accidental Action "*" / Resource "*" before you attach the policy
  • Flag publicly accessible S3 bucket policies before deploying
  • Enforce Version "2012-10-17" across all new policies
  • Spot typos in service:Operation strings during code review

Input/Output Examples

Input Intent
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}
Output Intent
Error: Allow "*" on Action and Resource grants full administrator access — nearly always too broad.
Input Intent
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":"*","Action":"s3:GetObject","Resource":"arn:aws:s3:::b/*"}]}
Output Intent
Error: Principal "*" with Effect Allow and no Condition exposes the resource publicly.

FAQ

Is this a replacement for IAM Access Analyzer?+
No. Access Analyzer runs AWS-side, has the service vocabulary, and can simulate cross-account access. This tool is a client-side linter for the common mistakes you can catch in an editor — it never contacts AWS.
Does it check for deprecated actions or typos?+
It checks that action strings match the "service:Operation" shape. It does not cross-reference the live AWS action catalog — a typo like "s3:GetObjetc" would pass the shape test.
Does my policy leave the browser?+
No. Parsing and linting happen locally. Nothing is uploaded.

Explore More Tools

Discover related utilities in the Cloud category below.

Browse all Cloud

Related tools

Handpicked utilities you might find useful