TL;DR: AWS IAM Policy Simulator helps teams test allow and deny logic before deployment, but it only validates static policy behavior, limited resource-based policy cases, and some context keys, according to Apono. The deeper problem is that simulation can confirm policy intent while leaving standing access, runtime revocation, and cross-account behavior unresolved.
NHIMG editorial — based on content published by Apono: How to Run an IAM Policy Simulator: Step-by-Step Guide
By the numbers:
- A Cloud Security Alliance report found that implementing least privilege for identities was the top cloud security priority for 44% of organizations.
- Only 20% have formal processes for offboarding and revoking API keys, and even fewer have procedures for rotating them.
- 97% of NHIs carry excessive privileges, increasing unauthorised access and broadening the attack surface.
Questions worth separating out
Q: How should security teams use IAM Policy Simulator without overtrusting it?
A: Use the simulator to validate policy logic before deployment, then enforce runtime controls separately.
Q: Why do policy tests still leave over-permissioning risk in place?
A: Because a successful test only proves the policy behaves as written at that moment.
Q: What do teams get wrong about least privilege in AWS policies?
A: They often assume a clean simulator result means the access model is safe.
Practitioner guidance
- Validate exact ARNs before policy rollout Test IAM policies against the real S3 object, DynamoDB table, or role ARN that production will use.
- Test condition keys with live request context Populate aws:PrincipalTag, aws:SourceIp, aws:CurrentTime, and similar keys with realistic values so the simulator evaluates the same logic production will use.
- Separate policy testing from entitlement governance Use the simulator to confirm allow and deny logic, then enforce JIT access, expiration, and revocation in a separate runtime control so standing privilege does not persist after the task.
What's in the full article
Apono's full article covers the operational detail this post intentionally leaves for the source:
- Step-by-step AWS console workflow for simulating users, groups, roles, and unattached policies.
- Exact simulator permission requirements for console, CLI, and API use.
- Result interpretation guidance for allowed, explicit deny, implicit deny, and missing context values.
- Example workflow for validating a production S3 access request before attaching the policy.
👉 Read Apono's guide to running an IAM Policy Simulator step by step →
IAM policy simulator limits: what teams miss beyond policy testing?
Explore further
IAM policy simulation is a logic-checking tool, not an access governance control. It can tell teams whether a policy statement matches a principal, action, and resource, but it cannot enforce task-based access or remove privileges after the test passes. That means simulation reduces policy error, not entitlement risk. Practitioners should treat it as one checkpoint inside a wider IAM and PAM workflow.
A few things that frame the scale:
- Only 20% have formal processes for offboarding and revoking API keys, and even fewer have procedures for rotating them, according to Ultimate Guide to NHIs , Lifecycle Processes for Managing NHIs.
- A separate finding shows that 97% of NHIs carry excessive privileges, which is why policy validation must be paired with entitlement governance.
A question worth separating out:
Q: When should organisations pair policy simulation with JIT access controls?
A: They should do it whenever the access is high risk, time bound, or likely to be reused across workflows. Simulation confirms the policy logic, while JIT access limits how long the entitlement exists. That combination is especially important for privileged roles, service accounts, and AI-agent-facing identities.
👉 Read our full editorial: IAM policy simulation exposes the limits of static least privilege