AWS IAM provides secure, fine-grained access control for humans, AWS services, and external applications. Access is granted through IAM users, roles, and policies, with temporary credentials preferred over static keys.
AWS IAM Roles and Policies
Human Access
Method
Credentials
Best Practice
Example
IAM User
Username/Password, Access Keys
Use sparingly, rotate keys
Developer logging in via AWS CLI
Federated Role
Temporary STS Tokens
Preferred for enterprise SSO
Engineer logs in via Okta β assumes IAM role
AWS Services Accessing Other Services
Service
Mechanism
Credential Source
Notes
EC2
Instance Profile
IMDS β STS Temporary Credentials
Applications fetch credentials via metadata service
Lambda
Execution Role
AWS auto-injects credentials
Role defines what function can access
ECS
Task Role
STS Temporary Credentials
Each task can have its own role
EKS
IAM Role for Service Account (IRSA)
STS Temporary Credentials
Pods assume roles via service accounts
Other AWS Services
Service-linked Role
Managed by AWS
Auto-created for services like Auto Scaling, CloudWatch
On-Prem Applications Accessing AWS
Method
Credential Type
Best Practice
Example
IAM User Keys
Long-term Access Keys
Discouraged
Legacy Windows app with static keys
Federation + STS AssumeRole
Temporary STS Tokens
Preferred
AD-authenticated app assumes AWS role
IAM Identity Center (SSO)
Short-lived CLI/SDK credentials
Recommended
On-prem CLI session via SSO
IAM Policies
Policies are JSON documents defining permissions. They specify actions, resources, and conditions. Explicit Deny always overrides Allow.
Policy Type
Scope
Use Case
Identity-based
Users, Groups, Roles
Grant permissions to identities
Resource-based
Attached to resources
S3 bucket policy allowing cross-account access
Permission Boundaries
IAM identities
Limit maximum permissions
Service Control Policies (SCPs)
AWS Organizations
Restrict actions across accounts
Session Policies
Temporary sessions
Narrow permissions during AssumeRole
EC2 Instance Metadata Service (IMDS) Flow
Applications inside EC2 fetch temporary credentials from IMDS, which provides STS-issued keys tied to the instanceβs IAM role. IMDSv2 requires session tokens for added security.