Certablo
← Knowledge Base

AWS IAM Authorization & Least Privilege

How AWS decides whether a request is allowed: principals, identity and resource policies, explicit deny, permissions boundaries, organization guardrails, conditions and a practical route toward least privilege.

CLF-C02AIF-C01SAA-C03

Visual overview

DEFENSE IN DEPTHIdentity, data, network, detection, and audit controls protect different boundaries
IDENTITYAuthenticate + authorizePrincipals · policies · temporary credentials
DATAEncrypt + protect secretsKeys · certificates · application secrets
DETECT & AUDITFind threats + retain evidenceFindings · API history · configuration state
No single security service replaces the others. Strong AWS security combines preventive, detective, and evidence-producing controls around the workload.
AWS SERVICE MAPAuthorization control layers

IAM grants permissions, Organizations can constrain the maximum, and CloudTrail provides evidence about the API calls that actually occurred.

IAMIdentities, policies and request authorization
OrganizationsCross-account permission guardrails
CloudTrailAPI activity evidence for audit and refinement
EXAM-RELEVANT MECHANICS

Technical reference

Authorization questions become predictable when each policy type is treated as a separate input to the same request decision.

Default decisionImplicit Deny

A request without a sufficient applicable Allow remains denied.

Deny precedenceExplicit Deny > Allow

An applicable Deny in a policy evaluated for the request overrides an Allow.

Boundary logicIdentity permissions ∩ boundary

For a bounded IAM identity, the boundary is a maximum-permissions filter rather than an additional grant.

Organization guardrailIAM permissions ∩ SCP/RCP constraints

Where Organizations policy types apply, the request must also survive those maximum-permissions layers.

Statement filtersAction + Resource + Condition

Authorization depends on whether the requested action and resource match and whether all required condition operators evaluate as intended.

Policy analysisAccess Analyzer

Policy validation checks grammar and security findings; access analysis and CloudTrail-based generation can support least-privilege refinement.

Identity answers who; authorization answers what

AWS Identity and Access Management (IAM) is the control plane for deciding which authenticated principals may perform which AWS API actions on which resources and under which conditions. A principal can be a user, a role session, an AWS service principal, or another supported identity. Authentication establishes the identity behind a request; authorization evaluates the policies and guardrails that apply to that request. Keeping those two questions separate makes access troubleshooting much easier.

IAM policies are JSON documents built from statements. A statement expresses an Effect such as Allow or Deny, one or more Actions, applicable Resources, and optionally Conditions that narrow when the statement applies. Identity-based policies attach permissions to IAM identities. Resource-based policies attach to supported resources and describe which principals may access that resource. The exact combination that applies depends on the request context, which is why simply finding one Allow statement is not always enough to prove access.

Policy evaluation is a set-intersection problem with a hard deny

AWS starts from an implicit deny. When relevant permissions policies provide an applicable Allow, the request can move toward authorization, but an applicable explicit Deny overrides an Allow. Other policy types can constrain the result. For example, an IAM permissions boundary defines the maximum permissions that an identity-based policy can grant to an IAM user or role, while AWS Organizations service control policies define a maximum-permissions guardrail for principals in affected member accounts. Session policies can further narrow a temporary role session.

The word maximum is critical. A permissions boundary or an SCP does not normally hand a principal new permissions merely because an action appears in an Allow statement. The principal still needs permissions from the appropriate identity- or resource-based authorization path. Effective permissions therefore emerge from the intersection of the applicable layers, subject to AWS's documented exceptions for particular resource-policy and principal scenarios. For exam questions, an explicit Deny is the strongest general signal: adding another Allow does not cancel it.

  • Implicit deny is the starting position when no applicable Allow authorizes a request.
  • An applicable explicit Deny overrides an applicable Allow.
  • Permissions boundaries restrict what identity-based policies can grant to the bounded user or role.
  • SCPs constrain maximum permissions in organization member accounts; they are not a replacement for IAM permission grants.
  • Conditions can make a statement depend on request context such as principal attributes, resource tags, source networks, MFA context, or service-specific keys.

Least privilege is a lifecycle, not a one-time policy template

Least privilege means granting only the permissions required to perform a task. In a new workload, teams often begin with broader access because the final API call set is not yet known. AWS recommends refining permissions as actual usage becomes visible. IAM Access Analyzer can validate policy syntax and flag security concerns, analyze certain external, internal, and unused access paths, and generate policy templates from access activity recorded by AWS CloudTrail for supported scenarios.

A useful operating loop is to grant a controlled starting policy, observe what the workload really calls, remove unused permissions, constrain Resources and Conditions where the services support them, and validate again after application changes. AWS managed policies are convenient starting points but are designed for broad reuse across customers and therefore should not automatically be treated as least-privilege policies for a particular workload.

Key takeaways

  1. 01

    IAM authorization evaluates the request context together with every applicable policy type.

  2. 02

    An explicit Deny overrides an Allow; an absent Allow normally leaves the request implicitly denied.

  3. 03

    Permissions boundaries, session policies, and Organizations policies can reduce effective permissions without granting access by themselves.

  4. 04

    Least privilege should be refined from observed access and validated continuously rather than assumed from a generic managed policy.

  5. 05

    IAM Access Analyzer helps validate policies and identify access that deserves review.

Official AWS sources

Use these primary AWS resources for the source material behind this article and for deeper reference.